open62541 1.3.12
Open source implementation of OPC UA
Loading...
Searching...
No Matches
ua_server_internal.h File Reference
#include <open62541/server.h>
#include <open62541/plugin/nodestore.h>
#include "ua_connection_internal.h"
#include "ua_session.h"
#include "ua_server_async.h"
#include "ua_timer.h"
#include "ua_util_internal.h"
#include "ziptree.h"
#include "ua_pubsub_manager.h"
#include "ua_discovery_manager.h"
#include "ua_subscription.h"

Go to the source code of this file.

Data Structures

struct  UA_LocalMonitoredItem
 
struct  channel_entry
 
struct  session_list_entry
 
struct  UA_Server
 
struct  RefEntry
 
struct  RefTree
 
struct  BrowseOpts
 

Macros

#define UA_REFTREE_INITIAL_SIZE   16
 
#define UA_NODESTORE_NEW(server, nodeClass)    server->config.nodestore.newNode(server->config.nodestore.context, nodeClass)
 
#define UA_NODESTORE_DELETE(server, node)    server->config.nodestore.deleteNode(server->config.nodestore.context, node)
 
#define UA_NODESTORE_GET(server, nodeid)    server->config.nodestore.getNode(server->config.nodestore.context, nodeid)
 
#define UA_NODESTORE_RELEASE(server, node)    server->config.nodestore.releaseNode(server->config.nodestore.context, node)
 
#define UA_NODESTORE_GETCOPY(server, nodeid, outnode)
 
#define UA_NODESTORE_INSERT(server, node, addedNodeId)
 
#define UA_NODESTORE_REPLACE(server, node)    server->config.nodestore.replaceNode(server->config.nodestore.context, node)
 
#define UA_NODESTORE_REMOVE(server, nodeId)    server->config.nodestore.removeNode(server->config.nodestore.context, nodeId)
 
#define UA_NODESTORE_GETREFERENCETYPEID(server, index)
 

Typedefs

typedef struct channel_entry channel_entry
 
typedef struct session_list_entry session_list_entry
 
typedef UA_StatusCode(* UA_EditNodeCallback) (UA_Server *, UA_Session *, UA_Node *node, void *)
 
typedef void(* UA_ServiceOperation) (UA_Server *server, UA_Session *session, const void *context, const void *requestOperation, void *responseOperation)
 
typedef struct RefEntry RefEntry
 
typedef struct RefHead RefHead
 

Enumerations

enum  UA_DiagnosticEvent
 
enum  UA_ServerLifecycle
 

Functions

const UA_ReferenceTargetUA_NodeReferenceKind_findTarget (const UA_NodeReferenceKind *rk, const UA_ExpandedNodeId *targetId)
 
void UA_Server_deleteSecureChannels (UA_Server *server)
 
void UA_Server_cleanupTimedOutSecureChannels (UA_Server *server, UA_DateTime nowMonotonic)
 
UA_StatusCode UA_Server_createSecureChannel (UA_Server *server, UA_Connection *connection)
 
UA_StatusCode UA_Server_configSecureChannel (void *application, UA_SecureChannel *channel, const UA_AsymmetricAlgorithmSecurityHeader *asymHeader)
 
UA_StatusCode sendServiceFault (UA_SecureChannel *channel, UA_UInt32 requestId, UA_UInt32 requestHandle, UA_StatusCode statusCode)
 
void UA_Server_closeSecureChannel (UA_Server *server, UA_SecureChannel *channel, UA_DiagnosticEvent event)
 
UA_SecurityPolicygetSecurityPolicyByUri (const UA_Server *server, const UA_ByteString *securityPolicyUri)
 
UA_StatusCode getNamespaceByName (UA_Server *server, const UA_String namespaceUri, size_t *foundIndex)
 
UA_StatusCode getNamespaceByIndex (UA_Server *server, const size_t namespaceIndex, UA_String *foundUri)
 
UA_StatusCode getBoundSession (UA_Server *server, const UA_SecureChannel *channel, const UA_NodeId *token, UA_Session **session)
 
UA_StatusCode UA_Server_createSession (UA_Server *server, UA_SecureChannel *channel, const UA_CreateSessionRequest *request, UA_Session **session)
 
void UA_Server_removeSession (UA_Server *server, session_list_entry *sentry, UA_DiagnosticEvent event)
 
UA_StatusCode UA_Server_removeSessionByToken (UA_Server *server, const UA_NodeId *token, UA_DiagnosticEvent event)
 
void UA_Server_cleanupSessions (UA_Server *server, UA_DateTime nowMonotonic)
 
UA_SessiongetSessionByToken (UA_Server *server, const UA_NodeId *token)
 
UA_SessionUA_Server_getSessionById (UA_Server *server, const UA_NodeId *sessionId)
 
UA_StatusCode UA_Server_editNode (UA_Server *server, UA_Session *session, const UA_NodeId *nodeId, UA_EditNodeCallback callback, void *data)
 
void setupNs1Uri (UA_Server *server)
 
UA_UInt16 addNamespace (UA_Server *server, const UA_String name)
 
UA_Boolean UA_Node_hasSubTypeOrInstances (const UA_NodeHead *head)
 
UA_Boolean isNodeInTree (UA_Server *server, const UA_NodeId *leafNode, const UA_NodeId *nodeToFind, const UA_ReferenceTypeSet *relevantRefs)
 
UA_Boolean isNodeInTree_singleRef (UA_Server *server, const UA_NodeId *leafNode, const UA_NodeId *nodeToFind, const UA_Byte relevantRefTypeIndex)
 
UA_StatusCode browseRecursive (UA_Server *server, size_t startNodesSize, const UA_NodeId *startNodes, UA_BrowseDirection browseDirection, const UA_ReferenceTypeSet *refTypes, UA_UInt32 nodeClassMask, UA_Boolean includeStartNodes, size_t *resultsSize, UA_ExpandedNodeId **results)
 
UA_StatusCode referenceTypeIndices (UA_Server *server, const UA_NodeId *refType, UA_ReferenceTypeSet *indices, UA_Boolean includeSubtypes)
 
UA_StatusCode getParentTypeAndInterfaceHierarchy (UA_Server *server, const UA_NodeId *typeNode, UA_NodeId **typeHierarchy, size_t *typeHierarchySize)
 
UA_StatusCode getAllInterfaceChildNodeIds (UA_Server *server, const UA_NodeId *objectNode, const UA_NodeId *objectTypeNode, UA_NodeId **interfaceChildNodes, size_t *interfaceChildNodesSize)
 
const UA_NodegetNodeType (UA_Server *server, const UA_NodeHead *nodeHead)
 
UA_StatusCode sendResponse (UA_Server *server, UA_Session *session, UA_SecureChannel *channel, UA_UInt32 requestId, UA_Response *response, const UA_DataType *responseType)
 
UA_StatusCode UA_Server_processServiceOperations (UA_Server *server, UA_Session *session, UA_ServiceOperation operationCallback, const void *context, const size_t *requestOperations, const UA_DataType *requestOperationsType, size_t *responseOperations, const UA_DataType *responseOperationsType)
 
UA_StatusCode deleteNode (UA_Server *server, const UA_NodeId nodeId, UA_Boolean deleteReferences)
 
UA_StatusCode addNode (UA_Server *server, const UA_NodeClass nodeClass, const UA_NodeId *requestedNewNodeId, const UA_NodeId *parentNodeId, const UA_NodeId *referenceTypeId, const UA_QualifiedName browseName, const UA_NodeId *typeDefinition, const UA_NodeAttributes *attr, const UA_DataType *attributeType, void *nodeContext, UA_NodeId *outNewNodeId)
 
UA_StatusCode addRef (UA_Server *server, UA_Session *session, const UA_NodeId *sourceId, const UA_NodeId *referenceTypeId, const UA_NodeId *targetId, UA_Boolean forward)
 
UA_StatusCode setVariableNode_dataSource (UA_Server *server, const UA_NodeId nodeId, const UA_DataSource dataSource)
 
UA_StatusCode writeAttribute (UA_Server *server, UA_Session *session, const UA_NodeId *nodeId, const UA_AttributeId attributeId, const void *attr, const UA_DataType *attr_type)
 
UA_DataValue readAttribute (UA_Server *server, const UA_ReadValueId *item, UA_TimestampsToReturn timestamps)
 
UA_StatusCode readWithReadValue (UA_Server *server, const UA_NodeId *nodeId, const UA_AttributeId attributeId, void *v)
 
UA_StatusCode readObjectProperty (UA_Server *server, const UA_NodeId objectId, const UA_QualifiedName propertyName, UA_Variant *value)
 
UA_BrowsePathResult translateBrowsePathToNodeIds (UA_Server *server, const UA_BrowsePath *browsePath)
 
void monitoredItem_sampleCallback (UA_Server *server, UA_MonitoredItem *monitoredItem)
 
UA_SubscriptionUA_Server_getSubscriptionById (UA_Server *server, UA_UInt32 subscriptionId)
 
UA_StatusCode triggerEvent (UA_Server *server, const UA_NodeId eventNodeId, const UA_NodeId origin, UA_ByteString *outEventId, const UA_Boolean deleteEventNode)
 
UA_StatusCode filterEvent (UA_Server *server, UA_Session *session, const UA_NodeId *eventNode, UA_EventFilter *filter, UA_EventFieldList *efl, UA_EventFilterResult *result)
 
UA_BrowsePathResult browseSimplifiedBrowsePath (UA_Server *server, const UA_NodeId origin, size_t browsePathSize, const UA_QualifiedName *browsePath)
 
UA_StatusCode writeObjectProperty (UA_Server *server, const UA_NodeId objectId, const UA_QualifiedName propertyName, const UA_Variant value)
 
UA_StatusCode getNodeContext (UA_Server *server, UA_NodeId nodeId, void **nodeContext)
 
UA_StatusCode setNodeContext (UA_Server *server, UA_NodeId nodeId, void *nodeContext)
 
void removeCallback (UA_Server *server, UA_UInt64 callbackId)
 
UA_StatusCode changeRepeatedCallbackInterval (UA_Server *server, UA_UInt64 callbackId, UA_Double interval_ms)
 
UA_StatusCode addRepeatedCallback (UA_Server *server, UA_ServerCallback callback, void *data, UA_Double interval_ms, UA_UInt64 *callbackId)
 
UA_StatusCode register_server_with_discovery_server (UA_Server *server, void *client, const UA_Boolean isUnregister, const char *semaphoreFilePath)
 
 ZIP_HEAD (RefHead, RefEntry)
 
UA_StatusCode RefTree_init (RefTree *rt)
 
void RefTree_clear (RefTree *rt)
 
UA_StatusCode RefTree_addNodeId (RefTree *rt, const UA_NodeId *target, UA_Boolean *duplicate)
 
UA_Boolean RefTree_contains (RefTree *rt, const UA_ExpandedNodeId *target)
 
UA_Boolean RefTree_containsNodeId (RefTree *rt, const UA_NodeId *target)
 
void ReadWithNode (const UA_Node *node, UA_Server *server, UA_Session *session, UA_TimestampsToReturn timestampsToReturn, const UA_ReadValueId *id, UA_DataValue *v)
 
UA_StatusCode readValueAttribute (UA_Server *server, UA_Session *session, const UA_VariableNode *vn, UA_DataValue *v)
 
UA_Boolean compatibleValue (UA_Server *server, UA_Session *session, const UA_NodeId *targetDataTypeId, UA_Int32 targetValueRank, size_t targetArrayDimensionsSize, const UA_UInt32 *targetArrayDimensions, const UA_Variant *value, const UA_NumericRange *range, const char **reason)
 
UA_Boolean compatibleDataTypes (UA_Server *server, const UA_NodeId *dataType, const UA_NodeId *constraintDataType)
 
void adjustValueType (UA_Server *server, UA_Variant *value, const UA_NodeId *targetDataTypeId)
 
UA_Boolean compatibleValueDataType (UA_Server *server, const UA_DataType *dataType, const UA_NodeId *constraintDataType)
 
UA_Boolean compatibleArrayDimensions (size_t constraintArrayDimensionsSize, const UA_UInt32 *constraintArrayDimensions, size_t testArrayDimensionsSize, const UA_UInt32 *testArrayDimensions)
 
UA_Boolean compatibleValueArrayDimensions (const UA_Variant *value, size_t targetArrayDimensionsSize, const UA_UInt32 *targetArrayDimensions)
 
UA_Boolean compatibleValueRankArrayDimensions (UA_Server *server, UA_Session *session, UA_Int32 valueRank, size_t arrayDimensionsSize)
 
UA_Boolean compatibleValueRanks (UA_Int32 valueRank, UA_Int32 constraintValueRank)
 
void Operation_Browse (UA_Server *server, UA_Session *session, const UA_UInt32 *maxrefs, const UA_BrowseDescription *descr, UA_BrowseResult *result)
 
UA_DataValue UA_Server_readWithSession (UA_Server *server, UA_Session *session, const UA_ReadValueId *item, UA_TimestampsToReturn timestampsToReturn)
 
UA_StatusCode AddNode_raw (UA_Server *server, UA_Session *session, void *nodeContext, const UA_AddNodesItem *item, UA_NodeId *outNewNodeId)
 
UA_StatusCode AddNode_addRefs (UA_Server *server, UA_Session *session, const UA_NodeId *nodeId, const UA_NodeId *parentNodeId, const UA_NodeId *referenceTypeId, const UA_NodeId *typeDefinitionId)
 
UA_StatusCode AddNode_finish (UA_Server *server, UA_Session *session, const UA_NodeId *nodeId)
 
UA_StatusCode UA_Server_initNS0 (UA_Server *server)
 
UA_StatusCode writeNs0VariableArray (UA_Server *server, UA_UInt32 id, void *v, size_t length, const UA_DataType *type)
 
const UA_NodeUA_NODESTORE_GETFROMREF (UA_Server *server, UA_NodePointer target)
 

Variables

const struct aa_head refNameTree
 

Macro Definition Documentation

◆ UA_REFTREE_INITIAL_SIZE

#define UA_REFTREE_INITIAL_SIZE   16

RefTree.

A RefTree is a sorted set of NodeIds that ensures we consider each node just once. It holds a single array for both the ExpandedNodeIds and the entries of a tree-structure for fast lookup. A single realloc operation (with some pointer repairing) can be used to increase the capacity of the RefTree.

When the RefTree is complete, the tree-part at the end of the targets array can be ignored / cut away to use it as a simple ExpandedNodeId array.

The layout of the targets array is as follows:

| Targets [ExpandedNodeId, n times] | Tree [RefEntry, n times] |

Definition at line 468 of file ua_server_internal.h.

◆ UA_NODESTORE_NEW

#define UA_NODESTORE_NEW ( server,
nodeClass )    server->config.nodestore.newNode(server->config.nodestore.context, nodeClass)

Nodestore Access Macros.

Definition at line 644 of file ua_server_internal.h.

◆ UA_NODESTORE_DELETE

#define UA_NODESTORE_DELETE ( server,
node )    server->config.nodestore.deleteNode(server->config.nodestore.context, node)

Definition at line 647 of file ua_server_internal.h.

◆ UA_NODESTORE_GET

#define UA_NODESTORE_GET ( server,
nodeid )    server->config.nodestore.getNode(server->config.nodestore.context, nodeid)

Definition at line 650 of file ua_server_internal.h.

◆ UA_NODESTORE_RELEASE

#define UA_NODESTORE_RELEASE ( server,
node )    server->config.nodestore.releaseNode(server->config.nodestore.context, node)

Definition at line 657 of file ua_server_internal.h.

◆ UA_NODESTORE_GETCOPY

#define UA_NODESTORE_GETCOPY ( server,
nodeid,
outnode )
Value:
server->config.nodestore.getNodeCopy(server->config.nodestore.context, \
nodeid, outnode)

Definition at line 660 of file ua_server_internal.h.

◆ UA_NODESTORE_INSERT

#define UA_NODESTORE_INSERT ( server,
node,
addedNodeId )
Value:
server->config.nodestore.insertNode(server->config.nodestore.context, \
node, addedNodeId)

Definition at line 664 of file ua_server_internal.h.

◆ UA_NODESTORE_REPLACE

#define UA_NODESTORE_REPLACE ( server,
node )    server->config.nodestore.replaceNode(server->config.nodestore.context, node)

Definition at line 668 of file ua_server_internal.h.

◆ UA_NODESTORE_REMOVE

#define UA_NODESTORE_REMOVE ( server,
nodeId )    server->config.nodestore.removeNode(server->config.nodestore.context, nodeId)

Definition at line 671 of file ua_server_internal.h.

◆ UA_NODESTORE_GETREFERENCETYPEID

#define UA_NODESTORE_GETREFERENCETYPEID ( server,
index )
Value:
server->config.nodestore.getReferenceTypeId(server->config.nodestore.context, \
index)

Definition at line 674 of file ua_server_internal.h.

Typedef Documentation

◆ channel_entry

typedef struct channel_entry channel_entry

◆ session_list_entry

typedef struct session_list_entry session_list_entry

◆ UA_EditNodeCallback

typedef UA_StatusCode(* UA_EditNodeCallback) (UA_Server *, UA_Session *, UA_Node *node, void *)

Node Handling.

Calls the callback with the node retrieved from the nodestore on top of the stack. Either a copy or the original node for in-situ editing. Depends on multithreading and the nodestore.

Definition at line 251 of file ua_server_internal.h.

◆ UA_ServiceOperation

typedef void(* UA_ServiceOperation) (UA_Server *server, UA_Session *session, const void *context, const void *requestOperation, void *responseOperation)

Many services come as an array of operations.

This function generalizes the processing of the operations.

Definition at line 331 of file ua_server_internal.h.

◆ RefEntry

typedef struct RefEntry RefEntry

◆ RefHead

typedef struct RefHead RefHead

Definition at line 477 of file ua_server_internal.h.

Enumeration Type Documentation

◆ UA_DiagnosticEvent

Enumerator
UA_DIAGNOSTICEVENT_CLOSE 
UA_DIAGNOSTICEVENT_REJECT 
UA_DIAGNOSTICEVENT_SECURITYREJECT 
UA_DIAGNOSTICEVENT_TIMEOUT 
UA_DIAGNOSTICEVENT_ABORT 
UA_DIAGNOSTICEVENT_PURGE 

Definition at line 59 of file ua_server_internal.h.

◆ UA_ServerLifecycle

Enumerator
UA_SERVERLIFECYCLE_FRESH 
UA_SERVERLIFECYLE_RUNNING 

Definition at line 80 of file ua_server_internal.h.

Function Documentation

◆ UA_NodeReferenceKind_findTarget()

const UA_ReferenceTarget * UA_NodeReferenceKind_findTarget ( const UA_NodeReferenceKind * rk,
const UA_ExpandedNodeId * targetId )

◆ UA_Server_deleteSecureChannels()

void UA_Server_deleteSecureChannels ( UA_Server * server)

SecureChannel Handling.

Remove all securechannels

◆ UA_Server_cleanupTimedOutSecureChannels()

void UA_Server_cleanupTimedOutSecureChannels ( UA_Server * server,
UA_DateTime nowMonotonic )

Remove timed out securechannels with a delayed callback.

So all currently scheduled jobs with a pointer to a securechannel can finish first.

◆ UA_Server_createSecureChannel()

UA_StatusCode UA_Server_createSecureChannel ( UA_Server * server,
UA_Connection * connection )

◆ UA_Server_configSecureChannel()

UA_StatusCode UA_Server_configSecureChannel ( void * application,
UA_SecureChannel * channel,
const UA_AsymmetricAlgorithmSecurityHeader * asymHeader )

◆ sendServiceFault()

UA_StatusCode sendServiceFault ( UA_SecureChannel * channel,
UA_UInt32 requestId,
UA_UInt32 requestHandle,
UA_StatusCode statusCode )

◆ UA_Server_closeSecureChannel()

void UA_Server_closeSecureChannel ( UA_Server * server,
UA_SecureChannel * channel,
UA_DiagnosticEvent event )

◆ getSecurityPolicyByUri()

UA_SecurityPolicy * getSecurityPolicyByUri ( const UA_Server * server,
const UA_ByteString * securityPolicyUri )

Gets the a pointer to the context of a security policy supported by the server matched by the security policy uri.

◆ getNamespaceByName()

UA_StatusCode getNamespaceByName ( UA_Server * server,
const UA_String namespaceUri,
size_t * foundIndex )

Session Handling.

◆ getNamespaceByIndex()

UA_StatusCode getNamespaceByIndex ( UA_Server * server,
const size_t namespaceIndex,
UA_String * foundUri )

◆ getBoundSession()

UA_StatusCode getBoundSession ( UA_Server * server,
const UA_SecureChannel * channel,
const UA_NodeId * token,
UA_Session ** session )

◆ UA_Server_createSession()

UA_StatusCode UA_Server_createSession ( UA_Server * server,
UA_SecureChannel * channel,
const UA_CreateSessionRequest * request,
UA_Session ** session )

◆ UA_Server_removeSession()

void UA_Server_removeSession ( UA_Server * server,
session_list_entry * sentry,
UA_DiagnosticEvent event )

◆ UA_Server_removeSessionByToken()

UA_StatusCode UA_Server_removeSessionByToken ( UA_Server * server,
const UA_NodeId * token,
UA_DiagnosticEvent event )

◆ UA_Server_cleanupSessions()

void UA_Server_cleanupSessions ( UA_Server * server,
UA_DateTime nowMonotonic )

◆ getSessionByToken()

UA_Session * getSessionByToken ( UA_Server * server,
const UA_NodeId * token )

◆ UA_Server_getSessionById()

UA_Session * UA_Server_getSessionById ( UA_Server * server,
const UA_NodeId * sessionId )

◆ UA_Server_editNode()

UA_StatusCode UA_Server_editNode ( UA_Server * server,
UA_Session * session,
const UA_NodeId * nodeId,
UA_EditNodeCallback callback,
void * data )

◆ setupNs1Uri()

void setupNs1Uri ( UA_Server * server)

Utility Functions.

◆ addNamespace()

UA_UInt16 addNamespace ( UA_Server * server,
const UA_String name )

◆ UA_Node_hasSubTypeOrInstances()

UA_Boolean UA_Node_hasSubTypeOrInstances ( const UA_NodeHead * head)

◆ isNodeInTree()

UA_Boolean isNodeInTree ( UA_Server * server,
const UA_NodeId * leafNode,
const UA_NodeId * nodeToFind,
const UA_ReferenceTypeSet * relevantRefs )

Recursively searches "upwards" in the tree following specific reference types.

◆ isNodeInTree_singleRef()

UA_Boolean isNodeInTree_singleRef ( UA_Server * server,
const UA_NodeId * leafNode,
const UA_NodeId * nodeToFind,
const UA_Byte relevantRefTypeIndex )

Convenience function with just a single ReferenceTypeIndex.

◆ browseRecursive()

UA_StatusCode browseRecursive ( UA_Server * server,
size_t startNodesSize,
const UA_NodeId * startNodes,
UA_BrowseDirection browseDirection,
const UA_ReferenceTypeSet * refTypes,
UA_UInt32 nodeClassMask,
UA_Boolean includeStartNodes,
size_t * resultsSize,
UA_ExpandedNodeId ** results )

Returns an array with the hierarchy of nodes.

The start nodes can be returned as well. The returned array starts at the leaf and continues "upwards" or "downwards". Duplicate entries are removed.

◆ referenceTypeIndices()

UA_StatusCode referenceTypeIndices ( UA_Server * server,
const UA_NodeId * refType,
UA_ReferenceTypeSet * indices,
UA_Boolean includeSubtypes )

Get the bitfield indices of a ReferenceType and possibly its subtypes.

refType must point to a ReferenceTypeNode.

◆ getParentTypeAndInterfaceHierarchy()

UA_StatusCode getParentTypeAndInterfaceHierarchy ( UA_Server * server,
const UA_NodeId * typeNode,
UA_NodeId ** typeHierarchy,
size_t * typeHierarchySize )

Returns the recursive type and interface hierarchy of the node.

◆ getAllInterfaceChildNodeIds()

UA_StatusCode getAllInterfaceChildNodeIds ( UA_Server * server,
const UA_NodeId * objectNode,
const UA_NodeId * objectTypeNode,
UA_NodeId ** interfaceChildNodes,
size_t * interfaceChildNodesSize )

Returns the recursive interface hierarchy of the node.

◆ getNodeType()

const UA_Node * getNodeType ( UA_Server * server,
const UA_NodeHead * nodeHead )

Returns the type node from the node on the stack top.

The type node is pushed on the stack and returned.

◆ sendResponse()

UA_StatusCode sendResponse ( UA_Server * server,
UA_Session * session,
UA_SecureChannel * channel,
UA_UInt32 requestId,
UA_Response * response,
const UA_DataType * responseType )

◆ UA_Server_processServiceOperations()

UA_StatusCode UA_Server_processServiceOperations ( UA_Server * server,
UA_Session * session,
UA_ServiceOperation operationCallback,
const void * context,
const size_t * requestOperations,
const UA_DataType * requestOperationsType,
size_t * responseOperations,
const UA_DataType * responseOperationsType )

◆ deleteNode()

UA_StatusCode deleteNode ( UA_Server * server,
const UA_NodeId nodeId,
UA_Boolean deleteReferences )

Internal function calls, without locks.

◆ addNode()

UA_StatusCode addNode ( UA_Server * server,
const UA_NodeClass nodeClass,
const UA_NodeId * requestedNewNodeId,
const UA_NodeId * parentNodeId,
const UA_NodeId * referenceTypeId,
const UA_QualifiedName browseName,
const UA_NodeId * typeDefinition,
const UA_NodeAttributes * attr,
const UA_DataType * attributeType,
void * nodeContext,
UA_NodeId * outNewNodeId )

◆ addRef()

UA_StatusCode addRef ( UA_Server * server,
UA_Session * session,
const UA_NodeId * sourceId,
const UA_NodeId * referenceTypeId,
const UA_NodeId * targetId,
UA_Boolean forward )

◆ setVariableNode_dataSource()

UA_StatusCode setVariableNode_dataSource ( UA_Server * server,
const UA_NodeId nodeId,
const UA_DataSource dataSource )

◆ writeAttribute()

UA_StatusCode writeAttribute ( UA_Server * server,
UA_Session * session,
const UA_NodeId * nodeId,
const UA_AttributeId attributeId,
const void * attr,
const UA_DataType * attr_type )

◆ readAttribute()

UA_DataValue readAttribute ( UA_Server * server,
const UA_ReadValueId * item,
UA_TimestampsToReturn timestamps )

◆ readWithReadValue()

UA_StatusCode readWithReadValue ( UA_Server * server,
const UA_NodeId * nodeId,
const UA_AttributeId attributeId,
void * v )

◆ readObjectProperty()

UA_StatusCode readObjectProperty ( UA_Server * server,
const UA_NodeId objectId,
const UA_QualifiedName propertyName,
UA_Variant * value )

◆ translateBrowsePathToNodeIds()

UA_BrowsePathResult translateBrowsePathToNodeIds ( UA_Server * server,
const UA_BrowsePath * browsePath )

◆ monitoredItem_sampleCallback()

void monitoredItem_sampleCallback ( UA_Server * server,
UA_MonitoredItem * monitoredItem )

◆ UA_Server_getSubscriptionById()

UA_Subscription * UA_Server_getSubscriptionById ( UA_Server * server,
UA_UInt32 subscriptionId )

◆ triggerEvent()

UA_StatusCode triggerEvent ( UA_Server * server,
const UA_NodeId eventNodeId,
const UA_NodeId origin,
UA_ByteString * outEventId,
const UA_Boolean deleteEventNode )

◆ filterEvent()

UA_StatusCode filterEvent ( UA_Server * server,
UA_Session * session,
const UA_NodeId * eventNode,
UA_EventFilter * filter,
UA_EventFieldList * efl,
UA_EventFilterResult * result )

Filters the given event with the given filter and writes the results into a notification.

◆ browseSimplifiedBrowsePath()

UA_BrowsePathResult browseSimplifiedBrowsePath ( UA_Server * server,
const UA_NodeId origin,
size_t browsePathSize,
const UA_QualifiedName * browsePath )

◆ writeObjectProperty()

UA_StatusCode writeObjectProperty ( UA_Server * server,
const UA_NodeId objectId,
const UA_QualifiedName propertyName,
const UA_Variant value )

◆ getNodeContext()

UA_StatusCode getNodeContext ( UA_Server * server,
UA_NodeId nodeId,
void ** nodeContext )

◆ setNodeContext()

UA_StatusCode setNodeContext ( UA_Server * server,
UA_NodeId nodeId,
void * nodeContext )

◆ removeCallback()

void removeCallback ( UA_Server * server,
UA_UInt64 callbackId )

◆ changeRepeatedCallbackInterval()

UA_StatusCode changeRepeatedCallbackInterval ( UA_Server * server,
UA_UInt64 callbackId,
UA_Double interval_ms )

◆ addRepeatedCallback()

UA_StatusCode addRepeatedCallback ( UA_Server * server,
UA_ServerCallback callback,
void * data,
UA_Double interval_ms,
UA_UInt64 * callbackId )

◆ register_server_with_discovery_server()

UA_StatusCode register_server_with_discovery_server ( UA_Server * server,
void * client,
const UA_Boolean isUnregister,
const char * semaphoreFilePath )

◆ ZIP_HEAD()

ZIP_HEAD ( RefHead ,
RefEntry  )

◆ RefTree_init()

UA_StatusCode RefTree_init ( RefTree * rt)

◆ RefTree_clear()

void RefTree_clear ( RefTree * rt)

◆ RefTree_addNodeId()

UA_StatusCode RefTree_addNodeId ( RefTree * rt,
const UA_NodeId * target,
UA_Boolean * duplicate )

◆ RefTree_contains()

UA_Boolean RefTree_contains ( RefTree * rt,
const UA_ExpandedNodeId * target )

◆ RefTree_containsNodeId()

UA_Boolean RefTree_containsNodeId ( RefTree * rt,
const UA_NodeId * target )

◆ ReadWithNode()

void ReadWithNode ( const UA_Node * node,
UA_Server * server,
UA_Session * session,
UA_TimestampsToReturn timestampsToReturn,
const UA_ReadValueId * id,
UA_DataValue * v )

Check Information Model Consistency.

Read a node attribute in the context of a "checked-out" node. So the attribute will not be copied when possible. The variant then points into the node and has UA_VARIANT_DATA_NODELETE set.

◆ readValueAttribute()

UA_StatusCode readValueAttribute ( UA_Server * server,
UA_Session * session,
const UA_VariableNode * vn,
UA_DataValue * v )

◆ compatibleValue()

UA_Boolean compatibleValue ( UA_Server * server,
UA_Session * session,
const UA_NodeId * targetDataTypeId,
UA_Int32 targetValueRank,
size_t targetArrayDimensionsSize,
const UA_UInt32 * targetArrayDimensions,
const UA_Variant * value,
const UA_NumericRange * range,
const char ** reason )

Test whether the value matches a variable definition given by.

  • datatype
  • valueranke
  • array dimensions. Sometimes it can be necessary to transform the content of the value, e.g. byte array to bytestring or uint32 to some enum. If editableValue is non-NULL, we try to create a matching variant that points to the original data.

The reason is set whenever the return value is false

◆ compatibleDataTypes()

UA_Boolean compatibleDataTypes ( UA_Server * server,
const UA_NodeId * dataType,
const UA_NodeId * constraintDataType )

Is the DataType compatible.

◆ adjustValueType()

void adjustValueType ( UA_Server * server,
UA_Variant * value,
const UA_NodeId * targetDataTypeId )

Set to the target type if compatible.

◆ compatibleValueDataType()

UA_Boolean compatibleValueDataType ( UA_Server * server,
const UA_DataType * dataType,
const UA_NodeId * constraintDataType )

Is the Value compatible with the DataType? Can perform additional checks compared to compatibleDataTypes.

◆ compatibleArrayDimensions()

UA_Boolean compatibleArrayDimensions ( size_t constraintArrayDimensionsSize,
const UA_UInt32 * constraintArrayDimensions,
size_t testArrayDimensionsSize,
const UA_UInt32 * testArrayDimensions )

◆ compatibleValueArrayDimensions()

UA_Boolean compatibleValueArrayDimensions ( const UA_Variant * value,
size_t targetArrayDimensionsSize,
const UA_UInt32 * targetArrayDimensions )

◆ compatibleValueRankArrayDimensions()

UA_Boolean compatibleValueRankArrayDimensions ( UA_Server * server,
UA_Session * session,
UA_Int32 valueRank,
size_t arrayDimensionsSize )

◆ compatibleValueRanks()

UA_Boolean compatibleValueRanks ( UA_Int32 valueRank,
UA_Int32 constraintValueRank )

◆ Operation_Browse()

void Operation_Browse ( UA_Server * server,
UA_Session * session,
const UA_UInt32 * maxrefs,
const UA_BrowseDescription * descr,
UA_BrowseResult * result )

◆ UA_Server_readWithSession()

UA_DataValue UA_Server_readWithSession ( UA_Server * server,
UA_Session * session,
const UA_ReadValueId * item,
UA_TimestampsToReturn timestampsToReturn )

◆ AddNode_raw()

UA_StatusCode AddNode_raw ( UA_Server * server,
UA_Session * session,
void * nodeContext,
const UA_AddNodesItem * item,
UA_NodeId * outNewNodeId )

AddNodes Begin and Finish.

Creates a new node in the nodestore.

◆ AddNode_addRefs()

UA_StatusCode AddNode_addRefs ( UA_Server * server,
UA_Session * session,
const UA_NodeId * nodeId,
const UA_NodeId * parentNodeId,
const UA_NodeId * referenceTypeId,
const UA_NodeId * typeDefinitionId )

Check the reference to the parent node; Add references.

◆ AddNode_finish()

UA_StatusCode AddNode_finish ( UA_Server * server,
UA_Session * session,
const UA_NodeId * nodeId )

Type-check type-definition; Run the constructors.

◆ UA_Server_initNS0()

UA_StatusCode UA_Server_initNS0 ( UA_Server * server)

Create Namespace 0.

◆ writeNs0VariableArray()

UA_StatusCode writeNs0VariableArray ( UA_Server * server,
UA_UInt32 id,
void * v,
size_t length,
const UA_DataType * type )

◆ UA_NODESTORE_GETFROMREF()

const UA_Node * UA_NODESTORE_GETFROMREF ( UA_Server * server,
UA_NodePointer target )

Returns NULL if the target is an external Reference (per the ExpandedNodeId)

Variable Documentation

◆ refNameTree

const struct aa_head refNameTree
extern

References Handling.