00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __CPARSIMCOMM_H__
00022 #define __CPARSIMCOMM_H__
00023
00024 #include "cpolymorphic.h"
00025
00026
00027 class cCommBuffer;
00028
00029 #define PARSIM_ANY_TAG -1
00030
00031
00042 class SIM_API cParsimCommunications : public cPolymorphic
00043 {
00044 public:
00048 virtual ~cParsimCommunications() {}
00049
00061 virtual void init() = 0;
00062
00066 virtual void shutdown() = 0;
00068
00070
00073 virtual int getNumPartitions() = 0;
00074
00078 virtual int getProcId() = 0;
00079
00085 virtual cCommBuffer *createCommBuffer() = 0;
00086
00090 virtual void recycleCommBuffer(cCommBuffer *buffer) = 0;
00091
00095 virtual void send(cCommBuffer *buffer, int tag, int destination) = 0;
00096
00101 virtual void broadcast(cCommBuffer *buffer, int tag);
00102
00107 virtual bool receiveBlocking(int filtTag, cCommBuffer *buffer, int& receivedTag, int& sourceProcId) = 0;
00108
00114 virtual bool receiveNonblocking(int filtTag, cCommBuffer *buffer, int& receivedTag, int& sourceProcId) = 0;
00116 };
00117
00118 #endif
00119