|
@@ -151,21 +151,6 @@ UA_Server_forEachChildNodeCall(UA_Server *server, UA_NodeId parentNodeId,
|
|
return retval;
|
|
return retval;
|
|
}
|
|
}
|
|
|
|
|
|
-static UA_StatusCode
|
|
|
|
-addReferenceInternal(UA_Server *server, const UA_NodeId sourceId, const UA_NodeId refTypeId,
|
|
|
|
- const UA_ExpandedNodeId targetId, UA_Boolean isForward) {
|
|
|
|
- UA_AddReferencesItem item;
|
|
|
|
- UA_AddReferencesItem_init(&item);
|
|
|
|
- item.sourceNodeId = sourceId;
|
|
|
|
- item.referenceTypeId = refTypeId;
|
|
|
|
- item.isForward = isForward;
|
|
|
|
- item.targetNodeId = targetId;
|
|
|
|
- UA_RCU_LOCK();
|
|
|
|
- UA_StatusCode retval = Service_AddReferences_single(server, &adminSession, &item);
|
|
|
|
- UA_RCU_UNLOCK();
|
|
|
|
- return retval;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static UA_AddNodesResult
|
|
static UA_AddNodesResult
|
|
addNodeInternal(UA_Server *server, UA_Node *node, const UA_NodeId parentNodeId,
|
|
addNodeInternal(UA_Server *server, UA_Node *node, const UA_NodeId parentNodeId,
|
|
const UA_NodeId referenceTypeId) {
|
|
const UA_NodeId referenceTypeId) {
|
|
@@ -686,8 +671,8 @@ UA_Server * UA_Server_new(const UA_ServerConfig config) {
|
|
addNodeInternal(server, (UA_Node*)aggregates, UA_NODEID_NUMERIC(0, UA_NS0ID_HASCHILD), nodeIdHasSubType);
|
|
addNodeInternal(server, (UA_Node*)aggregates, UA_NODEID_NUMERIC(0, UA_NS0ID_HASCHILD), nodeIdHasSubType);
|
|
|
|
|
|
/* complete bootstrap of hassubtype */
|
|
/* complete bootstrap of hassubtype */
|
|
- addReferenceInternal(server, UA_NODEID_NUMERIC(0, UA_NS0ID_HASCHILD), nodeIdHasSubType,
|
|
|
|
- UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE), true);
|
|
|
|
|
|
+ UA_Server_addReference(server, UA_NODEID_NUMERIC(0, UA_NS0ID_HASCHILD), nodeIdHasSubType,
|
|
|
|
+ UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE), true);
|
|
|
|
|
|
UA_ReferenceTypeNode *hasproperty = UA_NodeStore_newReferenceTypeNode();
|
|
UA_ReferenceTypeNode *hasproperty = UA_NodeStore_newReferenceTypeNode();
|
|
copyNames((UA_Node*)hasproperty, "HasProperty");
|
|
copyNames((UA_Node*)hasproperty, "HasProperty");
|
|
@@ -897,8 +882,8 @@ UA_Server * UA_Server_new(const UA_ServerConfig config) {
|
|
UA_RCU_LOCK();
|
|
UA_RCU_LOCK();
|
|
UA_NodeStore_insert(server->nodestore, (UA_Node*)root);
|
|
UA_NodeStore_insert(server->nodestore, (UA_Node*)root);
|
|
UA_RCU_UNLOCK();
|
|
UA_RCU_UNLOCK();
|
|
- addReferenceInternal(server, UA_NODEID_NUMERIC(0, UA_NS0ID_ROOTFOLDER), nodeIdHasTypeDefinition,
|
|
|
|
- UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE), true);
|
|
|
|
|
|
+ UA_Server_addReference(server, UA_NODEID_NUMERIC(0, UA_NS0ID_ROOTFOLDER), nodeIdHasTypeDefinition,
|
|
|
|
+ UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE), true);
|
|
|
|
|
|
UA_ObjectNode *objects = UA_NodeStore_newObjectNode();
|
|
UA_ObjectNode *objects = UA_NodeStore_newObjectNode();
|
|
copyNames((UA_Node*)objects, "Objects");
|
|
copyNames((UA_Node*)objects, "Objects");
|
|
@@ -917,32 +902,32 @@ UA_Server * UA_Server_new(const UA_ServerConfig config) {
|
|
referencetypes->nodeId.identifier.numeric = UA_NS0ID_REFERENCETYPESFOLDER;
|
|
referencetypes->nodeId.identifier.numeric = UA_NS0ID_REFERENCETYPESFOLDER;
|
|
addNodeInternalWithType(server, (UA_Node*)referencetypes, UA_NODEID_NUMERIC(0, UA_NS0ID_TYPESFOLDER),
|
|
addNodeInternalWithType(server, (UA_Node*)referencetypes, UA_NODEID_NUMERIC(0, UA_NS0ID_TYPESFOLDER),
|
|
nodeIdOrganizes, nodeIdFolderType);
|
|
nodeIdOrganizes, nodeIdFolderType);
|
|
- addReferenceInternal(server, UA_NODEID_NUMERIC(0, UA_NS0ID_REFERENCETYPESFOLDER), nodeIdOrganizes,
|
|
|
|
- UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_REFERENCES), true);
|
|
|
|
|
|
+ UA_Server_addReference(server, UA_NODEID_NUMERIC(0, UA_NS0ID_REFERENCETYPESFOLDER), nodeIdOrganizes,
|
|
|
|
+ UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_REFERENCES), true);
|
|
|
|
|
|
UA_ObjectNode *datatypes = UA_NodeStore_newObjectNode();
|
|
UA_ObjectNode *datatypes = UA_NodeStore_newObjectNode();
|
|
copyNames((UA_Node*)datatypes, "DataTypes");
|
|
copyNames((UA_Node*)datatypes, "DataTypes");
|
|
datatypes->nodeId.identifier.numeric = UA_NS0ID_DATATYPESFOLDER;
|
|
datatypes->nodeId.identifier.numeric = UA_NS0ID_DATATYPESFOLDER;
|
|
addNodeInternalWithType(server, (UA_Node*)datatypes, UA_NODEID_NUMERIC(0, UA_NS0ID_TYPESFOLDER),
|
|
addNodeInternalWithType(server, (UA_Node*)datatypes, UA_NODEID_NUMERIC(0, UA_NS0ID_TYPESFOLDER),
|
|
nodeIdOrganizes, nodeIdFolderType);
|
|
nodeIdOrganizes, nodeIdFolderType);
|
|
- addReferenceInternal(server, UA_NODEID_NUMERIC(0, UA_NS0ID_DATATYPESFOLDER), nodeIdOrganizes,
|
|
|
|
- UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_BASEDATATYPE), true);
|
|
|
|
|
|
+ UA_Server_addReference(server, UA_NODEID_NUMERIC(0, UA_NS0ID_DATATYPESFOLDER), nodeIdOrganizes,
|
|
|
|
+ UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_BASEDATATYPE), true);
|
|
|
|
|
|
UA_ObjectNode *variabletypes = UA_NodeStore_newObjectNode();
|
|
UA_ObjectNode *variabletypes = UA_NodeStore_newObjectNode();
|
|
copyNames((UA_Node*)variabletypes, "VariableTypes");
|
|
copyNames((UA_Node*)variabletypes, "VariableTypes");
|
|
variabletypes->nodeId.identifier.numeric = UA_NS0ID_VARIABLETYPESFOLDER;
|
|
variabletypes->nodeId.identifier.numeric = UA_NS0ID_VARIABLETYPESFOLDER;
|
|
addNodeInternalWithType(server, (UA_Node*)variabletypes, UA_NODEID_NUMERIC(0, UA_NS0ID_TYPESFOLDER),
|
|
addNodeInternalWithType(server, (UA_Node*)variabletypes, UA_NODEID_NUMERIC(0, UA_NS0ID_TYPESFOLDER),
|
|
nodeIdOrganizes, nodeIdFolderType);
|
|
nodeIdOrganizes, nodeIdFolderType);
|
|
- addReferenceInternal(server, UA_NODEID_NUMERIC(0, UA_NS0ID_VARIABLETYPESFOLDER), nodeIdOrganizes,
|
|
|
|
- UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_BASEVARIABLETYPE), true);
|
|
|
|
|
|
+ UA_Server_addReference(server, UA_NODEID_NUMERIC(0, UA_NS0ID_VARIABLETYPESFOLDER), nodeIdOrganizes,
|
|
|
|
+ UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_BASEVARIABLETYPE), true);
|
|
|
|
|
|
UA_ObjectNode *objecttypes = UA_NodeStore_newObjectNode();
|
|
UA_ObjectNode *objecttypes = UA_NodeStore_newObjectNode();
|
|
copyNames((UA_Node*)objecttypes, "ObjectTypes");
|
|
copyNames((UA_Node*)objecttypes, "ObjectTypes");
|
|
objecttypes->nodeId.identifier.numeric = UA_NS0ID_OBJECTTYPESFOLDER;
|
|
objecttypes->nodeId.identifier.numeric = UA_NS0ID_OBJECTTYPESFOLDER;
|
|
addNodeInternalWithType(server, (UA_Node*)objecttypes, UA_NODEID_NUMERIC(0, UA_NS0ID_TYPESFOLDER),
|
|
addNodeInternalWithType(server, (UA_Node*)objecttypes, UA_NODEID_NUMERIC(0, UA_NS0ID_TYPESFOLDER),
|
|
nodeIdOrganizes, nodeIdFolderType);
|
|
nodeIdOrganizes, nodeIdFolderType);
|
|
- addReferenceInternal(server, UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTTYPESFOLDER), nodeIdOrganizes,
|
|
|
|
- UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE), true);
|
|
|
|
|
|
+ UA_Server_addReference(server, UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTTYPESFOLDER), nodeIdOrganizes,
|
|
|
|
+ UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE), true);
|
|
|
|
|
|
UA_ObjectNode *eventtypes = UA_NodeStore_newObjectNode();
|
|
UA_ObjectNode *eventtypes = UA_NodeStore_newObjectNode();
|
|
copyNames((UA_Node*)eventtypes, "EventTypes");
|
|
copyNames((UA_Node*)eventtypes, "EventTypes");
|
|
@@ -1312,8 +1297,8 @@ UA_Server * UA_Server_new(const UA_ServerConfig config) {
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER), nodeIdHasProperty,
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER), nodeIdHasProperty,
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE));
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE));
|
|
/*
|
|
/*
|
|
- addReferenceInternal(server, UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_VENDORSERVERINFO),
|
|
|
|
- nodeIdHasTypeDefinition, UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_VENDORSERVERINFOTYPE), true);
|
|
|
|
|
|
+ UA_Server_addReference(server, UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_VENDORSERVERINFO),
|
|
|
|
+ nodeIdHasTypeDefinition, UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_VENDORSERVERINFOTYPE), true);
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
|
|
@@ -1324,8 +1309,8 @@ UA_Server * UA_Server_new(const UA_ServerConfig config) {
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER), nodeIdHasProperty,
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER), nodeIdHasProperty,
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE));
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE));
|
|
/*
|
|
/*
|
|
- addReferenceInternal(server, UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_SERVERREDUNDANCY),
|
|
|
|
- nodeIdHasTypeDefinition, UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_SERVERREDUNDANCYTYPE), true);
|
|
|
|
|
|
+ UA_Server_addReference(server, UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_SERVERREDUNDANCY),
|
|
|
|
+ nodeIdHasTypeDefinition, UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_SERVERREDUNDANCYTYPE), true);
|
|
*/
|
|
*/
|
|
|
|
|
|
UA_VariableNode *redundancySupport = UA_NodeStore_newVariableNode();
|
|
UA_VariableNode *redundancySupport = UA_NodeStore_newVariableNode();
|