00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef MPI_Channel_h
00037 #define MPI_Channel_h
00038
00039 #include <Channel.h>
00040 #include <mpi.h>
00041
00043 class MPI_Channel : public Channel
00044 {
00045 public:
00047 MPI_Channel(int otherProcess);
00049 ~MPI_Channel();
00050
00052 char *addToProgram(void);
00053
00055 virtual int setUpShadow(void);
00057 virtual int setUpActor(void);
00058
00060 int setNextAddress(const ChannelAddress &otherChannelAddress);
00062 virtual ChannelAddress *getLastSendersAddress(void);
00063
00065 int sendObj(int commitTag,
00066 MovableObject &theObject,
00067 ChannelAddress *theAddress =0);
00068
00070 int recvObj(int commitTag,
00071 MovableObject &theObject,
00072 FEM_ObjectBroker &theBroker,
00073 ChannelAddress *theAddress =0);
00074
00076 int recvMsg(int dbTag, int commitTag, Message &, ChannelAddress *theAddress =0);
00078 int sendMsg(int dbTag, int commitTag, const Message &, ChannelAddress *theAddress =0);
00079
00081 int sendMatrix(int dbTag, int commitTag, const Matrix &theMatrix, ChannelAddress *theAddress =0);
00083 int recvMatrix(int dbTag, int commitTag, Matrix &theMatrix, ChannelAddress *theAddress =0);
00084
00086 int sendVector(int dbTag, int commitTag, const Vector &theVector, ChannelAddress *theAddress =0);
00088 int recvVector(int dbTag, int commitTag, Vector &theVector, ChannelAddress *theAddress =0);
00089
00091 int sendID(int dbTag, int commitTag, const ID &theID, ChannelAddress *theAddress =0);
00093 int recvID(int dbTag, int commitTag, ID &theID, ChannelAddress *theAddress =0);
00094
00095
00096 protected:
00097
00098 private:
00100 int otherTag;
00102 MPI_Comm otherComm;
00103 };
00104
00105
00106 #endif
00107
00108
00109
00110
00111
00112
00113
00114
00115 ÿ