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
00037
00038
00061 #ifndef __vtkCommunicator_h
00062 #define __vtkCommunicator_h
00063
00064 #include "vtkObject.h"
00065 #include "vtkDataObject.h"
00066 #include "vtkDataArray.h"
00067
00068 class vtkDataSet;
00069 class vtkImageData;
00070
00071 class VTK_PARALLEL_EXPORT vtkCommunicator : public vtkObject
00072 {
00073
00074 public:
00075
00076 vtkTypeMacro(vtkCommunicator, vtkObject);
00077 void PrintSelf(ostream& os, vtkIndent indent);
00078
00081 virtual int Send(vtkDataObject* data, int remoteHandle, int tag);
00082
00085 virtual int Send(vtkDataArray* data, int remoteHandle, int tag);
00086
00088
00089 virtual int Send(int* data, int length, int remoteHandle, int tag) = 0;
00090 virtual int Send(unsigned long* data, int length, int remoteHandle,
00091 int tag) = 0;
00092 virtual int Send(unsigned char* data, int length, int remoteHandle,
00093 int tag) = 0;
00094 virtual int Send(char* data, int length, int remoteHandle,
00095 int tag) = 0;
00096 virtual int Send(float* data, int length, int remoteHandle,
00097 int tag) = 0;
00098 virtual int Send(double* data, int length, int remoteHandle,
00099 int tag) = 0;
00100 #ifdef VTK_USE_64BIT_IDS
00101 virtual int Send(vtkIdType* data, int length, int remoteHandle,
00102 int tag) = 0;
00104 #endif
00105
00106
00109 virtual int Receive(vtkDataObject* data, int remoteHandle, int tag);
00110
00113 virtual int Receive(vtkDataArray* data, int remoteHandle, int tag);
00114
00116
00118 virtual int Receive(int* data, int length, int remoteHandle,
00119 int tag) = 0;
00120 virtual int Receive(unsigned long* data, int length, int remoteHandle,
00121 int tag) = 0;
00122 virtual int Receive(unsigned char* data, int length, int remoteHandle,
00123 int tag) = 0;
00124 virtual int Receive(char* data, int length, int remoteHandle,
00125 int tag) = 0;
00126 virtual int Receive(float* data, int length, int remoteHandle,
00127 int tag) = 0;
00128 virtual int Receive(double* data, int length, int remoteHandle,
00129 int tag) = 0;
00130 #ifdef VTK_USE_64BIT_IDS
00131 virtual int Receive(vtkIdType* data, int length, int remoteHandle,
00132 int tag) = 0;
00134 #endif
00135
00136 protected:
00137
00138 void DeleteAndSetMarshalString(char *str, int strLength);
00139
00140
00141
00142 int WriteObject(vtkDataObject *object);
00143 int ReadObject(vtkDataObject *object);
00144
00145 int WriteDataSet(vtkDataSet *object);
00146 int ReadDataSet(vtkDataSet *object);
00147
00148 int WriteImageData(vtkImageData *object);
00149 int ReadImageData(vtkImageData *object);
00150
00151 int WriteDataArray(vtkDataArray *object);
00152 int ReadDataArray(vtkDataArray *object);
00153
00154 vtkCommunicator();
00155 ~vtkCommunicator();
00156
00157 char *MarshalString;
00158 int MarshalStringLength;
00159
00160 int MarshalDataLength;
00161
00162 private:
00163 vtkCommunicator(const vtkCommunicator&);
00164 void operator=(const vtkCommunicator&);
00165 };
00166
00167 #endif // __vtkCommunicator_h
00168
00169