00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00038 #ifndef __vtkCommunicator_h
00039 #define __vtkCommunicator_h
00040
00041 #include "vtkObject.h"
00042
00043 class vtkDataSet;
00044 class vtkImageData;
00045 class vtkDataObject;
00046 class vtkDataArray;
00047
00048 class VTK_PARALLEL_EXPORT vtkCommunicator : public vtkObject
00049 {
00050
00051 public:
00052
00053 vtkTypeRevisionMacro(vtkCommunicator, vtkObject);
00054 void PrintSelf(ostream& os, vtkIndent indent);
00055
00058 virtual int Send(vtkDataObject* data, int remoteHandle, int tag);
00059
00062 virtual int Send(vtkDataArray* data, int remoteHandle, int tag);
00063
00065
00066 virtual int Send(int* data, int length, int remoteHandle, int tag) = 0;
00067 virtual int Send(unsigned long* data, int length, int remoteHandle,
00068 int tag) = 0;
00069 virtual int Send(unsigned char* data, int length, int remoteHandle,
00070 int tag) = 0;
00071 virtual int Send(char* data, int length, int remoteHandle,
00072 int tag) = 0;
00073 virtual int Send(float* data, int length, int remoteHandle,
00074 int tag) = 0;
00075 virtual int Send(double* data, int length, int remoteHandle,
00076 int tag) = 0;
00077 #ifdef VTK_USE_64BIT_IDS
00078 virtual int Send(vtkIdType* data, int length, int remoteHandle,
00079 int tag) = 0;
00081 #endif
00082
00083
00086 virtual int Receive(vtkDataObject* data, int remoteHandle, int tag);
00087
00090 virtual int Receive(vtkDataArray* data, int remoteHandle, int tag);
00091
00093
00095 virtual int Receive(int* data, int length, int remoteHandle,
00096 int tag) = 0;
00097 virtual int Receive(unsigned long* data, int length, int remoteHandle,
00098 int tag) = 0;
00099 virtual int Receive(unsigned char* data, int length, int remoteHandle,
00100 int tag) = 0;
00101 virtual int Receive(char* data, int length, int remoteHandle,
00102 int tag) = 0;
00103 virtual int Receive(float* data, int length, int remoteHandle,
00104 int tag) = 0;
00105 virtual int Receive(double* data, int length, int remoteHandle,
00106 int tag) = 0;
00107 #ifdef VTK_USE_64BIT_IDS
00108 virtual int Receive(vtkIdType* data, int length, int remoteHandle,
00109 int tag) = 0;
00111 #endif
00112
00113 static void SetUseCopy(int useCopy);
00114
00115 protected:
00116
00117 void DeleteAndSetMarshalString(char *str, int strLength);
00118
00119
00120
00121 int WriteObject(vtkDataObject *object);
00122 int ReadObject(vtkDataObject *object);
00123
00124 int WriteDataSet(vtkDataSet *object);
00125 int ReadDataSet(vtkDataSet *object);
00126
00127 int WriteImageData(vtkImageData *object);
00128 int ReadImageData(vtkImageData *object);
00129
00130 int WriteDataArray(vtkDataArray *object);
00131 int ReadDataArray(vtkDataArray *object);
00132
00133 vtkCommunicator();
00134 ~vtkCommunicator();
00135
00136 char *MarshalString;
00137 int MarshalStringLength;
00138
00139 int MarshalDataLength;
00140
00141 static int UseCopy;
00142
00143 private:
00144 vtkCommunicator(const vtkCommunicator&);
00145 void operator=(const vtkCommunicator&);
00146 };
00147
00148 #endif // __vtkCommunicator_h
00149
00150