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

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