00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkDuplicatePolyData.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 __vtkDuplicatePolyData_h 00035 #define __vtkDuplicatePolyData_h 00036 00037 #include "vtkPolyDataToPolyDataFilter.h" 00038 class vtkSocketController; 00039 class vtkMultiProcessController; 00040 00041 class VTK_PARALLEL_EXPORT vtkDuplicatePolyData : public vtkPolyDataToPolyDataFilter 00042 { 00043 public: 00044 static vtkDuplicatePolyData *New(); 00045 vtkTypeRevisionMacro(vtkDuplicatePolyData, vtkPolyDataToPolyDataFilter); 00046 void PrintSelf(ostream& os, vtkIndent indent); 00047 00049 00051 virtual void SetController(vtkMultiProcessController*); 00052 vtkGetObjectMacro(Controller, vtkMultiProcessController); 00054 00055 void InitializeSchedule(int numProcs); 00056 00058 00061 vtkSetMacro(Synchronous, int); 00062 vtkGetMacro(Synchronous, int); 00063 vtkBooleanMacro(Synchronous, int); 00065 00067 00071 vtkSocketController *GetSocketController() {return this->SocketController;} 00072 void SetSocketController (vtkSocketController *controller); 00073 vtkSetMacro(ClientFlag,int); 00074 vtkGetMacro(ClientFlag,int); 00076 00078 00081 vtkGetMacro(MemorySize, unsigned long); 00083 00084 protected: 00085 vtkDuplicatePolyData(); 00086 ~vtkDuplicatePolyData(); 00087 00088 // Data generation method 00089 void ComputeInputUpdateExtents(vtkDataObject *output); 00090 void Execute(); 00091 void ClientExecute(); 00092 void ExecuteInformation(); 00093 00094 vtkMultiProcessController *Controller; 00095 int Synchronous; 00096 00097 int NumberOfProcesses; 00098 int ScheduleLength; 00099 int **Schedule; 00100 00101 // For client server mode. 00102 vtkSocketController *SocketController; 00103 int ClientFlag; 00104 00105 unsigned long MemorySize; 00106 00107 private: 00108 vtkDuplicatePolyData(const vtkDuplicatePolyData&); // Not implemented 00109 void operator=(const vtkDuplicatePolyData&); // Not implemented 00110 }; 00111 00112 #endif 00113