Browse Source

cosmetics: renamed exampleServer into server, exampleClient into client, moved demonodes to userspace (server.c)

Stasik0 10 years ago
parent
commit
e9f4560205
6 changed files with 100 additions and 101 deletions
  1. 11 11
      .travis.yml
  2. 24 33
      CMakeLists.txt
  3. 34 0
      examples/server.c
  4. 4 0
      include/ua_server.h
  5. 0 57
      src/server/ua_server.c
  6. 27 0
      src/server/ua_server_addressspace.c

+ 11 - 11
.travis.yml

@@ -33,29 +33,29 @@ script:
 - mkdir -p build
 - cd build
 - echo "Cross compile release build for MinGW 32 bit"
-- cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw32.cmake -DENABLE_AMALGAMATION=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLESERVER=ON -DBUILD_EXAMPLECLIENT=ON ..
+- cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw32.cmake -DENABLE_AMALGAMATION=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_server=ON -DBUILD_client=ON ..
 - make -j
 - cp ../README.md .
-- zip open62541-win32.zip README.md exampleServer_static.exe exampleServer.exe exampleClient.exe exampleClient_static.exe libopen62541.dll libopen62541.dll.a open62541.h open62541.c
+- zip open62541-win32.zip README.md server_static.exe server.exe client.exe client_static.exe libopen62541.dll libopen62541.dll.a open62541.h open62541.c
 - cp open62541-win32.zip ..
 - cd .. && rm build -rf && mkdir -p build && cd build
 - echo "Cross compile release build for MinGW 64 bit"
-- cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw64.cmake -DENABLE_AMALGAMATION=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLESERVER=ON -DBUILD_EXAMPLECLIENT=ON ..
+- cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw64.cmake -DENABLE_AMALGAMATION=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_server=ON -DBUILD_client=ON ..
 - make -j
 - cp ../README.md .
-- zip open62541-win64.zip README.md exampleServer_static.exe exampleServer.exe exampleClient.exe exampleClient_static.exe libopen62541.dll libopen62541.dll.a open62541.h open62541.c
+- zip open62541-win64.zip README.md server_static.exe server.exe client.exe client_static.exe libopen62541.dll libopen62541.dll.a open62541.h open62541.c
 - cp open62541-win64.zip ..
 - cd .. && rm build -rf && mkdir -p build && cd build
 - echo "Cross compile release build for 32-bit linux"
-- cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-gcc-m32.cmake -DENABLE_AMALGAMATION=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLESERVER=ON -DBUILD_EXAMPLECLIENT=ON ..
+- cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-gcc-m32.cmake -DENABLE_AMALGAMATION=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_server=ON -DBUILD_client=ON ..
 - make -j
-- tar -pczf open62541-linux32.tar.gz ../README.md exampleServer_static exampleServer exampleClient_static exampleClient libopen62541.so open62541.h open62541.c
+- tar -pczf open62541-linux32.tar.gz ../README.md server_static server client_static client libopen62541.so open62541.h open62541.c
 - cp open62541-linux32.tar.gz ..
 - cd .. && rm build -rf && mkdir -p build && cd build
 - echo "Compile release build for 64-bit linux"
-- cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_AMALGAMATION=ON -DBUILD_EXAMPLESERVER=ON -DBUILD_EXAMPLECLIENT=ON ..
+- cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_AMALGAMATION=ON -DBUILD_server=ON -DBUILD_client=ON ..
 - make -j
-- tar -pczf open62541-linux64.tar.gz ../README.md exampleServer_static exampleServer exampleClient_static exampleClient libopen62541.so open62541.h open62541.c
+- tar -pczf open62541-linux64.tar.gz ../README.md server_static server client_static client libopen62541.so open62541.h open62541.c
 - cp open62541-linux64.tar.gz ..
 - cp open62541.h .. #copy single file-release
 - cp open62541.c .. #copy single file-release
@@ -67,7 +67,7 @@ script:
 - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
 - sudo update-alternatives --config gcc
 - echo "Compile multithreaded version"
-- cmake -DENABLE_MULTITHREADING=ON -DBUILD_EXAMPLESERVER=ON ..
+- cmake -DENABLE_MULTITHREADING=ON -DBUILD_server=ON ..
 - make -j
 - cd .. && rm build -rf && mkdir -p build && cd build
 - echo "Debug build and unit tests (64 bit)"
@@ -91,9 +91,9 @@ before_deploy:
 - git clone https://github.com/raspberrypi/tools
 - cd -
 - export PATH=$PATH:~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/
-- cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-rpi64.cmake -DENABLE_AMALGAMATION=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLESERVER=ON -DBUILD_EXAMPLECLIENT=ON ..
+- cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-rpi64.cmake -DENABLE_AMALGAMATION=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_server=ON -DBUILD_client=ON ..
 - make -j
-- tar -pczf open62541-raspberrypi.tar.gz ../README.md exampleServer_static exampleServer exampleClient_static exampleClient libopen62541.so open62541.h open62541.c
+- tar -pczf open62541-raspberrypi.tar.gz ../README.md server_static server client_static client libopen62541.so open62541.h open62541.c
 - cp open62541-raspberrypi.tar.gz ..
 - cd ..
 deploy:

+ 24 - 33
CMakeLists.txt

@@ -154,12 +154,6 @@ if(EXTENSION_STATELESS)
 	add_definitions(-DEXTENSION_STATELESS)
 endif()
 
-option(BUILD_DEMO_NODESET "Create a demo node for every built-in datatype" OFF)
-if(BUILD_DEMO_NODESET)
-	message(STATUS "Enabling demo nodeset")
-	add_definitions(-DDEMO_NODESET)
-endif()
-
 option(ENABLE_AMALGAMATION "Concatenate the library to a single file open62541.h/.c" OFF)
 add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/open62541.h ${PROJECT_BINARY_DIR}/open62541.c
                PRE_BUILD
@@ -211,23 +205,23 @@ endif()
 option(BUILD_EXAMPLESERVER "Build the example server" OFF)
 if(BUILD_EXAMPLESERVER)
     set(server_source $<TARGET_OBJECTS:open62541-object>)
-    add_executable(exampleServer_static examples/server.c ${server_source})
-    add_executable(exampleServer_simple examples/server_simple.c ${server_source})
-    add_executable(exampleServer examples/server.c)
-	target_link_libraries(exampleServer open62541)
+    add_executable(server_static examples/server.c ${server_source})
+    add_executable(server_simple examples/server_simple.c ${server_source})
+    add_executable(server examples/server.c)
+	target_link_libraries(server open62541)
     if(WIN32)
-        target_link_libraries(exampleServer_static ws2_32)
-        target_link_libraries(exampleServer_simple ws2_32)
-        target_link_libraries(exampleServer ws2_32)
+        target_link_libraries(server_static ws2_32)
+        target_link_libraries(server_simple ws2_32)
+        target_link_libraries(server ws2_32)
     else()
-        target_link_libraries(exampleServer_static rt)
-        target_link_libraries(exampleServer_simple rt)
-        target_link_libraries(exampleServer rt)
+        target_link_libraries(server_static rt)
+        target_link_libraries(server_simple rt)
+        target_link_libraries(server rt)
     endif()
     if(ENABLE_MULTITHREADING)
-        target_link_libraries(exampleServer_static urcu-cds urcu urcu-common pthread)
-        target_link_libraries(exampleServer_simple urcu-cds urcu urcu-common pthread)
-        target_link_libraries(exampleServer urcu-cds urcu urcu-common pthread)
+        target_link_libraries(server_static urcu-cds urcu urcu-common pthread)
+        target_link_libraries(server_simple urcu-cds urcu urcu-common pthread)
+        target_link_libraries(server urcu-cds urcu urcu-common pthread)
     endif()
 endif()
 
@@ -249,27 +243,24 @@ option(BUILD_EXAMPLECLIENT "Build a test client" OFF)
 if(BUILD_EXAMPLECLIENT)
 	add_definitions(-DBENCHMARK)
     set(client_source $<TARGET_OBJECTS:open62541-object>)
-    #if(NOT ENABLE_AMALGAMATION)
-    #    list(APPEND client_source examples/networklayer_tcp.c examples/logger_stdout.c)
-    #endif()
-	add_executable(exampleClient_static examples/client.c ${client_source})
-	add_executable(exampleClient examples/client.c)
-	target_link_libraries(exampleClient open62541)
+	add_executable(client_static examples/client.c ${client_source})
+	add_executable(client examples/client.c)
+	target_link_libraries(client open62541)
     if(WIN32)
-        target_link_libraries(exampleClient_static ws2_32)
-        target_link_libraries(exampleClient ws2_32)
+        target_link_libraries(client_static ws2_32)
+        target_link_libraries(client ws2_32)
     else()
-        target_link_libraries(exampleClient_static rt)
-        target_link_libraries(exampleClient rt)
+        target_link_libraries(client_static rt)
+        target_link_libraries(client rt)
     endif()
     if(ENABLE_MULTITHREADING)
-        target_link_libraries(exampleClient_static urcu-cds urcu urcu-common pthread)
-        target_link_libraries(exampleClient urcu-cds urcu urcu-common pthread)
+        target_link_libraries(client_static urcu-cds urcu urcu-common pthread)
+        target_link_libraries(client urcu-cds urcu urcu-common pthread)
     endif()
     if(EXTENSION_STATELESS)
-        add_executable(statelessClient examples/client_stateless.c ${client_source})
+        add_executable(client_stateless examples/client_stateless.c ${client_source})
         if(ENABLE_MULTITHREADING)
-            target_link_libraries(statelessClient urcu-cds urcu urcu-common pthread)
+            target_link_libraries(client_stateless urcu-cds urcu urcu-common pthread)
         endif()
     endif()
 endif()

+ 34 - 0
examples/server.c

@@ -267,6 +267,40 @@ int main(int argc, char** argv) {
     UA_Server_addVariableNode(server, myIntegerVariant, myIntegerName,
                               myIntegerNodeId, parentNodeId, parentReferenceNodeId);
 
+   /**************/
+   /* Demo Nodes */
+   /**************/
+
+#define DEMOID 50000
+   UA_Server_addObjectNode(server,UA_QUALIFIEDNAME(1, "Demo"), UA_NODEID_NUMERIC(1, DEMOID), UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER), UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES), UA_NODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE));
+
+#define SCALARID 50001
+   UA_Server_addObjectNode(server,UA_QUALIFIEDNAME(1, "Scalar"), UA_NODEID_NUMERIC(1, SCALARID), UA_NODEID_NUMERIC(1, DEMOID), UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES), UA_NODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE));
+
+#define ARRAYID 50002
+   UA_Server_addObjectNode(server,UA_QUALIFIEDNAME(1, "Array"), UA_NODEID_NUMERIC(1, ARRAYID), UA_NODEID_NUMERIC(1, DEMOID), UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES), UA_NODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE));
+
+   UA_UInt32 id = 51000; //running id in namespace 0
+   for(UA_UInt32 type = 0; UA_IS_BUILTIN(type); type++) {
+       if(type == UA_TYPES_VARIANT || type == UA_TYPES_DIAGNOSTICINFO)
+           continue;
+       //add a scalar node for every built-in type
+        void *value = UA_new(&UA_TYPES[type]);
+        UA_Variant *variant = UA_Variant_new();
+        UA_Variant_setScalar(variant, value, &UA_TYPES[type]);
+        char name[15];
+        sprintf(name, "%02d", type);
+        UA_QualifiedName myIntegerName = UA_QUALIFIEDNAME(1, name);
+        UA_Server_addVariableNode(server, variant, myIntegerName, UA_NODEID_NUMERIC(1, ++id),
+                                  UA_NODEID_NUMERIC(1, SCALARID), UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES));
+
+        //add an array node for every built-in type
+        UA_Variant *arrayvar = UA_Variant_new();
+        UA_Variant_setArray(arrayvar, UA_Array_new(&UA_TYPES[type], 10), 10, &UA_TYPES[type]);
+        UA_Server_addVariableNode(server, arrayvar, myIntegerName, UA_NODEID_NUMERIC(1, ++id),
+                                  UA_NODEID_NUMERIC(1, ARRAYID), UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES));
+   }
+
 	//start server
 	UA_StatusCode retval = UA_Server_run(server, 1, &running); //blocks until running=false
 

+ 4 - 0
include/ua_server.h

@@ -101,6 +101,10 @@ UA_StatusCode UA_EXPORT
 UA_Server_addVariableNode(UA_Server *server, UA_Variant *value, const UA_QualifiedName browseName, 
                           UA_NodeId nodeId, const UA_NodeId parentNodeId, const UA_NodeId referenceTypeId);
 
+UA_StatusCode UA_EXPORT
+UA_Server_addObjectNode(UA_Server *server, const UA_QualifiedName browseName,
+                          UA_NodeId nodeId, const UA_NodeId parentNodeId, const UA_NodeId referenceTypeId, const UA_NodeId typeDefinition);
+
 UA_StatusCode UA_EXPORT
 UA_Server_addDataSourceVariableNode(UA_Server *server, UA_DataSource dataSource,
                                     const UA_QualifiedName browseName, UA_NodeId nodeId,

+ 0 - 57
src/server/ua_server.c

@@ -1012,62 +1012,5 @@ UA_Server * UA_Server_new(UA_ServerConfig config) {
        ADDREFERENCE(UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_SERVERSTATUS_SHUTDOWNREASON), UA_NODEID_NUMERIC(0, UA_NS0ID_HASTYPEDEFINITION),
            UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE));
 
-#ifdef DEMO_NODESET
-
-   /**************/
-   /* Demo Nodes */
-   /**************/
-
-#define DEMOID 50000
-   UA_ObjectNode *demo = UA_ObjectNode_new();
-   copyNames((UA_Node*)demo, "Demo");
-   demo->nodeId = UA_NODEID_NUMERIC(0, DEMOID);
-   UA_Server_addNode(server, (UA_Node*)demo,
-           UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
-           UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES));
-   ADDREFERENCE(UA_NODEID_NUMERIC(0, DEMOID), UA_NODEID_NUMERIC(0, UA_NS0ID_HASTYPEDEFINITION),
-           UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE));
-
-#define SCALARID 50001
-   UA_ObjectNode *scalar = UA_ObjectNode_new();
-   copyNames((UA_Node*)scalar, "Scalar");
-   scalar->nodeId = UA_NODEID_NUMERIC(0, SCALARID);
-   UA_Server_addNode(server, (UA_Node*)scalar,
-           UA_EXPANDEDNODEID_NUMERIC(0, DEMOID),
-           UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES));
-   ADDREFERENCE(UA_NODEID_NUMERIC(0, SCALARID), UA_NODEID_NUMERIC(0, UA_NS0ID_HASTYPEDEFINITION),
-           UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE));
-
-#define ARRAYID 50002
-   UA_ObjectNode *array = UA_ObjectNode_new();
-   copyNames((UA_Node*)array, "Arrays");
-   array->nodeId = UA_NODEID_NUMERIC(0, ARRAYID);
-   UA_Server_addNode(server, (UA_Node*)array,
-           UA_EXPANDEDNODEID_NUMERIC(0, DEMOID),
-           UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES));
-   ADDREFERENCE(UA_NODEID_NUMERIC(0, ARRAYID), UA_NODEID_NUMERIC(0, UA_NS0ID_HASTYPEDEFINITION),
-           UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE));
-
-   UA_UInt32 id = 51000; //running id in namespace 0
-   for(UA_UInt32 type = 0; UA_IS_BUILTIN(type); type++) {
-       if(type == UA_TYPES_VARIANT || type == UA_TYPES_DIAGNOSTICINFO)
-           continue;
-       //add a scalar node for every built-in type
-        void *value = UA_new(&UA_TYPES[type]);
-        UA_Variant *variant = UA_Variant_new();
-        UA_Variant_setScalar(variant, value, &UA_TYPES[type]);
-        char name[15];
-        sprintf(name, "%02d", type);
-        UA_QualifiedName myIntegerName = UA_QUALIFIEDNAME(0, name);
-        UA_Server_addVariableNode(server, variant, myIntegerName, UA_NODEID_NUMERIC(0, ++id),
-                                  UA_NODEID_NUMERIC(0, SCALARID), UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES));
-
-        //add an array node for every built-in type
-        UA_Variant *arrayvar = UA_Variant_new();
-        UA_Variant_setArray(arrayvar, UA_Array_new(&UA_TYPES[type], 10), 10, &UA_TYPES[type]);
-        UA_Server_addVariableNode(server, arrayvar, myIntegerName, UA_NODEID_NUMERIC(0, ++id),
-                                  UA_NODEID_NUMERIC(0, ARRAYID), UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES));
-   }
-#endif
    return server;
 }

+ 27 - 0
src/server/ua_server_addressspace.c

@@ -26,6 +26,33 @@ UA_Server_addVariableNode(UA_Server *server, UA_Variant *value, const UA_Qualifi
     return res.statusCode;
 }
 
+UA_StatusCode
+UA_Server_addObjectNode(UA_Server *server, const UA_QualifiedName browseName,
+                          UA_NodeId nodeId, const UA_NodeId parentNodeId, const UA_NodeId referenceTypeId, const UA_NodeId typeDefinition)
+{
+    UA_ObjectNode *node = UA_ObjectNode_new();
+    UA_NodeId_copy(&nodeId, &node->nodeId);
+    UA_QualifiedName_copy(&browseName, &node->browseName);
+    UA_String_copy(&browseName.name, &node->displayName.text);
+    UA_ExpandedNodeId parentId; // we need an expandednodeid
+    UA_ExpandedNodeId_init(&parentId);
+    UA_NodeId_copy(&parentNodeId, &parentId.nodeId);
+    UA_AddNodesResult res =
+        UA_Server_addNodeWithSession(server, &adminSession, (UA_Node*)node, parentId, referenceTypeId);
+    if(res.statusCode != UA_STATUSCODE_GOOD) {
+        UA_ObjectNode_delete(node);
+    }
+    UA_AddNodesResult_deleteMembers(&res);
+
+    if(!(UA_NodeId_isNull(&typeDefinition))){
+        UA_ExpandedNodeId typeDefid; // we need an expandednodeid
+        UA_ExpandedNodeId_init(&typeDefid);
+        UA_NodeId_copy(&typeDefinition, &typeDefid.nodeId);
+        ADDREFERENCE(res.addedNodeId, UA_NODEID_NUMERIC(0, UA_NS0ID_HASTYPEDEFINITION), typeDefid);
+    }
+    return res.statusCode;
+}
+
 UA_StatusCode
 UA_Server_addDataSourceVariableNode(UA_Server *server, UA_DataSource dataSource,
                                     const UA_QualifiedName browseName, UA_NodeId nodeId,