/usr/include/paraview/vtkSMRemoteObject.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 | /*=========================================================================
Program: ParaView
Module: vtkSMRemoteObject.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 vtkSMRemoteObject - baseclass for all proxy-objects that have counter
// parts on server as well as client processes.
// .SECTION Description
// Abstract class involved in ServerManager class hierarchy that has a
// corresponding SIObject which can be local or remote.
#ifndef vtkSMRemoteObject_h
#define vtkSMRemoteObject_h
#include "vtkPVServerManagerCoreModule.h" //needed for exports
#include "vtkSMSessionObject.h"
#include "vtkSMMessageMinimal.h" // needed for vtkSMMessage
#include "vtkWeakPointer.h" // needed for vtkWeakPointer
class vtkClientServerStream;
class vtkSMSession;
class vtkSMProxyLocator;
class vtkSMLoadStateContext;
class VTKPVSERVERMANAGERCORE_EXPORT vtkSMRemoteObject : public vtkSMSessionObject
{
// My friends are...
friend class vtkSMStateHelper; // To pull state
friend class vtkSMStateLoader; // To set GlobalId as the originals
public:
vtkTypeMacro(vtkSMRemoteObject,vtkSMSessionObject);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Get/Set the location where the underlying VTK-objects are created. The
// value can be contructed by or-ing vtkSMSession::ServerFlags
vtkSetMacro(Location, vtkTypeUInt32);
vtkGetMacro(Location, vtkTypeUInt32);
// Description:
// Override the SetSession so if the object already have an ID
// we automatically register it to the associated session
virtual void SetSession(vtkSMSession*);
// Description:
// Get the global unique id for this object. If none is set and the session is
// valid, a new global id will be assigned automatically.
virtual vtkTypeUInt32 GetGlobalID();
const char* GetGlobalIDAsString();
// Description:
// Allow the user to test if the RemoteObject has already a GlobalID without
// assigning a new one to it.
bool HasGlobalID();
// Description:
// Allow user to set the remote object to be discard for Undo/Redo
// action. By default, any remote object is Undoable.
vtkBooleanMacro(Prototype, bool);
bool IsPrototype() {return this->Prototype;}
vtkSetMacro(Prototype, bool);
//BTX
// Description:
// This method return the full object state that can be used to create that
// object from scratch.
// This method will be used to fill the undo stack.
// If not overriden this will return NULL.
virtual const vtkSMMessage* GetFullState()
{ return NULL; }
// Description:
// This method is used to initialise the object to the given state
// If the definitionOnly Flag is set to True the proxy won't load the
// properties values and just setup the new proxy hierarchy with all subproxy
// globalID set. This allow to split the load process in 2 step to prevent
// invalid state when property refere to a sub-proxy that does not exist yet.
virtual void LoadState( const vtkSMMessage* msg, vtkSMProxyLocator* locator)
{
(void) msg;
(void) locator;
}
// Description:
// Allow to switch off any push of state change to the server for that
// particular object.
// This is used when we load a state based on a server notification. In that
// particular case, the server is already aware of that new state, so we keep
// those changes local.
virtual void EnableLocalPushOnly();
// Description:
// Enable the given remote object to communicate its state normaly to the
// server location.
virtual void DisableLocalPushOnly();
// Description:
// Let the session be aware that even if the Location is client only,
// the message should not be send to the server for a general broadcast
virtual bool IsLocalPushOnly() { return this->ClientOnlyLocationFlag; }
protected:
// Description:
// Default constructor.
vtkSMRemoteObject();
// Description:
// Destructor.
virtual ~vtkSMRemoteObject();
// Description:
// Subclasses can call this method to send a message to its state
// object on the server processes specified.
void PushState(vtkSMMessage* msg);
// Description:
// Subclasses can call this method to pull the state from the
// state-object on the server processes specified. Returns true on successful
// fetch. The message is updated with the fetched state.
bool PullState(vtkSMMessage* msg);
// Description:
// Set the GlobalUniqueId
void SetGlobalID(vtkTypeUInt32 guid);
// Global-ID for this vtkSMRemoteObject. This is assigned when needed.
// Assigned at :
// - First push
// - or when the RemoteObject is created by the ProcessModule remotely.
// - or when state is loaded from protobuf messages
vtkTypeUInt32 GlobalID;
// Location flag identify the processes on which the vtkSIObject
// corresponding to this vtkSMRemoteObject exist.
vtkTypeUInt32 Location;
// Allow remote object to be discard for any state management such as
// Undo/Redo, Register/UnRegister (in ProxyManager) and so on...
bool Prototype;
// Field that store the Disable/EnableLocalPushOnly() state information
bool ClientOnlyLocationFlag;
// Convenient method used to return either the local Location or a filtered
// version of it based on the ClientOnlyLocationFlag
vtkTypeUInt32 GetFilteredLocation();
private:
vtkSMRemoteObject(const vtkSMRemoteObject&); // Not implemented
void operator=(const vtkSMRemoteObject&); // Not implemented
char* GlobalIDString;
//ETX
};
/// This defines a manipulator for the vtkClientServerStream that can be used
/// to indicate to the interpreter that the placeholder is to be replaced by
/// the vtkSIProxy instance for the given vtkSMProxy instance.
/// e.g.
/// \code
/// vtkClientServerStream stream;
/// stream << vtkClientServerStream::Invoke
/// << SIOBJECT(proxyA)
/// << "MethodName"
/// << vtkClientServerStream::End;
/// \endcode
/// Will result in calling the vtkSIProxy::MethodName() when the stream in
/// interpreted.
class VTKPVSERVERMANAGERCORE_EXPORT SIOBJECT
{
vtkSMRemoteObject* Reference;
friend VTKPVSERVERMANAGERCORE_EXPORT vtkClientServerStream& operator<<(
vtkClientServerStream& stream, const SIOBJECT& manipulator);
public:
SIOBJECT(vtkSMRemoteObject* rmobject) : Reference(rmobject) {}
};
VTKPVSERVERMANAGERCORE_EXPORT vtkClientServerStream& operator<< (vtkClientServerStream& stream,
const SIOBJECT& manipulator);
#endif // #ifndef vtkSMRemoteObject_h
|