High Performance OPC UA Server SDK
1.3.0.231
|
Modules | |
addressspace | |
Functions and definitions for addressspace operations and attribute handling. | |
authentication | |
Interface for implementing an authentication backend. | |
authorization | |
Interface for implementing an authorization backend. | |
event | |
valuestore | |
Functions and definitions for using the valuestore infrastructure of the SDK. | |
Data Structures | |
struct | uaserver_provider |
struct | ua_monitoreditem |
Structure to represent a monitoreditem in the server. More... | |
Enumerations | |
enum | uaserver_write_match { UASERVER_WRITE_MATCH_DEFAULT = 0, UASERVER_WRITE_MATCH_ALLOW_VT_NULL = 1, UASERVER_WRITE_MATCH_ALLOW_EO_NONE = 2, UASERVER_WRITE_MATCH_ALLOW_EO_BINARY = 4, UASERVER_WRITE_MATCH_ALLOW_EO_EMPTY_ARRAY = 8 } |
Controls the behaviour of uaserver_write_matches_datatype. More... | |
Functions | |
void | uaserver_read_internal (ua_node_t node, struct uasession_session *session, enum ua_timestampstoreturn ts, uint32_t attribute_id, struct ua_indexrange *index_range, unsigned int num_ranges, struct ua_datavalue *result) |
Read the attribute of a node. More... | |
ua_statuscode | uaserver_write_internal (ua_node_t node, struct uasession_session *session, uint32_t attribute_id, struct ua_indexrange *range, unsigned int num_ranges, struct ua_datavalue *value) |
Write the attribute of a node. More... | |
bool | uaserver_write_matches_datatype (ua_node_t node, const struct ua_variant *value, uint32_t mode) |
Check if the value has the correct datatype to be written to the node according to UA rules. More... | |
int | uaserver_init (struct uaserver_provider *provider, int num_provider) |
Initialize server. More... | |
int | uaserver_init_ipc (void) |
void | uaserver_clear (struct uaserver_provider *provider, int num_provider) |
Clear server. More... | |
void | uaserver_clear_ipc (void) |
int | uaserver_start (void) |
Start server. More... | |
int | uaserver_stop (void) |
Stop the server. More... | |
int | uaserver_shutdown (unsigned int timeout_ms) |
Updates server shutdown information. More... | |
int | uaserver_registernode_internal (ua_node_t node, uint16_t nsidx, struct ua_nodeid *out) |
Creates a registered node from the given node handle. More... | |
enum uaserver_write_match |
Controls the behaviour of uaserver_write_matches_datatype.
Mutiple enums can be combined with the bitwise or operator.
void uaserver_clear | ( | struct uaserver_provider * | provider, |
int | num_provider | ||
) |
Clear server.
provider | Array of providers to unload. |
num_provider | Number of elements in provider array. |
int uaserver_init | ( | struct uaserver_provider * | provider, |
int | num_provider | ||
) |
Initialize server.
provider | Array with providers to load. Each provider will be assigned a handle on success. |
num_provider | Number of elements in provider array. |
void uaserver_read_internal | ( | ua_node_t | node, |
struct uasession_session * | session, | ||
enum ua_timestampstoreturn | ts, | ||
uint32_t | attribute_id, | ||
struct ua_indexrange * | index_range, | ||
unsigned int | num_ranges, | ||
struct ua_datavalue * | result | ||
) |
Read the attribute of a node.
If the value attribute is to be read, this function tries to read it from a store, other attributes are read directly from the addressspace.
node | Node to read the attribute from. |
session | The session to read the attribute for. If NULL it is ignored. |
ts | The timestamps to return, see: ua_timestampstoreturn. |
attribute_id | Id of the attribute to read. |
index_range | Array of index ranges to read. For each dimension to limit the range there is one array entry. |
num_ranges | Number of entries in the index_range array. |
result | The attribute that was read, in case of an error a bad statuscode is written to the statuscode of the ua_datavalue. |
Creates a registered node from the given node handle.
Because the internal node representation only supports 30bit numeric values (0-1,073,741,824 ~ 10^9 values), we can use the highest bit 31 to mark the node as a registered node. This allows to convert every node id of the server into a efficient numeric nodeid without changing the nsidx. Note, if you change the internal node representation you also need to fix this function and ua_node_find() to reflect this change.
node | Node handle to create a registered nodeid for. |
nsidx | Nsidx of node, just passed to for performance reasons to avoid an ua_node_get_nodeid() call. The provider should already know this nsidx. |
out | The registed nodeid to return. |
int uaserver_shutdown | ( | unsigned int | timeout_sec | ) |
Updates server shutdown information.
This is used to inform clients that the server is shutting down.
timeout_sec | Timeout in seconds until the server is shut down. |
int uaserver_start | ( | void | ) |
Start server.
Start listening for network connections.
net_base | A network base to use. If NULL a new one will be created. |
int uaserver_stop | ( | void | ) |
Stop the server.
Stop listening for network connnections and clear network related resources and sessions.
ua_statuscode uaserver_write_internal | ( | ua_node_t | node, |
struct uasession_session * | session, | ||
uint32_t | attribute_id, | ||
struct ua_indexrange * | range, | ||
unsigned int | num_ranges, | ||
struct ua_datavalue * | value | ||
) |
Write the attribute of a node.
This function tries to write the value attribute of a node using the store infrastructure. Other attributes are not implemented.
node | Node to write the attribute to. |
session | The session to write the attribute for. If NULL it is ignored. |
attribute_id | Id of the attribute to write. |
range | Array of index ranges to write. For each dimension to limit the range there is one array entry. |
num_ranges | Number of entries in the range array. |
value | The new value to write to the attribute of the node. |
bool uaserver_write_matches_datatype | ( | ua_node_t | node, |
const struct ua_variant * | value, | ||
uint32_t | mode | ||
) |
Check if the value
has the correct datatype to be written to the node
according to UA rules.
Note this check is rather expensive, it should be omitted when possible. E.g. by comparing the type with the previous value and run the check only when it does not match or for extensionobjects:
node | Node the value should be written to, must be of nodeclass variable or variabletype. |
value | Value that should be written. |
mode | Combination of uaserver_write_match to control behaviour of the function. |