XIOS  1.0
Xml I/O Server
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Amis Macros
server.hpp
Aller à la documentation de ce fichier.
1 #ifndef __SERVER_HPP__
2 #define __SERVER_HPP__
3 
4 #include "xios_spl.hpp"
5 #include "context.hpp"
6 #include "context_client.hpp"
7 #include "mpi.hpp"
8 #include "event_scheduler.hpp"
9 
10 namespace xios
11 {
12  class CServer
13  {
14  public:
15  static void initialize(void);
16  static void finalize(void);
17  static void eventLoop(void);
18  static void contextEventLoop(bool enableEventsProcessing=true);
19  static void listenContext(void);
20  static void listenFinalize(void);
21  static void recvContextMessage(void* buff,int count);
22  static void listenRootContext(void);
23  static void listenRootFinalize(void);
24  static void listenRootOasisEnddef(void);
25  static void listenOasisEnddef(void);
26  static void registerContext(void* buff,int count, int leaderRank=0);
27 
28  static MPI_Comm intraComm;
29  static std::list<MPI_Comm> interCommLeft; // interComm between server (primary, classical or secondary) and its client (client or primary server)
30  static std::list<MPI_Comm> interCommRight; // interComm between primary server and secondary server (non-empty only for primary server pool)
31  static std::list<MPI_Comm> contextInterComms; // list of context intercomms
32  static std::list<MPI_Comm> contextIntraComms; // list of context intercomms (needed only in case of secondary servers)
34 
35  static int serverLevel ;
36 
38  {
39  int nbRecv;
41  };
42 
43  static bool isRoot;
44 
45  static map<string,CContext*> contextList;
46  static bool finished;
47  static bool is_MPI_Initialized;
48 
49  public:
51  static int getRank();
52 
54  static vector<int>& getSecondaryServerGlobalRanks();
55 
57  static void openInfoStream(const StdString& fileName);
59  static void openInfoStream();
61  static void closeInfoStream();
62 
64  static void openErrorStream(const StdString& fileName);
66  static void openErrorStream();
68  static void closeErrorStream();
69 
70  private:
71  static vector<int> sndServerGlobalRanks;
72  static int rank_;
73  static int nbContexts;
76  static void openStream(const StdString& fileName, const StdString& ext, std::filebuf* fb);
77  };
78 }
79 
80 #endif
static std::list< MPI_Comm > contextIntraComms
Definition: server.hpp:32
static bool is_MPI_Initialized
Definition: server.hpp:47
static CEventScheduler * eventScheduler
Definition: server.hpp:33
static std::list< MPI_Comm > contextInterComms
Definition: server.hpp:31
std::ofstream StdOFStream
Definition: xios_spl.hpp:44
static void registerContext(void *buff, int count, int leaderRank=0)
Definition: server.cpp:769
static int rank_
If (!oasis) global rank, else rank in the intraComm returned by oasis.
Definition: server.hpp:72
int count
Definition: tracer.cpp:26
static StdOFStream m_errorStream
Definition: server.hpp:75
static StdOFStream m_infoStream
Definition: server.hpp:74
static std::list< MPI_Comm > interCommLeft
Definition: server.hpp:29
static int serverLevel
Definition: server.hpp:35
std::string StdString
Definition: xios_spl.hpp:48
#define xios(arg)
static void listenRootOasisEnddef(void)
Processes probes message from root process if oasis_enddef call must be done.
Definition: server.cpp:589
static int nbContexts
Number of contexts registered by server.
Definition: server.hpp:73
static map< string, CContext * > contextList
Definition: server.hpp:45
static void initialize(void)
Creates intraComm for each possible type of servers (classical, primary or secondary).
Definition: server.cpp:47
static int getRank()
Get rank of the current process in the intraComm.
Definition: server.cpp:861
static void closeErrorStream()
Close the error log file if it opens.
Definition: server.cpp:951
static std::list< MPI_Comm > interCommRight
Definition: server.hpp:30
static void openStream(const StdString &fileName, const StdString &ext, std::filebuf *fb)
Open a file specified by a suffix and an extension and use it for the given file buffer.
Definition: server.cpp:881
static void listenContext(void)
Definition: server.cpp:625
static void closeInfoStream()
Close the info logs file if it opens.
Definition: server.cpp:925
static void openErrorStream()
Write the error log to standard error output.
Definition: server.cpp:945
static void eventLoop(void)
Definition: server.cpp:436
static void listenRootContext(void)
Definition: server.cpp:717
static bool finished
Definition: server.hpp:46
static void recvContextMessage(void *buff, int count)
Definition: server.cpp:666
static void listenOasisEnddef(void)
Root process is listening for an order sent by client to call &quot;oasis_enddef&quot;.
Definition: server.cpp:533
static MPI_Comm intraComm
Definition: server.hpp:28
static void contextEventLoop(bool enableEventsProcessing=true)
Definition: server.cpp:842
static void listenFinalize(void)
Definition: server.cpp:465
static vector< int > sndServerGlobalRanks
Global ranks of pool leaders on the secondary server.
Definition: server.hpp:71
Event scheduling class. An instance of this class is used to order the event providing from different...
static void openInfoStream()
Write the info logs to standard output.
Definition: server.cpp:918
static void finalize(void)
Definition: server.cpp:402
static void listenRootFinalize(void)
Definition: server.cpp:509
static vector< int > & getSecondaryServerGlobalRanks()
Definition: server.cpp:868
static bool isRoot
Definition: server.hpp:43