High Performance OPC UA Server SDK
1.2.1.203
|
Functions and definitions for using the valuestore infrastructure of the SDK. More...
Data Structures | |
struct | ua_valuestore_interface |
struct | ua_floatstore |
Implementation of a store using in-memory float values. More... | |
struct | ua_memorystore |
Implementation of a store using in-memory values. More... | |
struct | ua_pointerstore |
Implementation of a store using in-memory float values. More... | |
struct | ua_staticstore |
Implementation of a store using preencoded values. More... | |
struct | ua_uint32store |
Implementation of a store using in-memory uint32 values. More... | |
Typedefs | |
typedef void(* | ua_valuestore_get )(void *store, ua_node_t node, unsigned int valueindex, bool source_ts, struct ua_indexrange *range, unsigned int num_ranges, struct ua_datavalue *value) |
Get the value identified with valueindex from the store. More... | |
typedef ua_statuscode(* | ua_valuestore_attach )(void *store, ua_node_t node, unsigned int valueindex, struct ua_indexrange *range, unsigned int num_ranges, struct ua_datavalue *value) |
Attach the value identified with valueindex to the store. More... | |
typedef int(* | ua_valuestore_add )(void *store, unsigned int *valueindex, const char *data, unsigned int len) |
Adds a new value to the store. More... | |
Functions | |
void | ua_valuestore_interface_init (struct ua_valuestore_interface *store_interface) |
Initialize a ua_store_interface structure. | |
int | ua_valuestore_register_store (struct ua_valuestore_interface *store_if, uint8_t *storeindex) |
Register a new store. More... | |
int | ua_valuestore_unregister_store (uint8_t storeindex) |
Unregister a store. More... | |
struct ua_valuestore_interface * | ua_valuestore_get_storeif (uint8_t storeindex) |
int | ua_valuestore_get_store_index (const void *store) |
Returns the store index if the given store. More... | |
Functions and definitions for using the valuestore infrastructure of the SDK.
For store implementations provided by the SDK see:
Overview of available store implementations:
Store | Get | Attach | Add | Remarks |
---|---|---|---|---|
StaticStore | yes | no | yes | Ready only pre-encoded variant data. |
MemoryStore | yes | yes | yes | Stores data in array of ua_variant |
FloatStore | yes | yes | no | Only supports UA_VT_FLOAT. |
UInt32Store | yes | yes | no | Only supports UA_VT_UINT32. |
PointerStore | yes | yes | no | Only supports scalar data types. |
typedef int(* ua_valuestore_add)(void *store, unsigned int *valueindex, const char *data, unsigned int len) |
Adds a new value to the store.
This function is used for populating a value store at startup, e.g. by loading a binary file. Because this data typically is read-only (see ua_staticstore), this data is pre-encoded as variant, which means it can be written to the wire with a simple memcpy and no serialization is necessary.
store | The store to add the value to. |
valueindex | The assigned valueindex returned by the store. |
data | The value to add, which is a pre-encoded variant value in UA Binary format. This can be attached to a variant using the type UA_VT_ENCODED_BINARY. |
len | The length of data in bytes. |
typedef ua_statuscode(* ua_valuestore_attach)(void *store, ua_node_t node, unsigned int valueindex, struct ua_indexrange *range, unsigned int num_ranges, struct ua_datavalue *value) |
Attach the value identified with valueindex to the store.
This function may take responsibility for the given ua_datavalue struct and clear it. In case of an error a bad statuscode must be returned.
This function is used to implement writing of the value attribute. It is designed to take the ownership of the value and does not perform a deep copy. Hence it is named attach instead of write or set.
For an example how to implement this function see: Write Value
typedef void(* ua_valuestore_get)(void *store, ua_node_t node, unsigned int valueindex, bool source_ts, struct ua_indexrange *range, unsigned int num_ranges, struct ua_datavalue *value) |
Get the value identified with valueindex from the store.
The function must copy the value in the provided ua_datavalue struct. In case of an error while getting the value the statuscode of the value be set to the corresponding bad statuscode.
This function is used to implement reading of the value attribute.
For an example how to implement this function see: Read Value
int ua_valuestore_get_store_index | ( | const void * | store | ) |
Returns the store index if the given store.
int ua_valuestore_register_store | ( | struct ua_valuestore_interface * | store_if, |
uint8_t * | storeindex | ||
) |
Register a new store.
store_if | Store context and functions for the new store. This function will create a copy of the struct so caller is responsible for freeing memory. |
storeindex | Pointer to store index. If the store index is 0 the next free index will be assigned and written to this value. If the store index is not 0 this index will be assigned to the store, if this index was already taken by another store an error is returned. |
int ua_valuestore_unregister_store | ( | uint8_t | storeindex | ) |
Unregister a store.
storeindex | Index of store to unregister. |