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 
30 #include "vtkRemotingCoreModule.h" // needed for export macro
31 
33 {
34 public:
37  void PrintSelf(ostream& os, vtkIndent indent) override;
38 
39  // --------------------- Composite API -------------------------------
40 
47  int GetActiveControllerID();
48 
52  int GetNumberOfControllers();
53 
57  int GetControllerId(int idx);
58 
62  vtkMultiProcessController* GetController(int idx);
63 
70  void SetMasterController(int id);
71 
77  int GetMasterController();
78 
83  void RegisterController(vtkMultiProcessController* controller);
84 
88  void UnRegisterController(vtkMultiProcessController* controller);
89 
94  int UnRegisterActiveController();
95 
99  vtkMultiProcessController* GetActiveController();
100 
105  virtual void TriggerRMI2All(int remote, void* data, int length, int tag, bool sendToActiveToo);
106 
107  // --------------- vtkMultiProcessController API ----------------------
108  // Make sure inner vtkSocketController are initialized
109  virtual void Initialize();
110  void Initialize(int*, char***) override { this->Initialize(); };
111  void Initialize(int*, char***, int) override { this->Initialize(); };
112  void Finalize() override{}; // Empty: Same as vtkSocketController
113  void Finalize(int) override{}; // Empty: Same as vtkSocketController
114  void SingleMethodExecute() override{}; // Empty: Same as vtkSocketController
115  void MultipleMethodExecute() override{}; // Empty: Same as vtkSocketController
116  void CreateOutputWindow() override{}; // Empty: Same as vtkSocketController
117 
118  vtkCommunicator* GetCommunicator() override;
119 
120  // --------------- RMIs Overloaded API -------------------
121 
127  unsigned long AddRMICallback(vtkRMIFunctionType, void* localArg, int tag) override;
128 
130 
135  void RemoveAllRMICallbacks(int tag) override;
136  int RemoveFirstRMI(int tag) override
137  {
138  vtkWarningMacro("RemoveRMICallbacks will remove all...");
139  this->RemoveAllRMICallbacks(tag);
140  return 1;
141  }
142  bool RemoveRMICallback(unsigned long observerTagId) override;
144 
145  enum EventId
146  {
147  CompositeMultiProcessControllerChanged = 2345
148  };
149 
150 protected:
153 
154 private:
156  void operator=(const vtkCompositeMultiProcessController&) = delete;
157 
158  class vtkCompositeInternals;
159  vtkCompositeInternals* Internal;
160  friend class vtkCompositeInternals;
161 };
162 
163 #endif
virtual void RemoveAllRMICallbacks(int tag)
virtual bool RemoveRMICallback(unsigned long id)
void(* vtkRMIFunctionType)(void *localArg, void *remoteArg, int remoteArgLength, int remoteProcessId)
virtual void Initialize(int *vtkNotUsed(argc), char ***vtkNotUsed(argv))=0
#define VTKREMOTINGCORE_EXPORT
vtkCompositeMultiProcessController offer a composite implementation of vtkMultiProcessController that...
void PrintSelf(ostream &os, vtkIndent indent)
static vtkObject * New()
void Initialize(int *, char ***, int) override
void operator=(const vtkObjectBase &)
int RemoveFirstRMI(int tag) override
These methods are a part of the newer API to add multiple rmi callbacks.
virtual unsigned long AddRMICallback(vtkRMIFunctionType, void *localArg, int tag)
virtual vtkCommunicator * GetCommunicator()