00001 #ifndef MPICommunicationSession_h
00002 #define MPICommunicationSession_h
00003
00004 #include "mpi.h"
00005 #include "bieTags.h"
00006 #include "MPIStreamFilter.h"
00007
00008 namespace BIE {
00009
00011 class MPICommunicationSession {
00012 public:
00013
00014 MPICommunicationSession(MPIStreamFilter *filter, int sessionId, MPI_Comm comm);
00015 ~MPICommunicationSession();
00016 void startNewSession(int newSessionId);
00017 void initializeSendTx();
00018 void finishSendTx();
00019 void send();
00020 static MPI_Datatype convertRecordToDatatype(RecordType *rt);
00021
00022 private:
00023
00024 int _sessionId;
00025 MPIStreamFilter *_filter;
00026
00027 MPI_Comm _communicator;
00028 MPI_Datatype _sendDtype;
00029
00030
00031 int _numSends;
00032 };
00033 }
00034 #endif