source: XMLIO_V2/dev/common/src/node/domain.hpp @ 300

Last change on this file since 300 was 300, checked in by ymipsl, 12 years ago

nouvelle version de developpement de xios

  • nouvelle interface fortran
  • recodage complet de la couche de communication
  • et bien d'autres choses...

YM

File size: 5.0 KB
Line 
1#ifndef __XMLIO_CDomain__
2#define __XMLIO_CDomain__
3
4/// xmlioserver headers ///
5#include "xmlioserver_spl.hpp"
6#include "group_factory.hpp"
7
8#include "declare_group.hpp"
9#include "event_client.hpp"
10#include "event_server.hpp"
11#include "buffer_in.hpp"
12
13namespace xmlioserver {
14namespace tree {
15   
16   /// ////////////////////// Déclarations ////////////////////// ///
17
18   class CDomainGroup;
19   class CDomainAttributes;
20   class CDomain;
21
22   ///--------------------------------------------------------------
23
24   // Declare/Define CDomainAttribute
25   BEGIN_DECLARE_ATTRIBUTE_MAP(CDomain)
26#  include "domain_attribute.conf"
27   END_DECLARE_ATTRIBUTE_MAP(CDomain)
28
29   ///--------------------------------------------------------------
30
31   class CDomain
32      : public CObjectTemplate<CDomain>
33      , public CDomainAttributes
34   {
35         enum EEventId
36         {
37           EVENT_ID_SERVER_ATTRIBUT, EVENT_ID_LON_LAT
38         } ;
39         
40         /// typedef ///
41         typedef CObjectTemplate<CDomain>   SuperClass;
42         typedef CDomainAttributes SuperClassAttribute;
43
44      public :
45
46         typedef CDomainAttributes RelAttributes;
47         typedef CDomainGroup      RelGroup;
48
49         /// Constructeurs ///
50         CDomain(void);
51         explicit CDomain(const StdString & id);
52         CDomain(const CDomain & domain);       // Not implemented yet.
53         CDomain(const CDomain * const domain); // Not implemented yet.
54
55         /// Vérifications ///
56         void checkAttributes(void);
57
58      private :
59
60         void checkGlobalDomain(void);
61
62         void checkLocalIDomain(void);
63         void checkLocalJDomain(void);
64
65         void checkMask(void);
66         void checkDomainData(void);
67         void checkCompression(void);
68         
69         void checkZoom(void);
70
71         void completeMask(void);
72
73      public :
74     
75         /// Autres ///
76         virtual void fromBinary(StdIStream & is);
77
78         /// Accesseurs ///
79         ARRAY(int, 2) getLocalMask(void) const;
80         
81         const std::set<StdString> & getRelFiles(void) const;
82
83         const std::vector<int> & getIBeginSub(void) const;
84         const std::vector<int> & getIEndSub(void) const;
85         const std::vector<int> & getJBeginSub(void) const;
86         const std::vector<int> & getJEndSub(void) const;
87
88         const std::vector<int> & getIBeginZoomSub(void) const;
89         const std::vector<int> & getJBeginZoomSub(void) const;
90         const std::vector<int> & getNiZoomSub(void) const;
91         const std::vector<int> & getNjZoomSub(void) const;
92         
93         const std::vector<ARRAY(double, 1)> & getLonValueSub(void) const;
94         const std::vector<ARRAY(double, 1)> & getLatValueSub(void) const;
95
96         /// Test ///
97         bool IsWritten(const StdString & filename) const;
98         bool hasZoom(void) const;
99         bool isEmpty(void) const;
100         
101         
102         int ni_client,ibegin_client,iend_client ;
103         int zoom_ni_client,zoom_ibegin_client,zoom_iend_client ;
104
105         int nj_client,jbegin_client,jend_client ;
106         int zoom_nj_client,zoom_jbegin_client,zoom_jend_client ;
107
108         int ni_srv,ibegin_srv,iend_srv ;
109         int zoom_ni_srv,zoom_ibegin_srv,zoom_iend_srv ;
110
111         int nj_srv,jbegin_srv,jend_srv ;
112         int zoom_nj_srv,zoom_jbegin_srv,zoom_jend_srv ;
113
114         ARRAY(double, 1) lonvalue_srv, latvalue_srv ;
115         
116         
117        vector<int> connectedServer,nbSenders ;
118        vector<int> ib_srv, ie_srv, in_srv ;
119        vector<int> jb_srv, je_srv, jn_srv ;
120         
121      public :
122     
123         /// Mutateur ///
124         void addRelFile(const StdString & filename);
125         void completeLonLatServer(void);
126         void completeLonLatClient(void);
127         void sendServerAttribut(void) ;
128         void sendLonLat(void) ;
129         void computeConnectedServer(void) ;
130         static bool dispatchEvent(CEventServer& event) ;
131         static void recvLonLat(CEventServer& event) ;
132         static void recvServerAttribut(CEventServer& event) ;
133         void recvLonLat(CBufferIn& buffer) ;
134         void recvServerAttribut(CBufferIn& buffer) ;
135         
136         /// Destructeur ///
137         virtual ~CDomain(void);
138
139         /// Accesseurs statiques ///
140         static StdString GetName(void);
141         static StdString GetDefName(void);
142         
143         static ENodeType GetType(void);
144
145       private :
146
147         /// Proriétés protégées ///
148         bool isChecked;
149         ARRAY(int, 2) local_mask;
150         std::set<StdString> relFiles;
151
152         std::vector<int> ibegin_sub, iend_sub, jbegin_sub, jend_sub;
153         std::vector<int> ibegin_zoom_sub, jbegin_zoom_sub, ni_zoom_sub, nj_zoom_sub;
154         std::vector<ARRAY(double, 1)> lonvalue_sub, latvalue_sub;
155         
156
157   }; // class CDomain
158
159   ///--------------------------------------------------------------
160
161   // Declare/Define CDomainGroup and CDomainDefinition
162   DECLARE_GROUP(CDomain);
163
164   ///--------------------------------------------------------------
165
166} // namespace tree
167} // namespace xmlioserver
168
169#endif // __XMLIO_CDomain__
Note: See TracBrowser for help on using the repository browser.