00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00024 #ifndef __vtkDuplicatePolyData_h
00025 #define __vtkDuplicatePolyData_h
00026
00027 #include "vtkPolyDataAlgorithm.h"
00028 class vtkSocketController;
00029 class vtkMultiProcessController;
00030
00031 class VTK_PARALLEL_EXPORT vtkDuplicatePolyData : public vtkPolyDataAlgorithm
00032 {
00033 public:
00034 static vtkDuplicatePolyData *New();
00035 vtkTypeMacro(vtkDuplicatePolyData, vtkPolyDataAlgorithm);
00036 void PrintSelf(ostream& os, vtkIndent indent);
00037
00039
00041 virtual void SetController(vtkMultiProcessController*);
00042 vtkGetObjectMacro(Controller, vtkMultiProcessController);
00044
00045 void InitializeSchedule(int numProcs);
00046
00048
00051 vtkSetMacro(Synchronous, int);
00052 vtkGetMacro(Synchronous, int);
00053 vtkBooleanMacro(Synchronous, int);
00055
00057
00061 vtkSocketController *GetSocketController() {return this->SocketController;}
00062 void SetSocketController (vtkSocketController *controller);
00063 vtkSetMacro(ClientFlag,int);
00064 vtkGetMacro(ClientFlag,int);
00066
00068
00071 vtkGetMacro(MemorySize, unsigned long);
00073
00074 protected:
00075 vtkDuplicatePolyData();
00076 ~vtkDuplicatePolyData();
00077
00078
00079 virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00080 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00081 void ClientExecute(vtkPolyData *output);
00082 virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00083
00084 vtkMultiProcessController *Controller;
00085 int Synchronous;
00086
00087 int NumberOfProcesses;
00088 int ScheduleLength;
00089 int **Schedule;
00090
00091
00092 vtkSocketController *SocketController;
00093 int ClientFlag;
00094
00095 unsigned long MemorySize;
00096
00097 private:
00098 vtkDuplicatePolyData(const vtkDuplicatePolyData&);
00099 void operator=(const vtkDuplicatePolyData&);
00100 };
00101
00102 #endif
00103