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 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00034 #ifndef __vtkCommunicator_h 00035 #define __vtkCommunicator_h 00036 00037 #include "vtkObject.h" 00038 00039 class vtkDataSet; 00040 class vtkImageData; 00041 class vtkDataObject; 00042 class vtkDataArray; 00043 00044 class VTK_PARALLEL_EXPORT vtkCommunicator : public vtkObject 00045 { 00046 00047 public: 00048 00049 vtkTypeRevisionMacro(vtkCommunicator, vtkObject); 00050 void PrintSelf(ostream& os, vtkIndent indent); 00051 00054 virtual int Send(vtkDataObject* data, int remoteHandle, int tag); 00055 00058 virtual int Send(vtkDataArray* data, int remoteHandle, int tag); 00059 00061 00062 virtual int Send(int* data, int length, int remoteHandle, int tag) = 0; 00063 virtual int Send(unsigned long* data, int length, int remoteHandle, 00064 int tag) = 0; 00065 virtual int Send(unsigned char* data, int length, int remoteHandle, 00066 int tag) = 0; 00067 virtual int Send(char* data, int length, int remoteHandle, 00068 int tag) = 0; 00069 virtual int Send(float* data, int length, int remoteHandle, 00070 int tag) = 0; 00071 virtual int Send(double* data, int length, int remoteHandle, 00072 int tag) = 0; 00073 #ifdef VTK_USE_64BIT_IDS 00074 virtual int Send(vtkIdType* data, int length, int remoteHandle, 00075 int tag) = 0; 00077 #endif 00078 00079 00082 virtual int Receive(vtkDataObject* data, int remoteHandle, int tag); 00083 00086 virtual int Receive(vtkDataArray* data, int remoteHandle, int tag); 00087 00089 00091 virtual int Receive(int* data, int length, int remoteHandle, 00092 int tag) = 0; 00093 virtual int Receive(unsigned long* data, int length, int remoteHandle, 00094 int tag) = 0; 00095 virtual int Receive(unsigned char* data, int length, int remoteHandle, 00096 int tag) = 0; 00097 virtual int Receive(char* data, int length, int remoteHandle, 00098 int tag) = 0; 00099 virtual int Receive(float* data, int length, int remoteHandle, 00100 int tag) = 0; 00101 virtual int Receive(double* data, int length, int remoteHandle, 00102 int tag) = 0; 00103 #ifdef VTK_USE_64BIT_IDS 00104 virtual int Receive(vtkIdType* data, int length, int remoteHandle, 00105 int tag) = 0; 00107 #endif 00108 00109 static void SetUseCopy(int useCopy); 00110 00111 protected: 00112 00113 void DeleteAndSetMarshalString(char *str, int strLength); 00114 00115 // Write and read from marshal string 00116 // return 1 success, 0 fail 00117 int WriteObject(vtkDataObject *object); 00118 int ReadObject(vtkDataObject *object); 00119 00120 int WriteDataSet(vtkDataSet *object); 00121 int ReadDataSet(vtkDataSet *object); 00122 00123 int WriteImageData(vtkImageData *object); 00124 int ReadImageData(vtkImageData *object); 00125 00126 int WriteDataArray(vtkDataArray *object); 00127 int ReadDataArray(vtkDataArray *object); 00128 00129 vtkCommunicator(); 00130 ~vtkCommunicator(); 00131 00132 char *MarshalString; 00133 int MarshalStringLength; 00134 // The data may not take up all of the string. 00135 int MarshalDataLength; 00136 00137 static int UseCopy; 00138 00139 private: 00140 vtkCommunicator(const vtkCommunicator&); // Not implemented. 00141 void operator=(const vtkCommunicator&); // Not implemented. 00142 }; 00143 00144 #endif // __vtkCommunicator_h 00145 00146