|
@@ -161,106 +161,106 @@ UA_Server_removeCallback(UA_Server *server, UA_UInt64 callbackId);
|
|
* @param timestamps Which timestamps to return for the attribute.
|
|
* @param timestamps Which timestamps to return for the attribute.
|
|
* @return Returns a DataValue that contains either an error code, or a variant
|
|
* @return Returns a DataValue that contains either an error code, or a variant
|
|
* with the attribute value and the timestamps. */
|
|
* with the attribute value and the timestamps. */
|
|
-UA_DataValue UA_EXPORT
|
|
|
|
|
|
+UA_DataValue UA_EXPORT UA_THREADSAFE
|
|
UA_Server_read(UA_Server *server, const UA_ReadValueId *item,
|
|
UA_Server_read(UA_Server *server, const UA_ReadValueId *item,
|
|
UA_TimestampsToReturn timestamps);
|
|
UA_TimestampsToReturn timestamps);
|
|
|
|
|
|
/* Don't use this function. There are typed versions for every supported
|
|
/* Don't use this function. There are typed versions for every supported
|
|
* attribute. */
|
|
* attribute. */
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
__UA_Server_read(UA_Server *server, const UA_NodeId *nodeId,
|
|
__UA_Server_read(UA_Server *server, const UA_NodeId *nodeId,
|
|
UA_AttributeId attributeId, void *v);
|
|
UA_AttributeId attributeId, void *v);
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readNodeId(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readNodeId(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_NodeId *outNodeId) {
|
|
UA_NodeId *outNodeId) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_NODEID, outNodeId);
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_NODEID, outNodeId);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readNodeClass(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readNodeClass(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_NodeClass *outNodeClass) {
|
|
UA_NodeClass *outNodeClass) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_NODECLASS,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_NODECLASS,
|
|
outNodeClass);
|
|
outNodeClass);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readBrowseName(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readBrowseName(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_QualifiedName *outBrowseName) {
|
|
UA_QualifiedName *outBrowseName) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_BROWSENAME,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_BROWSENAME,
|
|
outBrowseName);
|
|
outBrowseName);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readDisplayName(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readDisplayName(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_LocalizedText *outDisplayName) {
|
|
UA_LocalizedText *outDisplayName) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_DISPLAYNAME,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_DISPLAYNAME,
|
|
outDisplayName);
|
|
outDisplayName);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readDescription(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readDescription(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_LocalizedText *outDescription) {
|
|
UA_LocalizedText *outDescription) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_DESCRIPTION,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_DESCRIPTION,
|
|
outDescription);
|
|
outDescription);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readWriteMask(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readWriteMask(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_UInt32 *outWriteMask) {
|
|
UA_UInt32 *outWriteMask) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_WRITEMASK,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_WRITEMASK,
|
|
outWriteMask);
|
|
outWriteMask);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readIsAbstract(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readIsAbstract(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Boolean *outIsAbstract) {
|
|
UA_Boolean *outIsAbstract) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_ISABSTRACT,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_ISABSTRACT,
|
|
outIsAbstract);
|
|
outIsAbstract);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readSymmetric(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readSymmetric(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Boolean *outSymmetric) {
|
|
UA_Boolean *outSymmetric) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_SYMMETRIC,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_SYMMETRIC,
|
|
outSymmetric);
|
|
outSymmetric);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readInverseName(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readInverseName(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_LocalizedText *outInverseName) {
|
|
UA_LocalizedText *outInverseName) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_INVERSENAME,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_INVERSENAME,
|
|
outInverseName);
|
|
outInverseName);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readContainsNoLoop(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readContainsNoLoop(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Boolean *outContainsNoLoops) {
|
|
UA_Boolean *outContainsNoLoops) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_CONTAINSNOLOOPS,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_CONTAINSNOLOOPS,
|
|
outContainsNoLoops);
|
|
outContainsNoLoops);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readEventNotifier(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readEventNotifier(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Byte *outEventNotifier) {
|
|
UA_Byte *outEventNotifier) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_EVENTNOTIFIER,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_EVENTNOTIFIER,
|
|
outEventNotifier);
|
|
outEventNotifier);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readValue(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readValue(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Variant *outValue) {
|
|
UA_Variant *outValue) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_VALUE, outValue);
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_VALUE, outValue);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readDataType(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readDataType(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_NodeId *outDataType) {
|
|
UA_NodeId *outDataType) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_DATATYPE,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_DATATYPE,
|
|
outDataType);
|
|
outDataType);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readValueRank(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readValueRank(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Int32 *outValueRank) {
|
|
UA_Int32 *outValueRank) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_VALUERANK,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_VALUERANK,
|
|
@@ -268,21 +268,21 @@ UA_Server_readValueRank(UA_Server *server, const UA_NodeId nodeId,
|
|
}
|
|
}
|
|
|
|
|
|
/* Returns a variant with an int32 array */
|
|
/* Returns a variant with an int32 array */
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readArrayDimensions(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readArrayDimensions(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Variant *outArrayDimensions) {
|
|
UA_Variant *outArrayDimensions) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_ARRAYDIMENSIONS,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_ARRAYDIMENSIONS,
|
|
outArrayDimensions);
|
|
outArrayDimensions);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readAccessLevel(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readAccessLevel(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Byte *outAccessLevel) {
|
|
UA_Byte *outAccessLevel) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_ACCESSLEVEL,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_ACCESSLEVEL,
|
|
outAccessLevel);
|
|
outAccessLevel);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readMinimumSamplingInterval(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readMinimumSamplingInterval(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Double *outMinimumSamplingInterval) {
|
|
UA_Double *outMinimumSamplingInterval) {
|
|
return __UA_Server_read(server, &nodeId,
|
|
return __UA_Server_read(server, &nodeId,
|
|
@@ -290,14 +290,14 @@ UA_Server_readMinimumSamplingInterval(UA_Server *server, const UA_NodeId nodeId,
|
|
outMinimumSamplingInterval);
|
|
outMinimumSamplingInterval);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readHistorizing(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readHistorizing(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Boolean *outHistorizing) {
|
|
UA_Boolean *outHistorizing) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_HISTORIZING,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_HISTORIZING,
|
|
outHistorizing);
|
|
outHistorizing);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_readExecutable(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_readExecutable(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Boolean *outExecutable) {
|
|
UA_Boolean *outExecutable) {
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_EXECUTABLE,
|
|
return __UA_Server_read(server, &nodeId, UA_ATTRIBUTEID_EXECUTABLE,
|
|
@@ -330,101 +330,101 @@ UA_Server_readExecutable(UA_Server *server, const UA_NodeId nodeId,
|
|
* See the section on NumericRange for the format used for array
|
|
* See the section on NumericRange for the format used for array
|
|
* ranges.
|
|
* ranges.
|
|
* @return Returns a status code. */
|
|
* @return Returns a status code. */
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
UA_Server_write(UA_Server *server, const UA_WriteValue *value);
|
|
UA_Server_write(UA_Server *server, const UA_WriteValue *value);
|
|
|
|
|
|
/* Don't use this function. There are typed versions with no additional
|
|
/* Don't use this function. There are typed versions with no additional
|
|
* overhead. */
|
|
* overhead. */
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
__UA_Server_write(UA_Server *server, const UA_NodeId *nodeId,
|
|
__UA_Server_write(UA_Server *server, const UA_NodeId *nodeId,
|
|
const UA_AttributeId attributeId,
|
|
const UA_AttributeId attributeId,
|
|
const UA_DataType *attr_type, const void *attr);
|
|
const UA_DataType *attr_type, const void *attr);
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeBrowseName(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeBrowseName(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_QualifiedName browseName) {
|
|
const UA_QualifiedName browseName) {
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_BROWSENAME,
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_BROWSENAME,
|
|
&UA_TYPES[UA_TYPES_QUALIFIEDNAME], &browseName);
|
|
&UA_TYPES[UA_TYPES_QUALIFIEDNAME], &browseName);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeDisplayName(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeDisplayName(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_LocalizedText displayName) {
|
|
const UA_LocalizedText displayName) {
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_DISPLAYNAME,
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_DISPLAYNAME,
|
|
&UA_TYPES[UA_TYPES_LOCALIZEDTEXT], &displayName);
|
|
&UA_TYPES[UA_TYPES_LOCALIZEDTEXT], &displayName);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeDescription(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeDescription(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_LocalizedText description) {
|
|
const UA_LocalizedText description) {
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_DESCRIPTION,
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_DESCRIPTION,
|
|
&UA_TYPES[UA_TYPES_LOCALIZEDTEXT], &description);
|
|
&UA_TYPES[UA_TYPES_LOCALIZEDTEXT], &description);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeWriteMask(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeWriteMask(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_UInt32 writeMask) {
|
|
const UA_UInt32 writeMask) {
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_WRITEMASK,
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_WRITEMASK,
|
|
&UA_TYPES[UA_TYPES_UINT32], &writeMask);
|
|
&UA_TYPES[UA_TYPES_UINT32], &writeMask);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeIsAbstract(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeIsAbstract(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_Boolean isAbstract) {
|
|
const UA_Boolean isAbstract) {
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_ISABSTRACT,
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_ISABSTRACT,
|
|
&UA_TYPES[UA_TYPES_BOOLEAN], &isAbstract);
|
|
&UA_TYPES[UA_TYPES_BOOLEAN], &isAbstract);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeInverseName(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeInverseName(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_LocalizedText inverseName) {
|
|
const UA_LocalizedText inverseName) {
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_INVERSENAME,
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_INVERSENAME,
|
|
&UA_TYPES[UA_TYPES_LOCALIZEDTEXT], &inverseName);
|
|
&UA_TYPES[UA_TYPES_LOCALIZEDTEXT], &inverseName);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeEventNotifier(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeEventNotifier(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_Byte eventNotifier) {
|
|
const UA_Byte eventNotifier) {
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_EVENTNOTIFIER,
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_EVENTNOTIFIER,
|
|
&UA_TYPES[UA_TYPES_BYTE], &eventNotifier);
|
|
&UA_TYPES[UA_TYPES_BYTE], &eventNotifier);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeValue(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeValue(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_Variant value) {
|
|
const UA_Variant value) {
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_VALUE,
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_VALUE,
|
|
&UA_TYPES[UA_TYPES_VARIANT], &value);
|
|
&UA_TYPES[UA_TYPES_VARIANT], &value);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeDataType(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeDataType(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_NodeId dataType) {
|
|
const UA_NodeId dataType) {
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_DATATYPE,
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_DATATYPE,
|
|
&UA_TYPES[UA_TYPES_NODEID], &dataType);
|
|
&UA_TYPES[UA_TYPES_NODEID], &dataType);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeValueRank(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeValueRank(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_Int32 valueRank) {
|
|
const UA_Int32 valueRank) {
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_VALUERANK,
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_VALUERANK,
|
|
&UA_TYPES[UA_TYPES_INT32], &valueRank);
|
|
&UA_TYPES[UA_TYPES_INT32], &valueRank);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeArrayDimensions(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeArrayDimensions(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_Variant arrayDimensions) {
|
|
const UA_Variant arrayDimensions) {
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_ARRAYDIMENSIONS,
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_ARRAYDIMENSIONS,
|
|
&UA_TYPES[UA_TYPES_VARIANT], &arrayDimensions);
|
|
&UA_TYPES[UA_TYPES_VARIANT], &arrayDimensions);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeAccessLevel(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeAccessLevel(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_Byte accessLevel) {
|
|
const UA_Byte accessLevel) {
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_ACCESSLEVEL,
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_ACCESSLEVEL,
|
|
&UA_TYPES[UA_TYPES_BYTE], &accessLevel);
|
|
&UA_TYPES[UA_TYPES_BYTE], &accessLevel);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeMinimumSamplingInterval(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeMinimumSamplingInterval(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_Double miniumSamplingInterval) {
|
|
const UA_Double miniumSamplingInterval) {
|
|
return __UA_Server_write(server, &nodeId,
|
|
return __UA_Server_write(server, &nodeId,
|
|
@@ -433,7 +433,7 @@ UA_Server_writeMinimumSamplingInterval(UA_Server *server, const UA_NodeId nodeId
|
|
&miniumSamplingInterval);
|
|
&miniumSamplingInterval);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeHistorizing(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeHistorizing(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_Boolean historizing) {
|
|
const UA_Boolean historizing) {
|
|
return __UA_Server_write(server, &nodeId,
|
|
return __UA_Server_write(server, &nodeId,
|
|
@@ -442,7 +442,7 @@ UA_Server_writeHistorizing(UA_Server *server, const UA_NodeId nodeId,
|
|
&historizing);
|
|
&historizing);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_writeExecutable(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_writeExecutable(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_Boolean executable) {
|
|
const UA_Boolean executable) {
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_EXECUTABLE,
|
|
return __UA_Server_write(server, &nodeId, UA_ATTRIBUTEID_EXECUTABLE,
|
|
@@ -469,7 +469,7 @@ UA_StatusCode UA_EXPORT
|
|
UA_Server_browseRecursive(UA_Server *server, const UA_BrowseDescription *bd,
|
|
UA_Server_browseRecursive(UA_Server *server, const UA_BrowseDescription *bd,
|
|
size_t *resultsSize, UA_ExpandedNodeId **results);
|
|
size_t *resultsSize, UA_ExpandedNodeId **results);
|
|
|
|
|
|
-UA_BrowsePathResult UA_EXPORT
|
|
|
|
|
|
+UA_BrowsePathResult UA_EXPORT UA_THREADSAFE
|
|
UA_Server_translateBrowsePathToNodeIds(UA_Server *server,
|
|
UA_Server_translateBrowsePathToNodeIds(UA_Server *server,
|
|
const UA_BrowsePath *browsePath);
|
|
const UA_BrowsePath *browsePath);
|
|
|
|
|
|
@@ -778,7 +778,7 @@ typedef struct {
|
|
const UA_DataValue *value);
|
|
const UA_DataValue *value);
|
|
} UA_DataSource;
|
|
} UA_DataSource;
|
|
|
|
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
UA_Server_setVariableNode_dataSource(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_setVariableNode_dataSource(UA_Server *server, const UA_NodeId nodeId,
|
|
const UA_DataSource dataSource);
|
|
const UA_DataSource dataSource);
|
|
|
|
|
|
@@ -903,7 +903,7 @@ typedef UA_StatusCode
|
|
UA_Variant *output);
|
|
UA_Variant *output);
|
|
|
|
|
|
#ifdef UA_ENABLE_METHODCALLS
|
|
#ifdef UA_ENABLE_METHODCALLS
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
UA_Server_setMethodNode_callback(UA_Server *server,
|
|
UA_Server_setMethodNode_callback(UA_Server *server,
|
|
const UA_NodeId methodNodeId,
|
|
const UA_NodeId methodNodeId,
|
|
UA_MethodCallback methodCallback);
|
|
UA_MethodCallback methodCallback);
|
|
@@ -952,7 +952,7 @@ UA_Server_readObjectProperty(UA_Server *server, const UA_NodeId objectId,
|
|
UA_Variant *value);
|
|
UA_Variant *value);
|
|
|
|
|
|
#ifdef UA_ENABLE_METHODCALLS
|
|
#ifdef UA_ENABLE_METHODCALLS
|
|
-UA_CallMethodResult UA_EXPORT
|
|
|
|
|
|
+UA_CallMethodResult UA_EXPORT UA_THREADSAFE
|
|
UA_Server_call(UA_Server *server, const UA_CallMethodRequest *request);
|
|
UA_Server_call(UA_Server *server, const UA_CallMethodRequest *request);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
@@ -999,7 +999,7 @@ UA_EXPORT extern const UA_ViewAttributes UA_ViewAttributes_default;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/* Don't use this function. There are typed versions as inline functions. */
|
|
/* Don't use this function. There are typed versions as inline functions. */
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
__UA_Server_addNode(UA_Server *server, const UA_NodeClass nodeClass,
|
|
__UA_Server_addNode(UA_Server *server, const UA_NodeClass nodeClass,
|
|
const UA_NodeId *requestedNewNodeId,
|
|
const UA_NodeId *requestedNewNodeId,
|
|
const UA_NodeId *parentNodeId,
|
|
const UA_NodeId *parentNodeId,
|
|
@@ -1010,7 +1010,7 @@ __UA_Server_addNode(UA_Server *server, const UA_NodeClass nodeClass,
|
|
const UA_DataType *attributeType,
|
|
const UA_DataType *attributeType,
|
|
void *nodeContext, UA_NodeId *outNewNodeId);
|
|
void *nodeContext, UA_NodeId *outNewNodeId);
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_addVariableNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
UA_Server_addVariableNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId referenceTypeId,
|
|
const UA_NodeId referenceTypeId,
|
|
@@ -1025,7 +1025,7 @@ UA_Server_addVariableNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
nodeContext, outNewNodeId);
|
|
nodeContext, outNewNodeId);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_addVariableTypeNode(UA_Server *server,
|
|
UA_Server_addVariableTypeNode(UA_Server *server,
|
|
const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
@@ -1042,7 +1042,7 @@ UA_Server_addVariableTypeNode(UA_Server *server,
|
|
nodeContext, outNewNodeId);
|
|
nodeContext, outNewNodeId);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_addObjectNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
UA_Server_addObjectNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId referenceTypeId,
|
|
const UA_NodeId referenceTypeId,
|
|
@@ -1057,7 +1057,7 @@ UA_Server_addObjectNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
nodeContext, outNewNodeId);
|
|
nodeContext, outNewNodeId);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_addObjectTypeNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
UA_Server_addObjectTypeNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId referenceTypeId,
|
|
const UA_NodeId referenceTypeId,
|
|
@@ -1071,7 +1071,7 @@ UA_Server_addObjectTypeNode(UA_Server *server, const UA_NodeId requestedNewNodeI
|
|
nodeContext, outNewNodeId);
|
|
nodeContext, outNewNodeId);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_addViewNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
UA_Server_addViewNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId referenceTypeId,
|
|
const UA_NodeId referenceTypeId,
|
|
@@ -1085,7 +1085,7 @@ UA_Server_addViewNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
nodeContext, outNewNodeId);
|
|
nodeContext, outNewNodeId);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_addReferenceTypeNode(UA_Server *server,
|
|
UA_Server_addReferenceTypeNode(UA_Server *server,
|
|
const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
@@ -1101,7 +1101,7 @@ UA_Server_addReferenceTypeNode(UA_Server *server,
|
|
nodeContext, outNewNodeId);
|
|
nodeContext, outNewNodeId);
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_addDataTypeNode(UA_Server *server,
|
|
UA_Server_addDataTypeNode(UA_Server *server,
|
|
const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
@@ -1116,7 +1116,7 @@ UA_Server_addDataTypeNode(UA_Server *server,
|
|
nodeContext, outNewNodeId);
|
|
nodeContext, outNewNodeId);
|
|
}
|
|
}
|
|
|
|
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
UA_Server_addDataSourceVariableNode(UA_Server *server,
|
|
UA_Server_addDataSourceVariableNode(UA_Server *server,
|
|
const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
@@ -1129,7 +1129,7 @@ UA_Server_addDataSourceVariableNode(UA_Server *server,
|
|
|
|
|
|
#ifdef UA_ENABLE_METHODCALLS
|
|
#ifdef UA_ENABLE_METHODCALLS
|
|
|
|
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
UA_Server_addMethodNodeEx(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
UA_Server_addMethodNodeEx(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId referenceTypeId,
|
|
const UA_NodeId referenceTypeId,
|
|
@@ -1143,7 +1143,7 @@ UA_Server_addMethodNodeEx(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
UA_NodeId *outputArgumentsOutNewNodeId,
|
|
UA_NodeId *outputArgumentsOutNewNodeId,
|
|
void *nodeContext, UA_NodeId *outNewNodeId);
|
|
void *nodeContext, UA_NodeId *outNewNodeId);
|
|
|
|
|
|
-static UA_INLINE UA_StatusCode
|
|
|
|
|
|
+static UA_INLINE UA_THREADSAFE UA_StatusCode
|
|
UA_Server_addMethodNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
UA_Server_addMethodNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId parentNodeId, const UA_NodeId referenceTypeId,
|
|
const UA_NodeId parentNodeId, const UA_NodeId referenceTypeId,
|
|
const UA_QualifiedName browseName, const UA_MethodAttributes attr,
|
|
const UA_QualifiedName browseName, const UA_MethodAttributes attr,
|
|
@@ -1194,7 +1194,7 @@ UA_Server_addMethodNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
|
|
* ``VariableAttributes`` for variables, ``ObjectAttributes`` for objects, and
|
|
* ``VariableAttributes`` for variables, ``ObjectAttributes`` for objects, and
|
|
* so on. Missing attributes are taken from the TypeDefinition node if
|
|
* so on. Missing attributes are taken from the TypeDefinition node if
|
|
* applicable. */
|
|
* applicable. */
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
UA_Server_addNode_begin(UA_Server *server, const UA_NodeClass nodeClass,
|
|
UA_Server_addNode_begin(UA_Server *server, const UA_NodeClass nodeClass,
|
|
const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId requestedNewNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
const UA_NodeId parentNodeId,
|
|
@@ -1204,12 +1204,12 @@ UA_Server_addNode_begin(UA_Server *server, const UA_NodeClass nodeClass,
|
|
const void *attr, const UA_DataType *attributeType,
|
|
const void *attr, const UA_DataType *attributeType,
|
|
void *nodeContext, UA_NodeId *outNewNodeId);
|
|
void *nodeContext, UA_NodeId *outNewNodeId);
|
|
|
|
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
UA_Server_addNode_finish(UA_Server *server, const UA_NodeId nodeId);
|
|
UA_Server_addNode_finish(UA_Server *server, const UA_NodeId nodeId);
|
|
|
|
|
|
#ifdef UA_ENABLE_METHODCALLS
|
|
#ifdef UA_ENABLE_METHODCALLS
|
|
|
|
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
UA_Server_addMethodNode_finish(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_addMethodNode_finish(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_MethodCallback method,
|
|
UA_MethodCallback method,
|
|
size_t inputArgumentsSize, const UA_Argument* inputArguments,
|
|
size_t inputArgumentsSize, const UA_Argument* inputArguments,
|
|
@@ -1218,19 +1218,19 @@ UA_Server_addMethodNode_finish(UA_Server *server, const UA_NodeId nodeId,
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/* Deletes a node and optionally all references leading to the node. */
|
|
/* Deletes a node and optionally all references leading to the node. */
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
UA_Server_deleteNode(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Server_deleteNode(UA_Server *server, const UA_NodeId nodeId,
|
|
UA_Boolean deleteReferences);
|
|
UA_Boolean deleteReferences);
|
|
|
|
|
|
/**
|
|
/**
|
|
* Reference Management
|
|
* Reference Management
|
|
* -------------------- */
|
|
* -------------------- */
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
UA_Server_addReference(UA_Server *server, const UA_NodeId sourceId,
|
|
UA_Server_addReference(UA_Server *server, const UA_NodeId sourceId,
|
|
const UA_NodeId refTypeId,
|
|
const UA_NodeId refTypeId,
|
|
const UA_ExpandedNodeId targetId, UA_Boolean isForward);
|
|
const UA_ExpandedNodeId targetId, UA_Boolean isForward);
|
|
|
|
|
|
-UA_StatusCode UA_EXPORT
|
|
|
|
|
|
+UA_StatusCode UA_EXPORT UA_THREADSAFE
|
|
UA_Server_deleteReference(UA_Server *server, const UA_NodeId sourceNodeId,
|
|
UA_Server_deleteReference(UA_Server *server, const UA_NodeId sourceNodeId,
|
|
const UA_NodeId referenceTypeId, UA_Boolean isForward,
|
|
const UA_NodeId referenceTypeId, UA_Boolean isForward,
|
|
const UA_ExpandedNodeId targetNodeId,
|
|
const UA_ExpandedNodeId targetNodeId,
|