source: XIOS3/trunk/src/cxios.hpp @ 2407

Last change on this file since 2407 was 2407, checked in by ymipsl, 21 months ago

Implement separate "reader" and "writer" service. Default reader live on same ressources that "writer" or "gatherer" services.

YM

  • 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: 5.8 KB
Line 
1#ifndef __XIOS_HPP__
2#define __XIOS_HPP__
3
4#include "xios_spl.hpp"
5#include "mpi.hpp"
6#include "registry.hpp"
7#include "ressources_manager.hpp"
8#include "services_manager.hpp"
9#include "contexts_manager.hpp"
10#include "daemons_manager.hpp"
11#include "coupler_manager.hpp"
12#include "registry_manager.hpp"
13#include "mpi_garbage_collector.hpp"
14
15namespace xios
16{
17  /*!
18  \class CXios
19  */
20  class CXios
21  {
22    public:
23     static void initialize(void) ;
24     static void initClientSide(const string & codeId, MPI_Comm& localComm, MPI_Comm& returnComm) ;
25     static void initServerSide(void) ;
26     static void clientFinalize(void) ;
27     static void parseFile(const string& filename) ;
28
29     template <typename T>
30     static T getin(const string& id,const T& defaultValue) ;
31
32     template <typename T>
33     static T getin(const string& id) ;
34
35    public:
36     static string rootFile ; //!< Configuration filename
37     static string xiosCodeId ; //!< Identity for XIOS
38     static string clientFile;        //!< Filename template for client
39     static string serverFile;        //!< Filename template for server
40     static string serverPrmFile;  //!< Filename template for primary server in case of two server levels
41     static string serverSndFile;  //!< Filename template for secondary server in case of two server levels
42
43     static bool xiosStack;    //!< Exception handling
44     static bool systemStack;  //!< Exception handling
45
46     static bool isClient ; //!< Check if xios is client
47     static bool isServer ; //!< Check if xios is server
48
49     static MPI_Comm globalComm ; //!< Global communicator
50     static MPI_Comm xiosComm ; //!< Global communicator
51
52     static bool printLogs2Files; //!< Printing out logs into files
53     static bool usingOasis ;     //!< Using Oasis
54     static bool usingServer ;    //!< Using server (server mode)
55     static bool usingServer2 ;   //!< Using secondary server (server mode). IMPORTANT: Use this variable ONLY in CServer::initialize().
56     static int ratioServer2 ;    //!< Percentage of server processors dedicated to secondary server
57     static int nbPoolsServer2 ;  //!< Number of pools created on the secondary server
58     static double bufferSizeFactor; //!< Factor used to tune the buffer size
59     static const double defaultBufferSizeFactor; //!< Default factor value
60     static StdSize minBufferSize; //!< Minimum buffer size
61     static StdSize maxBufferSize; //!< Maximum buffer size
62     static bool isOptPerformance; //!< Check if buffer size is for performance (as large as possible)
63     static CRegistry* globalRegistry ; //!< global registry which is wrote by the root process of the servers
64     static double recvFieldTimeout; //!< Time to wait for data before issuing an error when receiving a field
65     static bool checkEventSync; //!< For debuuging, check if event are coherent and synchrone on client side
66
67     static bool checkSumSend; //!< For debugging, compute a checksum of fields sent by the model to the XIOS client (very expensive !)
68     static bool checkSumRecv; //!< For debugging, compute a checksum of fields received by the model through the XIOS client
69
70     static const string defaultPoolId ;
71     static const string defaultServerId ;
72     static const string defaultGathererId ;
73     static const string defaultWriterId ;
74     static const string defaultReaderId ;
75     static const string defaultServicesId ;
76
77     static CRegistryManager* registryManager_ ;
78     static CRessourcesManager* ressourcesManager_ ;
79     static CCouplerManager* couplerManager_ ;
80     static CServicesManager* servicesManager_ ;
81     static CContextsManager* contextsManager_ ;
82     static CDaemonsManager* daemonsManager_ ;
83     static CMpiGarbageCollector MpiGarbageCollector_  ;
84    public:
85     static CMpiGarbageCollector& getMpiGarbageCollector(void) { return MpiGarbageCollector_ ; }
86    public:
87     //! Setting xios to use server mode
88     static void setUsingServer();
89
90     //! Setting xios NOT to use server mode
91     static void setNotUsingServer();
92     
93     //! is using server mode
94     static bool isUsingServer() {return usingServer;}
95
96     //! Initialize server (if any)
97     static  void initServer();
98
99     static void launchServicesManager( bool isXiosServer) ;
100     static void launchContextsManager(bool isXiosServer) ;
101     static void launchDaemonsManager(bool isXiosServer) ;
102     static void launchRessourcesManager(bool isXiosServer) ;
103     static void launchCouplerManager(bool isXiosServer) ;
104     static void launchRegistryManager(bool isXiosServer) ;
105   
106     static void finalizeServicesManager() ;
107     static void finalizeContextsManager() ;
108     static void finalizeDaemonsManager() ;
109     static void finalizeRessourcesManager() ;
110     static void finalizeCouplerManager() ;
111     static void finalizeRegistryManager() ;
112
113     static CRegistryManager*   getRegistryManager(void) { return registryManager_ ;}
114     static CRessourcesManager* getRessourcesManager(void) { return ressourcesManager_ ;}
115     static CCouplerManager*    getCouplerManager(void) { return couplerManager_ ;}
116     static CServicesManager*   getServicesManager(void) { return servicesManager_ ;}
117     static CContextsManager*   getContextsManager(void) { return contextsManager_ ;}
118     static CDaemonsManager*    getDaemonsManager(void) { return daemonsManager_ ;}
119     static CPoolRessource*     getPoolRessource(void) ;
120     
121     static MPI_Comm getGlobalComm(void) { return globalComm ;}
122     static MPI_Comm getXiosComm(void) { return xiosComm ;}
123     static void setXiosComm(MPI_Comm comm) { xiosComm=comm ;}
124     static CRegistry* getGlobalRegistry(void) { return globalRegistry ;}
125     static void setGlobalRegistry(CRegistry* registry) { globalRegistry=registry ;}
126
127    private:
128      //! Parse only Xios part of configuration file
129      static void parseXiosConfig();
130  } ;
131}
132
133//#include "cxios_impl.hpp"
134#endif // __XIOS_HPP__
Note: See TracBrowser for help on using the repository browser.