vtkPVSessionCore.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: ParaView
4  Module: vtkPVSessionCore.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 =========================================================================*/
25 #ifndef vtkPVSessionCore_h
26 #define vtkPVSessionCore_h
27 
28 #include "vtkObject.h"
29 #include "vtkRemotingServerManagerModule.h" //needed for exports
30 #include "vtkSMMessageMinimal.h" // needed for vtkSMMessage.
31 #include "vtkWeakPointer.h" // needed for vtkMultiProcessController
32 
35 class vtkCollection;
38 class vtkPVInformation;
39 class vtkSIObject;
41 
43 {
44 public:
45  static vtkPVSessionCore* New();
46  vtkTypeMacro(vtkPVSessionCore, vtkObject);
47  void PrintSelf(ostream& os, vtkIndent indent) override;
48 
50 
53  vtkGetObjectMacro(Interpreter, vtkClientServerInterpreter);
55 
57 
60  vtkGetObjectMacro(ProxyDefinitionManager, vtkSIProxyDefinitionManager);
62 
67  virtual void PushState(vtkSMMessage* message);
68 
72  virtual void PullState(vtkSMMessage* message);
73 
79  virtual void ExecuteStream(
80  vtkTypeUInt32 location, const vtkClientServerStream& stream, bool ignore_errors = false);
81 
87  virtual const vtkClientServerStream& GetLastResult();
88 
94  virtual void UnRegisterSIObject(vtkSMMessage* message);
95 
100  virtual void RegisterSIObject(vtkSMMessage* message);
101 
106  vtkSIObject* GetSIObject(vtkTypeUInt32 globalid);
107 
111  vtkObject* GetRemoteObject(vtkTypeUInt32 globalid);
112 
116  void RegisterRemoteObject(vtkTypeUInt32 globalid, vtkObject* obj);
117 
121  void UnRegisterRemoteObject(vtkTypeUInt32 globalid);
122 
127  virtual bool GatherInformation(
128  vtkTypeUInt32 location, vtkPVInformation* information, vtkTypeUInt32 globalid);
129 
134  int GetNumberOfProcesses();
135 
137 
142  void SetMPIMToNSocketConnection(vtkMPIMToNSocketConnection*);
143  vtkGetObjectMacro(MPIMToNSocketConnection, vtkMPIMToNSocketConnection);
145 
152  virtual vtkTypeUInt32 GetNextGlobalUniqueIdentifier();
153 
160  virtual vtkTypeUInt32 GetNextChunkGlobalUniqueIdentifier(vtkTypeUInt32 chunkSize);
161 
163  {
164  PUSH_STATE = 12,
165  PULL_STATE = 13,
166  EXECUTE_STREAM = 14,
167  GATHER_INFORMATION = 15,
168  REGISTER_SI = 16,
169  UNREGISTER_SI = 17,
170  };
171  // Methods used to managed MPI satellite
172  void PushStateSatelliteCallback();
173  void ExecuteStreamSatelliteCallback();
174  void GatherInformationStatelliteCallback();
175  void RegisterSIObjectSatelliteCallback();
176  void UnRegisterSIObjectSatelliteCallback();
177 
183  virtual void GetAllRemoteObjects(vtkCollection* collection);
184 
189  void GarbageCollectSIObject(int* clientIds, int nbClients);
190 
191 protected:
193  ~vtkPVSessionCore() override;
194 
199  virtual void PushStateInternal(vtkSMMessage*);
200 
205  virtual void ExecuteStreamInternal(const vtkClientServerStream& stream, bool ignore_errors);
206 
211  bool GatherInformationInternal(vtkPVInformation* information, vtkTypeUInt32 globalid);
212 
216  bool CollectInformation(vtkPVInformation*);
217 
221  virtual void RegisterSIObjectInternal(vtkSMMessage* message);
222 
228  virtual void UnRegisterSIObjectInternal(vtkSMMessage* message);
229 
233  void OnInterpreterError(vtkObject*, unsigned long, void* calldata);
234 
235  enum
236  {
237  ROOT_SATELLITE_RMI_TAG = 887822,
238  ROOT_SATELLITE_INFO_TAG = 887823
239  };
240 
245 
246 private:
247  vtkPVSessionCore(const vtkPVSessionCore&) = delete;
248  void operator=(const vtkPVSessionCore&) = delete;
249 
250  class vtkInternals;
251  vtkInternals* Internals;
252  bool SymmetricMPIMode;
253 
254  // Local counter for global Ids
255  vtkTypeUInt32 LocalGlobalID;
256 
257  ostream* LogStream;
258 };
259 
260 #endif
#define VTKREMOTINGSERVERMANAGER_EXPORT
void PrintSelf(ostream &os, vtkIndent indent) VTK_OVERRIDE
vtkWeakPointer< vtkMultiProcessController > ParallelController
Store messages for the interpreter.
vtkPVSessionCore is used by vtkSMSession.
Run-time VTK interpreter.
Header class that setup every thing in order to use Protobuf messages in a transparent manner...
class to create socket connections between two servers
Object that is managed by vtkPVSessionCore which wrap concrete class such as the vtk ones...
Definition: vtkSIObject.h:33
vtkSIProxyDefinitionManager * ProxyDefinitionManager
vtkClientServerInterpreter * Interpreter
object responsible for managing XML proxies definitions
static vtkObject * New()
void operator=(const vtkObjectBase &)
vtkMPIMToNSocketConnection * MPIMToNSocketConnection
Superclass for information objects.