/usr/include/paraview/vtkPVSessionBase.h is in paraview-dev 5.0.1+dfsg1-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 | /*=========================================================================
Program: ParaView
Module: vtkPVSessionBase.h
Copyright (c) Kitware, Inc.
All rights reserved.
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkPVSessionBase
// .SECTION Description
// Abstract class used to provide the main implementation of the ParaView
// session methods for the following classes: vtkSMSession,
// vtkSMSessionClient,
// vtkSMSessionServer
#ifndef vtkPVSessionBase_h
#define vtkPVSessionBase_h
#include "vtkPVServerImplementationCoreModule.h" //needed for exports
#include "vtkPVSession.h"
#include "vtkSMMessageMinimal.h" // needed for vtkSMMessage
class vtkClientServerStream;
class vtkCollection;
class vtkSIObject;
class vtkPVInformation;
class vtkPVServerInformation;
class vtkSIProxyDefinitionManager;
class vtkPVSessionCore;
class VTKPVSERVERIMPLEMENTATIONCORE_EXPORT vtkPVSessionBase : public vtkPVSession
{
public:
vtkTypeMacro(vtkPVSessionBase, vtkPVSession);
void PrintSelf(ostream& os, vtkIndent indent);
enum EventIds
{
RegisterRemoteObjectEvent = 1234,
UnRegisterRemoteObjectEvent = 4321,
ProcessingRemoteEnd = 2143,
ConnectionLost = 6789
};
//---------------------------------------------------------------------------
// Superclass Implementations
//---------------------------------------------------------------------------
// Description:
// Returns a ServerFlags indicate the nature of the current processes. e.g. if
// the current processes acts as a data-server and a render-server, it returns
// DATA_SERVER | RENDER_SERVER. The implementation provided is suitable for
// server processes such as pvserver, pvdataserver (both root and satellites).
virtual ServerFlags GetProcessRoles();
// Description:
// vtkPVServerInformation is an information-object that provides information
// about the server processes. These include server-side capabilities as well
// as server-side command line arguments e.g. tile-display parameters. Use
// this method to obtain the server-side information.
// Overridden to provide support for non-remote-server case. We simply read
// the local process information and return it.
virtual vtkPVServerInformation* GetServerInformation();
// Description:
// This is socket connection, if any to communicate between the data-server
// and render-server nodes. Forwarded for vtkPVSessionCore.
virtual vtkMPIMToNSocketConnection* GetMPIMToNSocketConnection();
//---------------------------------------------------------------------------
// Remote communication API. This API is used for communication in the
// CLIENT -> SERVER(s) direction.
//---------------------------------------------------------------------------
//BTX
// Description:
// Push the state message.
virtual void PushState(vtkSMMessage* msg);
// Description:
// Pull the state message.
virtual void PullState(vtkSMMessage* msg);
// Description:
// Execute a command on the given processes. Use GetLastResult() to obtain the
// last result after the command stream is evaluated. Once can set
// \c ignore_errors to true, to ignore any interpreting errors.
virtual void ExecuteStream( vtkTypeUInt32 location,
const vtkClientServerStream& stream,
bool ignore_errors = false );
// Description:
// Returns the response of the ExecuteStream() call from the location. Note if
// location refers to multiple processes, then the reply is only fetched from
// the "closest" process.
virtual const vtkClientServerStream& GetLastResult(vtkTypeUInt32 location);
//ETX
// Description:
// Gather information about an object referred by the \c globalid.
// \c location identifies the processes to gather the information from.
virtual bool GatherInformation(vtkTypeUInt32 location,
vtkPVInformation* information, vtkTypeUInt32 globalid);
//---------------------------------------------------------------------------
// Remote communication API. This API is used for communication in the
// SERVER -> CLIENT direction. Since satellite nodes cannot communicate with
// the client, these methods have no effect on the satellite nodes and must
// only the called on the root-nodes for the server processes.
// If these methods are called on a process acting as a client, then it is
// processed on that process immediately, as appropriate.
//---------------------------------------------------------------------------
//BTX
// Description:
// Sends the message to all clients.
virtual void NotifyAllClients(const vtkSMMessage*)=0;
// Description:
// Sends the message to all but the active client-session.
virtual void NotifyOtherClients(const vtkSMMessage*)=0;
//ETX
//---------------------------------------------------------------------------
// API dealing with/forwarded to vtkPVSessionCore dealing with SIObjects and
// SMObjects.
//---------------------------------------------------------------------------
// Description:
// Provides access to the session core.
vtkGetObjectMacro(SessionCore, vtkPVSessionCore);
// Description:
// Get the ProxyDefinitionManager.
vtkSIProxyDefinitionManager* GetProxyDefinitionManager();
// Description:
// Returns a vtkSIObject or subclass given its global id, if any.
vtkSIObject* GetSIObject(vtkTypeUInt32 globalid);
//BTX
// Description:
// Unregister server side object. (SIObject)
virtual void UnRegisterSIObject(vtkSMMessage* msg);
// Description:
// Register server side object. (SIObject)
virtual void RegisterSIObject(vtkSMMessage* msg);
//ETX
// Description:
// Return a vtkSMRemoteObject given its global id if any otherwise return NULL;
vtkObject* GetRemoteObject(vtkTypeUInt32 globalid);
// Description:
// Allow the user to fill its vtkCollection with all RemoteObject
// This could be usefull when you want to hold a reference to them to
// prevent any deletion across several method call.
virtual void GetAllRemoteObjects(vtkCollection* collection);
//---------------------------------------------------------------------------
// API for GlobalId management
//---------------------------------------------------------------------------
// Description:
// Provides the next available identifier. This implementation works locally.
// without any code distribution. To support the distributed architecture
// the vtkSMSessionClient overide those method to call them on the DATA_SERVER
// vtkPVSessionBase instance.
virtual vtkTypeUInt32 GetNextGlobalUniqueIdentifier();
// Description:
// Return the first Id of the requested chunk.
// 1 = ReverveNextIdChunk(10); | Reserved ids [1,2,3,4,5,6,7,8,9,10]
// 11 = ReverveNextIdChunk(10);| Reserved ids [11,12,13,14,15,16,17,18,19,20]
// b = a + 10;
virtual vtkTypeUInt32 GetNextChunkGlobalUniqueIdentifier(vtkTypeUInt32 chunkSize);
// Description:
// This propertie is used to discard ignore_synchronization proxy property
// when we load protobuf states.
// Therefore, if we load any camera state while that property is true, this
// won't affect the proxy/property state at all. It will simply remain the same.
virtual bool IsProcessingRemoteNotification();
// Description:
// Update internal session core in order to use the one used in another session
virtual void UseSessionCoreOf(vtkPVSessionBase* other);
//BTX
protected:
vtkPVSessionBase();
vtkPVSessionBase(vtkPVSessionCore* coreToUse);
~vtkPVSessionBase();
// Description:
// Method used to migrate from one Session type to another by keeping the same
// vtkPVSessionCore
vtkPVSessionCore* GetSessionCore() const;
void SetSessionCore(vtkPVSessionCore*);
// Description:
// Should be called to begin/end receiving progresses on this session.
// Overridden to relay to the server(s).
virtual void PrepareProgressInternal();
virtual void CleanupPendingProgressInternal();
friend class vtkSMRemoteObject;
friend class vtkSMSessionProxyManager;
friend class vtkSMLiveInsituLinkProxy; // Needed to get access to vtkPVCatalystSessionCore
// Description:
// Methods used to monitor if we are currently processing a server notification
// Only vtkSMSessionClient use the flag to disable ignore_synchronization
// properties from beeing updated.
virtual bool StartProcessingRemoteNotification();
virtual void StopProcessingRemoteNotification(bool previousValue);
bool ProcessingRemoteNotification;
// Description:
// Register a remote object
void RegisterRemoteObject(vtkTypeUInt32 globalid, vtkTypeUInt32 location,
vtkObject* obj);
// Description:
// Unregister a remote object
void UnRegisterRemoteObject(vtkTypeUInt32 globalid, vtkTypeUInt32 location);
vtkPVSessionCore* SessionCore;
private:
vtkPVSessionBase(const vtkPVSessionBase&); // Not implemented
void operator=(const vtkPVSessionBase&); // Not implemented
// Shared constructor method
void InitSessionBase(vtkPVSessionCore* coreToUse);
vtkPVServerInformation* LocalServerInformation;
unsigned long ActivateObserverTag;
unsigned long DesactivateObserverTag;
//ETX
};
#endif
|