00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00051 #ifndef __vtkCommunicator_h
00052 #define __vtkCommunicator_h
00053
00054 #include "vtkObject.h"
00055
00056 class vtkDataSet;
00057 class vtkImageData;
00058 class vtkDataObject;
00059 class vtkDataArray;
00060
00061 class VTK_PARALLEL_EXPORT vtkCommunicator : public vtkObject
00062 {
00063
00064 public:
00065
00066 vtkTypeRevisionMacro(vtkCommunicator, vtkObject);
00067 void PrintSelf(ostream& os, vtkIndent indent);
00068
00071 virtual int Send(vtkDataObject* data, int remoteHandle, int tag);
00072
00075 virtual int Send(vtkDataArray* data, int remoteHandle, int tag);
00076
00078
00079 virtual int Send(int* data, int length, int remoteHandle, int tag) = 0;
00080 virtual int Send(unsigned long* data, int length, int remoteHandle,
00081 int tag) = 0;
00082 virtual int Send(unsigned char* data, int length, int remoteHandle,
00083 int tag) = 0;
00084 virtual int Send(char* data, int length, int remoteHandle,
00085 int tag) = 0;
00086 virtual int Send(float* data, int length, int remoteHandle,
00087 int tag) = 0;
00088 virtual int Send(double* data, int length, int remoteHandle,
00089 int tag) = 0;
00090 #ifdef VTK_USE_64BIT_IDS
00091 virtual int Send(vtkIdType* data, int length, int remoteHandle,
00092 int tag) = 0;
00094 #endif
00095
00096
00099 virtual int Receive(vtkDataObject* data, int remoteHandle, int tag);
00100
00103 virtual int Receive(vtkDataArray* data, int remoteHandle, int tag);
00104
00106
00108 virtual int Receive(int* data, int length, int remoteHandle,
00109 int tag) = 0;
00110 virtual int Receive(unsigned long* data, int length, int remoteHandle,
00111 int tag) = 0;
00112 virtual int Receive(unsigned char* data, int length, int remoteHandle,
00113 int tag) = 0;
00114 virtual int Receive(char* data, int length, int remoteHandle,
00115 int tag) = 0;
00116 virtual int Receive(float* data, int length, int remoteHandle,
00117 int tag) = 0;
00118 virtual int Receive(double* data, int length, int remoteHandle,
00119 int tag) = 0;
00120 #ifdef VTK_USE_64BIT_IDS
00121 virtual int Receive(vtkIdType* data, int length, int remoteHandle,
00122 int tag) = 0;
00124 #endif
00125
00126 static void SetUseCopy(int useCopy);
00127
00128 protected:
00129
00130 void DeleteAndSetMarshalString(char *str, int strLength);
00131
00132
00133
00134 int WriteObject(vtkDataObject *object);
00135 int ReadObject(vtkDataObject *object);
00136
00137 int WriteDataSet(vtkDataSet *object);
00138 int ReadDataSet(vtkDataSet *object);
00139
00140 int WriteImageData(vtkImageData *object);
00141 int ReadImageData(vtkImageData *object);
00142
00143 int WriteDataArray(vtkDataArray *object);
00144 int ReadDataArray(vtkDataArray *object);
00145
00146 vtkCommunicator();
00147 ~vtkCommunicator();
00148
00149 char *MarshalString;
00150 int MarshalStringLength;
00151
00152 int MarshalDataLength;
00153
00154 static int UseCopy;
00155
00156 private:
00157 vtkCommunicator(const vtkCommunicator&);
00158 void operator=(const vtkCommunicator&);
00159 };
00160
00161 #endif // __vtkCommunicator_h
00162
00163