Nyx Node
|
Classes | |
struct | nyx_node_t |
Opaque struct describing a Nyx node. More... | |
Typedefs | |
typedef struct nyx_node_s | nyx_node_t |
typedef void(* | nyx_mqtt_handler_t) (nyx_node_t *node, nyx_event_t event, size_t topic_size, BUFF_t topic_buff, size_t message_size, BUFF_t message_buff) |
MQTT event handler. | |
Enumerations | |
enum | nyx_event_t { NYX_EVENT_OPEN = 0 , NYX_EVENT_MSG = 1 } |
Nyx TCP or MQTT event type. More... | |
Functions | |
nyx_node_t * | nyx_node_t::nyx_node_initialize (STR_t node_id, nyx_dict_t *def_vectors[], __NULLABLE__ STR_t indi_url, __NULLABLE__ STR_t mqtt_url, __NULLABLE__ STR_t mqtt_username, __NULLABLE__ STR_t mqtt_password, __NULLABLE__ nyx_mqtt_handler_t mqtt_handler, __NULLABLE__ STR_t redis_url, __NULLABLE__ STR_t redis_username, __NULLABLE__ STR_t redis_password, int retry_ms, bool enable_xml, bool validate_xml) |
Initializes the Nyx node. | |
void | nyx_node_t::nyx_node_finalize (nyx_node_t *node, bool free_vectors) |
Finalizes the Nyx node. | |
void | nyx_node_t::nyx_node_poll (nyx_node_t *node, int timeout_ms) |
Performs a single poll iteration. | |
void | nyx_node_t::nyx_node_enable (nyx_node_t *node, STR_t device, __NULLABLE__ STR_t name, __NULLABLE__ STR_t message) |
Enables a whole device or a definition vector. | |
void | nyx_node_t::nyx_node_disable (nyx_node_t *node, STR_t device, __NULLABLE__ STR_t name, __NULLABLE__ STR_t message) |
Disables a whole device or a definition vector. | |
void | nyx_node_t::nyx_node_send_message (nyx_node_t *node, STR_t device, STR_t message) |
Sends a message to the clients. | |
void | nyx_node_t::nyx_mqtt_sub (nyx_node_t *node, STR_t topic) |
If MQTT is enabled, subscribes to a topic. | |
void | nyx_node_t::nyx_mqtt_pub (nyx_node_t *node, STR_t topic, __ZEROABLE__ size_t message_size, __NULLABLE__ BUFF_t message_buff) |
If MQTT is enabled, publishes a message to a topic. | |
bool | nyx_node_t::nyx_stream_pub (nyx_node_t *node, STR_t device, STR_t stream, bool check, size_t max_len, __ZEROABLE__ size_t n_fields, const str_t field_names[], const size_t field_sizes[], const buff_t field_buffs[]) |
If Redis is enabled, publishes an entry to a stream, see https://redis.io/commands/xadd/. | |
Nyx node.
typedef void(* nyx_mqtt_handler_t) (nyx_node_t *node, nyx_event_t event, size_t topic_size, BUFF_t topic_buff, size_t message_size, BUFF_t message_buff) |
MQTT event handler.
node | The Nyx node. |
event | The event type. |
topic_size | The MQTT topic length. |
topic_buff | The MQTT topic buffer. |
message_size | The MQTT message length. |
message_buff | The MQTT message buffer. |
enum nyx_event_t |
nyx_node_t * nyx_node_initialize | ( | STR_t | node_id, |
nyx_dict_t * | def_vectors[], | ||
__NULLABLE__ STR_t | indi_url, | ||
__NULLABLE__ STR_t | mqtt_url, | ||
__NULLABLE__ STR_t | mqtt_username, | ||
__NULLABLE__ STR_t | mqtt_password, | ||
__NULLABLE__ nyx_mqtt_handler_t | mqtt_handler, | ||
__NULLABLE__ STR_t | redis_url, | ||
__NULLABLE__ STR_t | redis_username, | ||
__NULLABLE__ STR_t | redis_password, | ||
int | retry_ms, | ||
bool | enable_xml, | ||
bool | validate_xml ) |
Initializes the Nyx node.
node_id | Unique node identifier. |
def_vectors | Array of definition vectors. |
indi_url | Optional INDI URL (e.g. tcp://0.0.0.0:7625). |
mqtt_url | Optional MQTT URL (e.g. mqtt://localhost:1883). |
mqtt_username | Optional MQTT username. |
mqtt_password | Optional MQTT password. |
mqtt_handler | Optional MQTT handler. |
redis_url | Optional Redis URL (e.g. tcp://localhost:6379). |
redis_username | Optional Redis username. |
redis_password | Optional Redis password. |
retry_ms | Connect retry time [milliseconds]. |
enable_xml | Enables the XML compatibility layer. |
validate_xml | Enables the XML message validation. |
void nyx_node_finalize | ( | nyx_node_t * | node, |
bool | free_vectors ) |
Finalizes the Nyx node.
node | The Nyx node. |
free_vectors | If true , the definition vectors are released. |
void nyx_node_poll | ( | nyx_node_t * | node, |
int | timeout_ms ) |
Performs a single poll iteration.
node | The Nyx node. |
timeout_ms | Timeout [milliseconds]. |
void nyx_node_enable | ( | nyx_node_t * | node, |
STR_t | device, | ||
__NULLABLE__ STR_t | name, | ||
__NULLABLE__ STR_t | message ) |
Enables a whole device or a definition vector.
node | The Nyx node. |
device | The Nyx device name. |
name | Optional Nyx vector name. |
message | Optional message content. |
void nyx_node_disable | ( | nyx_node_t * | node, |
STR_t | device, | ||
__NULLABLE__ STR_t | name, | ||
__NULLABLE__ STR_t | message ) |
Disables a whole device or a definition vector.
node | The Nyx node. |
device | The Nyx device name. |
name | Optional Nyx vector name. |
message | Optional message content. |
void nyx_node_send_message | ( | nyx_node_t * | node, |
STR_t | device, | ||
STR_t | message ) |
Sends a message to the clients.
node | The Nyx node. |
device | The Nyx device name. |
message | The message content. |
void nyx_mqtt_sub | ( | nyx_node_t * | node, |
STR_t | topic ) |
If MQTT is enabled, subscribes to a topic.
node | The Nyx node. |
topic | The MQTT topic. |
void nyx_mqtt_pub | ( | nyx_node_t * | node, |
STR_t | topic, | ||
__ZEROABLE__ size_t | message_size, | ||
__NULLABLE__ BUFF_t | message_buff ) |
If MQTT is enabled, publishes a message to a topic.
node | The Nyx node. |
topic | The MQTT topic. |
message_size | The MQTT message length. |
message_buff | The MQTT message buffer. |
bool nyx_stream_pub | ( | nyx_node_t * | node, |
STR_t | device, | ||
STR_t | stream, | ||
bool | check, | ||
size_t | max_len, | ||
__ZEROABLE__ size_t | n_fields, | ||
const str_t | field_names[], | ||
const size_t | field_sizes[], | ||
const buff_t | field_buffs[] ) |
If Redis is enabled, publishes an entry to a stream, see https://redis.io/commands/xadd/.
node | The Nyx node. |
device | The device name. |
stream | The stream name. |
check | If true , the stream is published only if it has been enabled. |
max_len | Maximum number of entries to keep in the Redis stream. |
n_fields | Number of field triplets (name, length, buffer). |
field_names | Array of field names. |
field_sizes | Array of field lengths. |
field_buffs | Array of field buffers. |
check
is true
, the stream has to be declared via nyx_stream_def_vector_new and registered via nyx_node_initialize. #
, its buffer is automatically base64-encoded.