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

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 =========================================================================*/
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   // Write and read from marshal string
00133   // return 1 success, 0 fail
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   // The data may not take up all of the string.
00152   int MarshalDataLength;
00153 
00154   static int UseCopy;
00155 
00156 private:
00157   vtkCommunicator(const vtkCommunicator&);  // Not implemented.
00158   void operator=(const vtkCommunicator&);  // Not implemented.
00159 };
00160 
00161 #endif // __vtkCommunicator_h
00162 
00163