Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Parallel/vtkCommunicator.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkCommunicator.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 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 // Write and read from marshal string 00120 // return 1 success, 0 fail 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 // The data may not take up all of the string. 00139 int MarshalDataLength; 00140 00141 static int UseCopy; 00142 00143 private: 00144 vtkCommunicator(const vtkCommunicator&); // Not implemented. 00145 void operator=(const vtkCommunicator&); // Not implemented. 00146 }; 00147 00148 #endif // __vtkCommunicator_h 00149 00150