source: XMLIO_V2/dev/dev_rv/src/xmlio/manager/xios_manager.hpp @ 180

Last change on this file since 180 was 180, checked in by hozdoba, 12 years ago
File size: 2.8 KB
Line 
1#ifndef __XMLIO_CXMLIOManager__
2#define __XMLIO_CXMLIOManager__
3
4/// xmlioserver headers ///
5#include "xmlioserver_spl.hpp"
6#include "exception.hpp"
7#include "mpi_manager.hpp"
8
9namespace xmlioserver
10{
11   /// ////////////////////// Déclarations ////////////////////// ///
12   class CXIOSManager
13   {
14      public :
15
16         /// Définition de type ///
17         typedef enum _xios_type
18         { CLIENT_SERVER = 0 , CLIENT, SERVER } XIOSType;
19         
20         typedef enum _xios_status
21         { LOC_UNUSED = 0, LOC_CLIENT, LOC_SERVER, LOC_CLIENT_SERVER }  XIOSStatus;
22
23         typedef struct
24         {
25            StdSize nbClient;
26            StdSize nbClientPServer;
27            void (*entry)(comm::MPIComm, comm::MPIComm, comm::MPIComm) ;
28         } XIOSClient;
29         
30      public:
31
32         /// Initialisation et finalisation de la bibliothÚque ///
33         static void Initialise(XIOSType type = CLIENT,
34                                int    * argc = NULL  ,
35                                char *** argv = NULL  );
36         static void Finalize(void);
37
38         /// Ajout de client en mode CLIENT_SERVER et CLIENT///
39         static void AddClient(StdString clientName, StdSize nbClient, StdSize nbClientPServer,
40                               void (*entry_point)(comm::MPIComm, comm::MPIComm, comm::MPIComm));
41
42         /// Lancement des serveurs et/ou des clients ///
43         static void RunServer(StdString clientName,
44                               comm::MPIComm comm_client_server, comm::MPIComm comm_server);
45         static void RunClient(comm::MPIComm comm_client =
46                               comm::CMPIManager::GetCommWorld());
47         static void RunClientServer(comm::MPIComm comm_client_server =
48                                     comm::CMPIManager::GetCommWorld());
49
50      protected :
51
52         /// Accesseurs statiques ///
53         static XIOSType   GetType(void);
54         static XIOSStatus GetStatus(void);
55         static StdString  GetClientName(void);
56         
57         static StdSize GetNbClient(void);
58         static StdSize GetNbLocClient(const StdString & clientName = CXIOSManager::ClientName);
59
60         static StdSize GetNbServer(void);
61         static StdSize GetNbLocServer(const StdString & clientName = CXIOSManager::ClientName);
62         
63      private :
64     
65         /// Information ///
66         static void ShowInformation_CS(comm::MPIComm comm_client_server);
67
68         /// Variables statiques privées ///
69         static StdString ExeName;
70         static std::vector<StdString> ExeOptions;
71
72         static XIOSType   Type;
73         static XIOSStatus Status;
74         static StdString  ClientName;
75         static comm::MPIComm Comm_Client_Server, Comm_Server;
76         static xios_map<StdString, XIOSClient> Clients;
77
78   }; // class CXIOSManager
79} // namespace xmlioserver
80
81#endif //__XMLIO_CXMLIOManager__
Note: See TracBrowser for help on using the repository browser.