source: XIOS/trunk/src/node/context.hpp @ 344

Last change on this file since 344 was 344, checked in by ymipsl, 11 years ago

remove obsolete method and member in context class

YM

File size: 4.7 KB
Line 
1#ifndef __XMLIO_CContext__
2#define __XMLIO_CContext__
3
4/// xios headers ///
5#include "xmlioserver_spl.hpp"
6#include "node_type.hpp"
7#include "calendar.hpp"
8
9#include "declare_group.hpp"
10//#include "context_client.hpp"
11//#include "context_server.hpp"
12#include "data_output.hpp"
13
14#include <mpi.h>
15
16
17namespace xios {
18   class CContextClient ;
19   class CContextServer ;
20   
21namespace tree {
22   
23   /// ////////////////////// Déclarations ////////////////////// ///
24   class CContextGroup;
25   class CContextAttributes;
26   class CContext;
27 
28   ///--------------------------------------------------------------
29
30   // Declare/Define CFileAttribute
31   BEGIN_DECLARE_ATTRIBUTE_MAP(CContext)
32#  include "context_attribute.conf"
33   END_DECLARE_ATTRIBUTE_MAP(CContext)
34
35   ///--------------------------------------------------------------
36
37   class CContext
38      : public CObjectTemplate<CContext>
39      , public CContextAttributes
40   {
41         public :
42         enum EEventId
43         {
44           EVENT_ID_CLOSE_DEFINITION,EVENT_ID_UPDATE_CALENDAR,
45           EVENT_ID_CREATE_FILE_HEADER,EVENT_ID_CONTEXT_FINALIZE
46         } ;
47         
48         /// typedef ///
49         typedef CObjectTemplate<CContext>   SuperClass;
50         typedef CContextAttributes SuperClassAttribute;
51
52      public :
53
54         typedef CContextAttributes RelAttributes;
55         typedef CContext           RelGroup;
56
57         //---------------------------------------------------------
58
59      public :
60
61         /// Constructeurs ///
62         CContext(void);
63         explicit CContext(const StdString & id);
64         CContext(const CContext & context);       // Not implemented yet.
65         CContext(const CContext * const context); // Not implemented yet.
66
67         /// Destructeur ///
68         virtual ~CContext(void);
69
70         //---------------------------------------------------------
71
72      public :
73     
74         /// Mutateurs ///
75         void setCalendar(boost::shared_ptr<CCalendar> newCalendar);
76     
77         /// Accesseurs ///
78         boost::shared_ptr<CCalendar>      getCalendar(void) const;
79
80         /// Accesseurs statiques ///
81         static StdString GetName(void);
82         static StdString GetDefName(void);         
83         static ENodeType GetType(void);         
84
85         static boost::shared_ptr<CContextGroup> GetContextGroup(void);
86
87      public :
88
89         /// Traitements ///
90         virtual void solveDescInheritance(const CAttributeMap * const parent = 0);
91         void solveFieldRefInheritance(void);
92         void solveCalendar(void);
93
94         /// Autres méthodes statiques ///
95         static void ShowTree(StdOStream & out = std::clog);
96         static void CleanTree(void);
97
98         /// Test ///
99         virtual bool hasChild(void) const;
100
101         bool eventLoop(void) ;
102         bool serverLoop(void) ;
103         void clientLoop(void) ;
104         void initServer(MPI_Comm intraComm, MPI_Comm interComm) ;
105         void initClient(MPI_Comm intraComm, MPI_Comm interComm) ;
106         CContextServer* server ;
107         CContextClient* client ;
108         bool hasClient ;
109         bool hasServer ;
110         void finalize(void) ;
111         void closeDefinition(void) ;
112         void findAllEnabledFields(void);
113         void solveAllGridRef(void);
114         void solveAllOperation(void);
115         void solveAllInheritance(void) ;
116         void findEnabledFiles(void);
117         void closeAllFile(void) ;
118         void updateCalendar(int step) ;
119         void createFileHeader(void ) ;
120      // dispatch event
121         static bool dispatchEvent(CEventServer& event) ;
122         void sendCloseDefinition(void) ;
123         void sendUpdateCalendar(int step) ;
124         void sendCreateFileHeader(void) ;
125         static void recvUpdateCalendar(CEventServer& event) ;
126         void recvUpdateCalendar(CBufferIn& buffer) ;
127         static void recvCloseDefinition(CEventServer& event) ;
128         static void recvCreateFileHeader(CEventServer& event) ;
129         void recvCreateFileHeader(CBufferIn& buffer) ;
130         static shared_ptr<CContext> current(void) ;
131         
132      public :
133     
134         /// Autres ///
135         virtual void parse(xml::CXMLNode & node);
136
137         virtual StdString toString(void) const;
138         virtual void toBinary  (StdOStream & os) const;
139         virtual void fromBinary(StdIStream & is);
140         
141      public :
142     
143         boost::shared_ptr<CCalendar>      calendar;
144 
145         std::vector<boost::shared_ptr<CFile> > enabledFiles;
146
147
148   }; // class CContext
149
150   ///--------------------------------------------------------------
151
152   // Declare/Define CContextGroup and CContextDefinition
153   DECLARE_GROUP(CContext);
154
155   ///--------------------------------------------------------------
156
157} // namespace tree
158} // namespace xios
159
160#endif // __XMLIO_CContext__
Note: See TracBrowser for help on using the repository browser.