C++ UA Server SDK  1.5.1.326
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
NodeManager Class Referenceabstract

Interface definition of NodeManager used for browsing and managing the address space. More...

#include <nodemanager.h>

Inherits UaServerApplicationModule.

Inherited by NodeManagerUaNode.

Public Member Functions

 NodeManager ()
 construction
 
virtual ~NodeManager ()
 destruction
 
virtual UaStatus sessionOpened (Session *)
 Notifies the node manager that a new session was opened. More...
 
virtual UaStatus sessionActivated (Session *)
 Notifies the node manager that a session was activated. More...
 
virtual UaStatus sessionClosed (Session *)
 Notifies the node manager that a session was closed. More...
 
virtual UaStatus browse (const ServiceContext &serviceContext, BrowseContext &browseContext, UaReferenceDescriptions &References)=0
 Discover the references of a specified node of a view. More...
 
virtual UaStatus translateBrowsePathToNodeId (const ServiceContext &serviceContext, const UaNodeId &startingNode, UaRelativePath &relativePath, UaBrowsePathTargets &browsePathTargets)=0
 Translates a relative browse path to a node id. More...
 
virtual VariableHandlegetVariableHandle (Session *pSession, VariableHandle::ServiceType serviceType, OpcUa_NodeId *pNodeId, OpcUa_Int32 AttributeId) const =0
 Get the variable handle for the passed node Id. More...
 
virtual HistoryVariableHandlegetHistoryVariableHandle (Session *pSession, HistoryVariableHandle::ServiceType serviceType, OpcUa_NodeId *pNodeId, UaStatus &result) const
 Get the history variable handle for the passed node Id. More...
 
virtual UaStatus getEventManagers (Session *pSession, OpcUa_NodeId *pNodeId, OpcUa_EventFilter *eventFilter, EventManagerArray &eventManagers) const
 Get a list of EventManager interfaces for an event notifier. More...
 
virtual MethodHandlegetMethodHandle (Session *pSession, OpcUa_NodeId *pObjectNodeId, OpcUa_NodeId *pMethodNodeId, UaStatus &result) const
 Get the method handle for the passed node Id. More...
 
virtual UaStatus addNode (const ServiceContext &serviceContext, const UaNodeId &parentNodeId, const UaNodeId &referenceTypeId, const UaNodeId &requestedNewNodeId, const UaQualifiedName &browseName, OpcUa_NodeClass nodeClass, const UaExtensionObject &nodeAttributes, const UaNodeId &typeDefinition, UaNodeId &addedNodeId)
 Add node to the NodeManager. More...
 
virtual UaStatus addReference (const ServiceContext &serviceContext, const UaNodeId &sourceNodeId, const UaNodeId &referenceTypeId, OpcUa_Boolean isForward, const UaNodeId &targetNodeId, OpcUa_NodeClass targetNodeClass)
 Add reference to the NodeManager. More...
 
virtual UaStatus deleteNode (const ServiceContext &serviceContext, const UaNodeId &nodeId, OpcUa_Boolean deleteTargetReference)
 Delete node from the NodeManager. More...
 
virtual UaStatus deleteReference (const ServiceContext &serviceContext, const UaNodeId &sourceNodeId, const UaNodeId &referenceTypeId, OpcUa_Boolean isForward, const UaNodeId &targetNodeId, OpcUa_Boolean deleteBidirectional)
 Delete reference from the NodeManager. More...
 
virtual
NodeManagerCrossReferences
getNodeManagerCrossReferences ()
 Get the interface NodeManagerCrossReferences if available. More...
 
virtual NodeManagerConfiggetNodeManagerConfig ()
 Get the interface NodeManagerConfig if available. More...
 
virtual NodeManagerUaNodegetNodeManagerUaNode ()
 Get the interface NodeManagerUaNode if available. More...
 
- Public Member Functions inherited from UaServerApplicationModule
virtual UaStatus startUp (ServerManager *pServerManager)=0
 Start up module. More...
 
virtual UaStatus shutDown ()=0
 Shut down module. More...
 

Detailed Description

Interface definition of NodeManager used for browsing and managing the address space.

The NodeManager interface provides the browsing capability for the nodes managed by the NodeManager instance. It returns also the responsible IOManager and MethodManager for a passed node. The interface provides optional methods to add nodes and references and to delete nodes and references. It is not possible to create shallow copies of this Interface.

Member Function Documentation

UaStatus NodeManager::addNode ( const ServiceContext serviceContext,
const UaNodeId parentNodeId,
const UaNodeId referenceTypeId,
const UaNodeId requestedNewNodeId,
const UaQualifiedName browseName,
OpcUa_NodeClass  nodeClass,
const UaExtensionObject nodeAttributes,
const UaNodeId typeDefinition,
UaNodeId addedNodeId 
)
virtual

Add node to the NodeManager.

Parameters
serviceContextGeneral context for the service calls containing information like the session object, return diagnostic mask and timeout hint.
parentNodeIdThe NodeId of the parent node of the node to create.
referenceTypeIdType of the reference to create from the source node to the new node.
requestedNewNodeIdThe new NodeId of the requested node.
browseNameThe browse name of the node to create.
nodeClassThe node class of the node to create.
nodeAttributesAll other attribute values of the node to create.
typeDefinitionThe type definition of the node to create.
addedNodeIdThe NodeId of the newly created node.
Returns
Error code

Reimplemented in NodeManagerRoot.

UaStatus NodeManager::addReference ( const ServiceContext serviceContext,
const UaNodeId sourceNodeId,
const UaNodeId referenceTypeId,
OpcUa_Boolean  isForward,
const UaNodeId targetNodeId,
OpcUa_NodeClass  targetNodeClass 
)
virtual

Add reference to the NodeManager.

Parameters
serviceContextGeneral context for the service calls containing information like the session object, return diagnostic mask and timeout hint.
sourceNodeIdThe NodeId of source node for the reference to create.
referenceTypeIdType of the reference to create from the source node to the target node.
isForwardIndicates if the reference is in forward direction from the source to the target node.
targetNodeIdThe NodeId of target node for the reference to create.
targetNodeClassThe NodeClass of the target Node.
Returns
Error code

Reimplemented in NodeManagerRoot.

virtual UaStatus NodeManager::browse ( const ServiceContext serviceContext,
BrowseContext browseContext,
UaReferenceDescriptions References 
)
pure virtual

Discover the references of a specified node of a view.

This method is used to return a list of references and target nodes for the passed node to browse for the services Browse and BrowseNext.

Parameters
serviceContextGeneral context for the service call containing information like the session object, return diagnostic mask and timeout hint.
browseContextBrowse context for the first browse or the following browse next calls with continuation point.
ReferencesArray of ReferenceDescription results for the browsed node.
Returns
Error code

Implemented in NodeManagerUaNode, and NodeManagerRoot.

UaStatus NodeManager::deleteNode ( const ServiceContext serviceContext,
const UaNodeId nodeId,
OpcUa_Boolean  deleteTargetReference 
)
virtual

Delete node from the NodeManager.

Parameters
serviceContextGeneral context for the service calls containing information like the session object, return diagnostic mask and timeout hint.
nodeIdThe NodeId of the node to delete.
deleteTargetReferenceIndicates if the inverse references in the target nodes must be deleted
Returns
Error code

Reimplemented in NodeManagerRoot.

UaStatus NodeManager::deleteReference ( const ServiceContext serviceContext,
const UaNodeId sourceNodeId,
const UaNodeId referenceTypeId,
OpcUa_Boolean  isForward,
const UaNodeId targetNodeId,
OpcUa_Boolean  deleteBidirectional 
)
virtual

Delete reference from the NodeManager.

Parameters
serviceContextGeneral context for the service calls containing information like the session object, return diagnostic mask and timeout hint.
sourceNodeIdThe NodeId of source node for the reference to delete.
referenceTypeIdType of the reference to delete from the source node to the target node.
isForwardIndicates if the reference is in forward direction from the source to the target node.
targetNodeIdThe NodeId of target node for the reference to delete.
deleteBidirectionalFlag indicating if the reference should be deleted in both directions.
Returns
Error code

Reimplemented in NodeManagerRoot.

UaStatus NodeManager::getEventManagers ( Session pSession,
OpcUa_NodeId pNodeId,
OpcUa_EventFilter eventFilter,
EventManagerArray eventManagers 
) const
virtual

Get a list of EventManager interfaces for an event notifier.

This method is used to get a list of EventManager interfaces for the passed object node which must be an event notifier. Since the event notifier can be the root for an event hierarchy with different event sources and different EventManagers. The NodeManager can filter based on the passed event filter. But this can be done also later by the EventManager.

Parameters
pSessionInterface to the Session context for the method call
pNodeIdNodeId of the requested event notifier node. The pointer to the NodeId is only valid during this call.
eventFilterEvent filter defined by the client. The pointer to the event filter is only valid during this call. The event filter is also passed to EventManager::beginStartMonitoring() in the EventMonitoringContextCreate.
eventManagersThe list of EventManager interfaces for the passed event notifier. This list is returned by the NodeManager.
Returns
Error code

Reimplemented in NodeManagerRoot, and NodeManagerBase.

HistoryVariableHandle * NodeManager::getHistoryVariableHandle ( Session pSession,
HistoryVariableHandle::ServiceType  serviceType,
OpcUa_NodeId pNodeId,
UaStatus result 
) const
virtual

Get the history variable handle for the passed node Id.

This method is used to get the HistoryVariableHandle for a node used to access the related HistoryManager in the services ReadHistory and UpdateHistory.

Parameters
pSessionInterface to the Session context for the method call
serviceTypeService type enumerator
pNodeIdNodeId of the requested node. The pointer to the NodeId is only valid during this call.
resultthe result of the current Operation.
Returns
the history variable handle for the passed node Id.

Reimplemented in NodeManagerRoot, NodeManagerBase, and NodeManagerNS1.

MethodHandle * NodeManager::getMethodHandle ( Session pSession,
OpcUa_NodeId pObjectNodeId,
OpcUa_NodeId pMethodNodeId,
UaStatus result 
) const
virtual

Get the method handle for the passed node Id.

This method is used to get the MethodHandle for a Object node / Method combination used to access the related MethodManager in the service Call.

Parameters
pSessionInterface to the Session context for the method call
pObjectNodeIdThe NodeId of the requested Object. The pointer to the NodeId is only valid during this call.
pMethodNodeIdThe NodeId of the requested Method. The pointer to the NodeId is only valid during this call.
resultThe result of the current Operation.
Returns
Error code

Reimplemented in NodeManagerUaNode, and NodeManagerRoot.

NodeManagerConfig * NodeManager::getNodeManagerConfig ( )
virtual

Get the interface NodeManagerConfig if available.

Returns
the NodeManagerConfig interface pointer.

Reimplemented in NodeManagerUaNode, and NodeManagerRoot.

NodeManagerCrossReferences * NodeManager::getNodeManagerCrossReferences ( )
virtual

Get the interface NodeManagerCrossReferences if available.

Returns
the NodeManagerCrossReferences interface pointer.

Reimplemented in NodeManagerUaNode, and NodeManagerRoot.

NodeManagerUaNode * NodeManager::getNodeManagerUaNode ( )
virtual

Get the interface NodeManagerUaNode if available.

Returns
the NodeManagerUaNode interface pointer.

Reimplemented in NodeManagerUaNode.

virtual VariableHandle* NodeManager::getVariableHandle ( Session pSession,
VariableHandle::ServiceType  serviceType,
OpcUa_NodeId pNodeId,
OpcUa_Int32  AttributeId 
) const
pure virtual

Get the variable handle for the passed node Id.

This method is used to get the VariableHandle for a node used to access the related IOManager in the services Read, Write and CreateMonitoredItems. The provided VariableHandle is reference counted. The reference count is 1 after initial creation of the object. The SDK will release its reference after the transaction is finished. If the VariableHandle is stored in an application specific object, the reference counter must be incremented to keep the one reference. If this stored pointer is used to return the VariableHandle in following getVariableHandle calls, the reference counter must be incremented before returning the pointer.

Parameters
pSessionInterface to the Session context for the method call. The Session object is reference counted. The Session is valid until the client has closed the Session or it timed out. If the Session pointer is stored in user objects, these objects must add their own reference.
serviceTypeService type enumerator
pNodeIdNodeId of the requested node. The pointer to the NodeId is only valid during this call.
AttributeIdAttributeId of the requested node
Returns
The variable handle for the passed node Id and attribute Id combination.

Implemented in NodeManagerUaNode, and NodeManagerRoot.

virtual UaStatus NodeManager::sessionActivated ( Session )
inlinevirtual

Notifies the node manager that a session was activated.

The method can be overwritten in a derived class if the implementation needs to know which sessions are active

Returns
Error code

Reimplemented in NodeManagerRoot.

virtual UaStatus NodeManager::sessionClosed ( Session )
inlinevirtual

Notifies the node manager that a session was closed.

The method can be overwritten in a derived class if the implementation needs to know which sessions are active

Returns
Error code

Reimplemented in NodeManagerRoot.

virtual UaStatus NodeManager::sessionOpened ( Session )
inlinevirtual

Notifies the node manager that a new session was opened.

This information can be used to establish a connection to an underlying system if Session specific (e.g. user specific) connections are necessary. The method can be overwritten in a derived class if the implementation needs to know which sessions are active

Returns
Error code

Reimplemented in NodeManagerRoot.

virtual UaStatus NodeManager::translateBrowsePathToNodeId ( const ServiceContext serviceContext,
const UaNodeId startingNode,
UaRelativePath relativePath,
UaBrowsePathTargets browsePathTargets 
)
pure virtual

Translates a relative browse path to a node id.

This method is used to request the Server to translate a browse paths to a NodeId for the target node. There could be a list of target nodes but the normal case is a single result for a starting node and a path.

The browse path is constructed of a starting Node and a RelativePath. The specified starting Node identifies the Node from which the RelativePath is based. The RelativePath contains a sequence of BrowseNames. The relative path parameter contains a list of relative path elements and the current position of the translate process since the translate can affect more than one node manager and the implementation of this method is only required to process relative path elements and starting nodes managed by the current node manager instance but it may also resolve the full path for all involved NodeManagers.

If not all path elements can be resolved by the NodeManager, the call can be returned with the last resolved target node and the remaining index provided in browsePathTargets, or the NodeManager calls translateBrowsePathToNodeId() on the NodeManager that is responsible for the next node in the path.

If the path cannot be resolved completely but the next node in the path is in another server, the method must return OpcUa_UncertainReferenceOutOfServer.

If a path results in more than one result, the implementation of this method must resolve the full path for all possible results.

Parameters
serviceContextGeneral context for the service calls containing information like the session object, return diagnostic mask and timeout hint.
startingNodeStarting node from where the relative path is defined.
relativePathRelative path from the starting node to the searched node including the current position of the translate process.
See also
UaRelativePath provides more details.
Parameters
browsePathTargetsAll result target nodes for the browse path or the partial result for the already resolved part of the path.
Returns
Error code

Implemented in NodeManagerUaNode, and NodeManagerRoot.


The documentation for this class was generated from the following files: