source: XIOS/dev/common/src/manager/xios_manager.hpp @ 1511

Last change on this file since 1511 was 286, checked in by ymipsl, 13 years ago

reprise en main de la version de H. Ozdoba. Correction de différentes erreurs de conception et bug.
Version NEMO operationnel en client/server, interoperabilita avec OASIS, reconstition de fichiers via netcdf4/HDF5

YM

File size: 2.7 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)(MPI_Comm, MPI_Comm, MPI_Comm) ;
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)(MPI_Comm, MPI_Comm, MPI_Comm));
41
42         /// Lancement des serveurs et/ou des clients ///
43         static void RunServer(StdString clientName,MPI_Comm comm_client_server,MPI_Comm comm_server);
44         static void RunClient(bool launch = false, MPI_Comm comm_client = comm::CMPIManager::GetCommWorld());
45         static void RunClientServer(MPI_Comm comm_client_server = comm::CMPIManager::GetCommWorld());
46
47      public :
48
49         /// Accesseurs statiques ///
50         static XIOSType   GetType(void);
51         static XIOSStatus GetStatus(void);
52         static StdString  GetClientName(void);
53         
54      public :
55         
56         static StdSize GetNbClient(void);
57         static StdSize GetNbLocClient(const StdString & clientName = CXIOSManager::ClientName);
58
59         static StdSize GetNbServer(void);
60         static StdSize GetNbLocServer(const StdString & clientName = CXIOSManager::ClientName);
61         
62      public :
63     
64         /// Information ///
65         static void ShowInformation_CS(MPI_Comm comm_client_server);
66
67         /// Variables statiques privées ///
68         static StdString ExeName;
69         static std::vector<StdString> ExeOptions;
70
71         static XIOSType   Type;
72         static XIOSStatus Status;
73         static StdString  ClientName;
74         static MPI_Comm Comm_Client_Server, Comm_Server;
75         static xios_map<StdString, XIOSClient> Clients;
76
77   }; // class CXIOSManager
78} // namespace xmlioserver
79
80#endif //__XMLIO_CXMLIOManager__
Note: See TracBrowser for help on using the repository browser.