source: XIOS/trunk/src/node/axis.hpp @ 595

Last change on this file since 595 was 595, checked in by rlacroix, 9 years ago

Allow using more servers than clients.

This will be useful later when implementing server to client communications.

  • Property copyright set to
    Software name : XIOS (Xml I/O Server)
    http://forge.ipsl.jussieu.fr/ioserver
    Creation date : January 2009
    Licence : CeCCIL version2
    see license file in root directory : Licence_CeCILL_V2-en.txt
    or http://www.cecill.info/licences/Licence_CeCILL_V2-en.html
    Holder : CEA/LSCE (Laboratoire des Sciences du CLimat et de l'Environnement)
    CNRS/IPSL (Institut Pierre Simon Laplace)
    Project Manager : Yann Meurdesoif
    yann.meurdesoif@cea.fr
File size: 3.4 KB
Line 
1#ifndef __XIOS_CAxis__
2#define __XIOS_CAxis__
3
4/// XIOS headers ///
5#include "xios_spl.hpp"
6#include "group_factory.hpp"
7
8#include "declare_group.hpp"
9#include "declare_ref_func.hpp"
10#include "attribute_array.hpp"
11#include "attribute_enum.hpp"
12#include "attribute_enum_impl.hpp"
13#include "server_distribution_description.hpp"
14
15namespace xios {
16   /// ////////////////////// Déclarations ////////////////////// ///
17
18   class CAxisGroup;
19   class CAxisAttributes;
20   class CAxis;
21
22   ///--------------------------------------------------------------
23
24   // Declare/Define CAxisAttribute
25   BEGIN_DECLARE_ATTRIBUTE_MAP(CAxis)
26#  include "axis_attribute.conf"
27   END_DECLARE_ATTRIBUTE_MAP(CAxis)
28
29   ///--------------------------------------------------------------
30
31   class CAxis
32      : public CObjectTemplate<CAxis>
33      , public CAxisAttributes
34   {
35         enum EEventId
36         {
37           EVENT_ID_SERVER_ATTRIBUT
38         } ;
39
40         /// typedef ///
41         typedef CObjectTemplate<CAxis>   SuperClass;
42         typedef CAxisAttributes SuperClassAttribute;
43
44      public :
45
46         typedef CAxisAttributes RelAttributes;
47         typedef CAxisGroup      RelGroup;
48
49         /// Constructeurs ///
50         CAxis(void);
51         explicit CAxis(const StdString & id);
52         CAxis(const CAxis & axis);       // Not implemented yet.
53         CAxis(const CAxis * const axis); // Not implemented yet.
54
55         /// Accesseurs ///
56         const std::set<StdString> & getRelFiles(void) const;
57
58         /// Test ///
59         bool IsWritten(const StdString & filename) const;
60         bool isDistributed(void) const;
61
62         /// Mutateur ///
63         void addRelFile(const StdString & filename);
64
65         /// Vérifications ///
66         void checkAttributes(void);
67
68         /// Destructeur ///
69         virtual ~CAxis(void);
70
71         /// Accesseurs statiques ///
72         static StdString GetName(void);
73         static StdString GetDefName(void);
74         static ENodeType GetType(void);
75
76         void sendServerAttribut(const std::vector<int>& globalDim, int orderPositionInGrid,
77                                 CServerDistributionDescription::ServerDistributionType distType);
78         static bool dispatchEvent(CEventServer& event);
79         static void recvServerAttribut(CEventServer& event);
80         void recvServerAttribut(CBufferIn& buffer) ;
81         void checkAttributesOnClient(const std::vector<int>& globalDim, int orderPositionInGrid,
82                                      CServerDistributionDescription::ServerDistributionType disType = CServerDistributionDescription::BAND_DISTRIBUTION);
83         void sendCheckedAttributes(const std::vector<int>& globalDim, int orderPositionInGrid,
84                                    CServerDistributionDescription::ServerDistributionType disType = CServerDistributionDescription::BAND_DISTRIBUTION);
85      public:
86        int zoom_begin_srv, zoom_end_srv, zoom_size_srv;
87        int ni_srv, begin_srv, end_srv;
88
89      private :
90         void checkData();
91         void checkMask();
92         void checkZoom();
93
94      private:
95
96         bool isChecked;
97         bool areClientAttributesChecked_;
98         std::set<StdString> relFiles;
99         bool isDistributed_;
100
101         DECLARE_REF_FUNC(Axis,axis)
102   }; // class CAxis
103
104   ///--------------------------------------------------------------
105
106   // Declare/Define CAxisGroup and CAxisDefinition
107   DECLARE_GROUP(CAxis);
108} // namespace xios
109
110#endif // __XIOS_CAxis__
Note: See TracBrowser for help on using the repository browser.