1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #ifndef UA_SERVER_INTERNAL_H_
- #define UA_SERVER_INTERNAL_H_
- #include "ua_util.h"
- #include "ua_server.h"
- #include "ua_session_manager.h"
- #include "ua_securechannel_manager.h"
- #include "ua_nodestore.h"
- /** Mapping of namespace-id and url to an external nodestore. For namespaces
- that have no mapping defined, the internal nodestore is used by default. */
- typedef struct UA_ExternalNamespace {
- UA_UInt16 index;
- UA_String url;
- UA_ExternalNodeStore externalNodeStore;
- } UA_ExternalNamespace;
- // forward declarations
- struct UA_TimedWork;
- typedef struct UA_TimedWork UA_TimedWork;
- struct UA_DelayedWork;
- typedef struct UA_DelayedWork UA_DelayedWork;
- struct UA_Server {
- UA_ApplicationDescription description;
- UA_Int32 endpointDescriptionsSize;
- UA_EndpointDescription *endpointDescriptions;
- UA_ByteString serverCertificate;
- UA_SecureChannelManager secureChannelManager;
- UA_SessionManager sessionManager;
- UA_Logger logger;
- UA_NodeStore *nodestore;
- UA_Int32 externalNamespacesSize;
- UA_ExternalNamespace *externalNamespaces;
- UA_Int32 nlsSize;
- UA_ServerNetworkLayer *nls;
- UA_UInt32 random_seed;
- #ifdef UA_MULTITHREADING
- UA_Boolean *running;
- UA_UInt16 nThreads;
- UA_UInt32 **workerCounters;
- UA_DelayedWork *delayedWork;
- // worker threads wait on the queue
- struct cds_wfcq_head dispatchQueue_head;
- struct cds_wfcq_tail dispatchQueue_tail;
- pthread_cond_t dispatchQueue_condition; // so the workers don't spin if the queue is empty
- #endif
- LIST_HEAD(UA_TimedWorkList, UA_TimedWork) timedWork;
- UA_DateTime startTime;
- UA_DateTime buildDate;
- };
- void UA_Server_processBinaryMessage(UA_Server *server, UA_Connection *connection, const UA_ByteString *msg);
- UA_AddNodesResult UA_Server_addNodeWithSession(UA_Server *server, UA_Session *session, UA_Node *node,
- const UA_ExpandedNodeId *parentNodeId,
- const UA_NodeId *referenceTypeId);
- UA_AddNodesResult UA_Server_addNode(UA_Server *server, UA_Node *node, const UA_ExpandedNodeId *parentNodeId,
- const UA_NodeId *referenceTypeId);
- UA_StatusCode UA_Server_addReferenceWithSession(UA_Server *server, UA_Session *session, const UA_AddReferencesItem *item);
- void UA_Server_deleteTimedWork(UA_Server *server);
- #define ADDREFERENCE(NODEID, REFTYPE_NODEID, TARGET_EXPNODEID) do { \
- UA_AddReferencesItem item; \
- UA_AddReferencesItem_init(&item); \
- item.sourceNodeId = NODEID; \
- item.referenceTypeId = REFTYPE_NODEID; \
- item.isForward = UA_TRUE; \
- item.targetNodeId = TARGET_EXPNODEID; \
- UA_Server_addReference(server, &item); \
- } while(0)
- #endif /* UA_SERVER_INTERNAL_H_ */
|