source: XIOS/trunk/src/context_server.hpp @ 492

Last change on this file since 492 was 492, checked in by ymipsl, 10 years ago

Add event scheduler functionnality in order to schedule events from different context, that cause Deadlock or crash when using collective MPI communication in netcdf/hdf5 library.

YM

File size: 1.1 KB
Line 
1#ifndef __CONTEXT_SERVER_HPP__
2#define __CONTEXT_SERVER_HPP__
3#include "xmlioserver_spl.hpp"
4#include "event_server.hpp"
5#include "buffer_server.hpp"
6#include "mpi.hpp"
7
8namespace xios
9{
10  class CContext ;
11 
12  class CContextServer
13  {
14    public:
15   
16    CContextServer(CContext* parent,MPI_Comm intraComm,MPI_Comm interComm) ;
17    bool eventLoop(void) ;
18    void listen(void) ;
19    void checkPendingRequest(void) ;
20    void processRequest(int rank, char* buff,int count) ;
21    void processEvents(void) ;
22    void dispatchEvent(CEventServer& event) ;
23    void setPendingEvent(void) ;
24    bool hasPendingEvent(void) ;
25   
26    MPI_Comm intraComm ;
27    int intraCommSize ;
28    int intraCommRank ;
29   
30    MPI_Comm interComm ;
31    int commSize ;
32 
33    map<int,CServerBuffer*> buffers ;
34    map<int,MPI_Request> pendingRequest ;
35    map<int,char*> bufferRequest ;
36   
37    map<size_t,CEventServer*> events ;
38    size_t currentTimeLine ;
39    CContext* context ;
40   
41    bool finished ;
42    bool pendingEvent ;
43    bool scheduled  ;    /*!< event of current timeline is alreading scheduled ? */
44    size_t hashId ;
45    ~CContextServer() ;   
46  } ;
47
48}
49
50#endif
Note: See TracBrowser for help on using the repository browser.