Browse Source

Revert "simplify networklayer signature. todo: endpoint url for discovery"

This reverts commit 9dafed865f5a7bed47fed5c3fec3c422fd9d4122.
Julius Pfrommer 9 years ago
parent
commit
5089c3f13d

+ 1 - 1
README.md

@@ -51,7 +51,7 @@ int main(int argc, char** argv)
 
     /* init the server */
     UA_ServerConfig config = UA_ServerConfig_standard;
-    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(UA_ConnectionConfig_standard, PORT, logger);
+    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(UA_ConnectionConfig_standard, 16664, logger);
     config.logger = logger;
     config.networkLayers = &nl;
     config.networkLayersSize = 1;

+ 1 - 1
examples/server.c

@@ -207,7 +207,7 @@ int main(int argc, char** argv) {
 #endif
 
     UA_ServerConfig config = UA_ServerConfig_standard;
-    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(16664);
+    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(UA_ConnectionConfig_standard, 16664, logger);
     config.serverCertificate = loadCertificate();
     config.logger = Logger_Stdout;
     config.networkLayers = &nl;

+ 1 - 1
examples/server_datasource.c

@@ -53,7 +53,7 @@ int main(int argc, char** argv) {
     signal(SIGINT, stopHandler); /* catches ctrl-c */
 
     UA_ServerConfig config = UA_ServerConfig_standard;
-    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(16664);
+    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(UA_ConnectionConfig_standard, 16664, logger);
     config.logger = Logger_Stdout;
     config.networkLayers = &nl;
     config.networkLayersSize = 1;

+ 1 - 1
examples/server_firstSteps.c

@@ -23,7 +23,7 @@ int main(void) {
     signal(SIGTERM, stopHandler);
 
     UA_ServerConfig config = UA_ServerConfig_standard;
-    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(16664);
+    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(UA_ConnectionConfig_standard, 16664, Logger_Stdout);
     config.logger = Logger_Stdout;
     config.networkLayers = &nl;
     config.networkLayersSize = 1;

+ 1 - 1
examples/server_method.c

@@ -54,7 +54,7 @@ int main(int argc, char** argv) {
 
     /* initialize the server */
     UA_ServerConfig config = UA_ServerConfig_standard;
-    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(16664);
+    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(UA_ConnectionConfig_standard, 16664, logger);
     config.logger = Logger_Stdout;
     config.networkLayers = &nl;
     config.networkLayersSize = 1;

+ 1 - 1
examples/server_nodeset.c

@@ -31,7 +31,7 @@ int main(int argc, char** argv) {
 
     /* initialize the server */
     UA_ServerConfig config = UA_ServerConfig_standard;
-    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(16664);
+    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(UA_ConnectionConfig_standard, 16664, logger);
     config.logger = Logger_Stdout;
     config.networkLayers = &nl;
     config.networkLayersSize = 1;

+ 1 - 1
examples/server_repeated_job.c

@@ -30,7 +30,7 @@ int main(int argc, char** argv) {
     signal(SIGINT, stopHandler); /* catches ctrl-c */
 
     UA_ServerConfig config = UA_ServerConfig_standard;
-    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(16664);
+    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(UA_ConnectionConfig_standard, 16664, logger);
     config.logger = Logger_Stdout;
     config.networkLayers = &nl;
     config.networkLayersSize = 1;

+ 1 - 1
examples/server_variable.c

@@ -37,7 +37,7 @@ int main(int argc, char** argv) {
     signal(SIGINT, stopHandler); /* catches ctrl-c */
 
     UA_ServerConfig config = UA_ServerConfig_standard;
-    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(16664);
+    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(UA_ConnectionConfig_standard, 16664, logger);
     config.logger = Logger_Stdout;
     config.networkLayers = &nl;
     config.networkLayersSize = 1;

+ 2 - 2
include/ua_connection.h

@@ -23,13 +23,13 @@ extern "C" {
 #include "ua_types.h"
 #include "ua_job.h"
 
-typedef enum {
+typedef enum UA_ConnectionState {
     UA_CONNECTION_OPENING, ///< The socket is open, but the HEL/ACK handshake is not done
     UA_CONNECTION_ESTABLISHED, ///< The socket is open and the connection configured
     UA_CONNECTION_CLOSED, ///< The socket has been closed and the connection will be deleted
 } UA_ConnectionState;
 
-typedef struct {
+typedef struct UA_ConnectionConfig {
     UA_UInt32 protocolVersion;
     UA_UInt32 sendBufferSize;
     UA_UInt32 recvBufferSize;

+ 1 - 2
include/ua_server.h

@@ -48,7 +48,6 @@ typedef struct {
     UA_ApplicationDescription applicationDescription;
     UA_ByteString serverCertificate;
 
-    UA_ConnectionConfig connectionConfig;
     size_t networkLayersSize;
     UA_ServerNetworkLayer *networkLayers;
 
@@ -126,7 +125,7 @@ struct UA_ServerNetworkLayer {
      * @param logger The logger
      * @return Returns UA_STATUSCODE_GOOD or an error code.
      */
-    UA_StatusCode (*start)(UA_ServerNetworkLayer *nl, UA_ConnectionConfig config, UA_Logger logger);
+    UA_StatusCode (*start)(UA_ServerNetworkLayer *nl);
     
     /**
      * Gets called from the main server loop and returns the jobs (accumulated messages and close

+ 0 - 2
src/server/ua_server.c

@@ -39,8 +39,6 @@ const UA_ServerConfig UA_ServerConfig_standard = {
     },
     .serverCertificate = UA_STRING_STATIC_NULL,
 
-    .connectionConfig = {.protocolVersion = 0, .sendBufferSize = 65536, .recvBufferSize  = 65536,
-                         .maxMessageSize = 65536, .maxChunkCount = 1},
     .networkLayersSize = 0, .networkLayers = NULL,
 
     .enableAnonymousLogin = UA_TRUE,

+ 1 - 1
src/server/ua_server_worker.c

@@ -559,7 +559,7 @@ UA_StatusCode UA_Server_run_startup(UA_Server *server) {
     UA_StatusCode result = UA_STATUSCODE_GOOD;
     for(size_t i = 0; i < server->config.networkLayersSize; i++) {
         UA_ServerNetworkLayer *nl = &server->config.networkLayers[i];
-        result |= nl->start(nl, server->config.connectionConfig, server->config.logger);
+        result |= nl->start(nl);
     }
 
     return result;

+ 21 - 19
src_extra/networklayer_tcp.c

@@ -286,25 +286,8 @@ ServerNetworkLayerTCP_add(ServerNetworkLayerTCP *layer, UA_Int32 newsockfd) {
 }
 
 static UA_StatusCode
-ServerNetworkLayerTCP_start(UA_ServerNetworkLayer *nl, UA_ConnectionConfig config, UA_Logger logger) {
+ServerNetworkLayerTCP_start(UA_ServerNetworkLayer *nl) {
     ServerNetworkLayerTCP *layer = nl->handle;
-    layer->conf = config;
-    layer->logger = logger;
-
-    /* get the discovery url from the hostname */
-    UA_String du = UA_STRING_NULL;
-    char hostname[256];
-    if(gethostname(hostname, 255) == 0) {
-        char discoveryUrl[256];
-#ifndef _MSC_VER
-        du.length = snprintf(discoveryUrl, 255, "opc.tcp://%s:%d", hostname, layer->port);
-#else
-        du.length = _snprintf_s(discoveryUrl, 255, _TRUNCATE, "opc.tcp://%s:%d", hostname, layer->port);
-#endif
-        du.data = (UA_Byte*)discoveryUrl;
-        UA_String_copy(&du, &nl->discoveryUrl);
-    }
-
 #ifdef _WIN32
     if((layer->serversockfd = socket(PF_INET, SOCK_STREAM,0)) == (UA_Int32)INVALID_SOCKET) {
         UA_LOG_WARNING(layer->logger, UA_LOGCATEGORY_NETWORK, "Error opening socket, code: %d",
@@ -451,7 +434,8 @@ static void ServerNetworkLayerTCP_deleteMembers(UA_ServerNetworkLayer *nl) {
     UA_String_deleteMembers(&nl->discoveryUrl);
 }
 
-UA_ServerNetworkLayer UA_ServerNetworkLayerTCP(UA_UInt32 port) {
+UA_ServerNetworkLayer
+UA_ServerNetworkLayerTCP(UA_ConnectionConfig conf, UA_UInt32 port, UA_Logger logger) {
 #ifdef _WIN32
     WORD wVersionRequested;
     WSADATA wsaData;
@@ -465,9 +449,27 @@ UA_ServerNetworkLayer UA_ServerNetworkLayerTCP(UA_UInt32 port) {
     if(!layer)
         return nl;
     
+    layer->conf = conf;
     layer->port = port;
+    layer->logger = logger;
+    layer->mappingsSize = 0;
+    layer->mappings = NULL;
+
+    /* get the discovery url from the hostname */
+    UA_String du = UA_STRING_NULL;
+    char hostname[256];
+    if(gethostname(hostname, 255) == 0) {
+        char discoveryUrl[256];
+#ifndef _MSC_VER
+        du.length = snprintf(discoveryUrl, 255, "opc.tcp://%s:%d", hostname, port);
+#else
+        du.length = _snprintf_s(discoveryUrl, 255, _TRUNCATE, "opc.tcp://%s:%d", hostname, port);
+#endif
+        du.data = (UA_Byte*)discoveryUrl;
+    }
 
     nl.handle = layer;
+    UA_String_copy(&du, &nl.discoveryUrl);
     nl.start = ServerNetworkLayerTCP_start;
     nl.getJobs = ServerNetworkLayerTCP_getJobs;
     nl.stop = ServerNetworkLayerTCP_stop;

+ 2 - 1
src_extra/networklayer_tcp.h

@@ -14,7 +14,8 @@ extern "C" {
 #include "ua_client.h"
 
 /** @brief Create the TCP networklayer and listen to the specified port */
-UA_ServerNetworkLayer UA_EXPORT UA_ServerNetworkLayerTCP(UA_UInt32 port);
+UA_ServerNetworkLayer UA_EXPORT
+UA_ServerNetworkLayerTCP(UA_ConnectionConfig conf, UA_UInt32 port, UA_Logger logger);
 
 UA_Connection UA_EXPORT
 UA_ClientConnectionTCP(UA_ConnectionConfig conf, const char *endpointUrl, UA_Logger logger);