浏览代码

updated addExternalNamespace
namespace index is a result value now

FlorianPalm 9 年之前
父节点
当前提交
a1e67ac0e5
共有 1 个文件被更改,包括 6 次插入9 次删除
  1. 6 9
      src/server/ua_server.c

+ 6 - 9
src/server/ua_server.c

@@ -93,7 +93,7 @@ static const UA_NodeId nodeIdNonHierarchicalReferences = {
 /* Namespace Handling */
 /**********************/
 
-#ifdef UA_ENABLE_EXTERNAL_NAMESPACES
+//#ifdef UA_ENABLE_EXTERNAL_NAMESPACES
 static void UA_ExternalNamespace_init(UA_ExternalNamespace *ens) {
     ens->index = 0;
     UA_String_init(&ens->url);
@@ -116,25 +116,22 @@ static void UA_Server_deleteExternalNamespaces(UA_Server *server) {
 }
 
 UA_StatusCode UA_EXPORT
-UA_Server_addExternalNamespace(UA_Server *server, UA_UInt16 namespaceIndex,
-                               const UA_String *url, UA_ExternalNodeStore *nodeStore) {
+UA_Server_addExternalNamespace(UA_Server *server,
+                               const UA_String *url, UA_ExternalNodeStore *nodeStore,UA_UInt16 *assignedNamespaceIndex) {
 	if (nodeStore == NULL)
 		return UA_STATUSCODE_BADARGUMENTSMISSING;
-	//only allow externalnamespace index equal to next namespaceindex
-	if (namespaceIndex != server->namespacesSize) {
-		return UA_STATUSCODE_BADINDEXRANGEINVALID;
-	}
 	UA_UInt32 size = server->externalNamespacesSize;
 	server->externalNamespaces =
 		UA_realloc(server->externalNamespaces, sizeof(UA_ExternalNamespace) * (size + 1));
 	server->externalNamespaces[size].externalNodeStore = *nodeStore;
-	server->externalNamespaces[size].index = namespaceIndex;
+	server->externalNamespaces[size].index = server->namespacesSize;
+	*assignedNamespaceIndex  = server->namespacesSize;
 	UA_String_copy(url, &server->externalNamespaces[size].url);
 	server->externalNamespacesSize++;
 	UA_Server_addNamespace(server, url);
 	return UA_STATUSCODE_GOOD;
 }
-#endif /* UA_ENABLE_EXTERNAL_NAMESPACES*/
+//#endif /* UA_ENABLE_EXTERNAL_NAMESPACES*/
 
 static UA_UInt16 addNamespaceInternal(UA_Server *server, UA_String *name) {
 	server->namespaces = UA_realloc(server->namespaces,