ParaView
vtkCompositeMultiProcessController.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: ParaView
4  Module: vtkCompositeMultiProcessController.h
5 
6  Copyright (c) Kitware, Inc.
7  All rights reserved.
8  See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
26 #ifndef vtkCompositeMultiProcessController_h
27 #define vtkCompositeMultiProcessController_h
28 
29 #include "vtkMultiProcessController.h"
30 #include "vtkPVVTKExtensionsCoreModule.h" // needed for export macro
31 
32 class VTKPVVTKEXTENSIONSCORE_EXPORT vtkCompositeMultiProcessController
33  : public vtkMultiProcessController
34 {
35 public:
37  vtkTypeMacro(vtkCompositeMultiProcessController, vtkMultiProcessController);
38  void PrintSelf(ostream& os, vtkIndent indent);
39 
40  // --------------------- Composite API -------------------------------
41 
48  int GetActiveControllerID();
49 
53  int GetNumberOfControllers();
54 
58  int GetControllerId(int idx);
59 
66  void SetMasterController(int id);
67 
73  int GetMasterController();
74 
79  void RegisterController(vtkMultiProcessController* controller);
80 
84  void UnRegisterController(vtkMultiProcessController* controller);
85 
90  int UnRegisterActiveController();
91 
95  vtkMultiProcessController* GetActiveController();
96 
101  virtual void TriggerRMI2All(int remote, void* data, int length, int tag, bool sendToActiveToo);
102 
103  // --------------- vtkMultiProcessController API ----------------------
104  // Make sure inner vtkSocketController are initialized
105  virtual void Initialize();
106  virtual void Initialize(int*, char***) { this->Initialize(); };
107  virtual void Initialize(int*, char***, int) { this->Initialize(); };
108  virtual void Finalize(){}; // Empty: Same as vtkSocketController
109  virtual void Finalize(int){}; // Empty: Same as vtkSocketController
110  virtual void SingleMethodExecute(){}; // Empty: Same as vtkSocketController
111  virtual void MultipleMethodExecute(){}; // Empty: Same as vtkSocketController
112  virtual void CreateOutputWindow(){}; // Empty: Same as vtkSocketController
113 
114  virtual vtkCommunicator* GetCommunicator();
115 
116  // --------------- RMIs Overloaded API -------------------
117 
123  virtual unsigned long AddRMICallback(vtkRMIFunctionType, void* localArg, int tag);
124 
126 
131  virtual void RemoveAllRMICallbacks(int tag);
132  virtual int RemoveFirstRMI(int tag)
133  {
134  vtkWarningMacro("RemoveRMICallbacks will remove all...");
135  this->RemoveAllRMICallbacks(tag);
136  return 1;
137  }
138  virtual bool RemoveRMICallback(unsigned long observerTagId);
140 
141  enum EventId
142  {
143  CompositeMultiProcessControllerChanged = 2345
144  };
145 
146 protected:
149 
150 private:
152  void operator=(const vtkCompositeMultiProcessController&) VTK_DELETE_FUNCTION;
153 
154  class vtkCompositeInternals;
155  vtkCompositeInternals* Internal;
156  friend class vtkCompositeInternals;
157 };
158 
159 #endif
vtkCompositeMultiProcessController offer a composite implementation of vtkMultiProcessController that...
virtual int RemoveFirstRMI(int tag)
These methods are a part of the newer API to add multiple rmi callbacks.