#ifndef __BUFFER_CLIENT_HPP__ #define __BUFFER_CLIENT_HPP__ #include "xios_spl.hpp" #include "buffer_out.hpp" #include "mpi.hpp" #include "cxios.hpp" #ifdef _usingEP #include "ep_declaration.hpp" #endif namespace xios { class CClientBuffer { public: static size_t maxRequestSize; //#pragma omp threadprivate(maxRequestSize) CClientBuffer(MPI_Comm intercomm, int serverRank, StdSize bufferSize, StdSize maxBufferedEvents); ~CClientBuffer(); bool isBufferFree(int size); CBufferOut* getBuffer(int size); bool checkBuffer(void); bool hasPendingRequest(void); int remain(void); private: char* buffer[2]; int current; int count; int bufferedEvents; const int maxBufferedEvents; const int bufferSize; const int serverRank; bool pending; MPI_Request request; CBufferOut* retBuffer; const MPI_Comm interComm; }; } #endif