1#ifndef ZCM_ZCM_PROC_RUNTIME_H
2#define ZCM_ZCM_PROC_RUNTIME_H
23#define ZCM_PROC_TYPE_HANDLER_MAX 32
25#define ZCM_PROC_TYPE_HANDLER_ARG_MAX 32
27#define ZCM_PROC_DATA_SOCKET_MAX 16
29#define ZCM_PROC_SUB_TOPIC_MAX 16
119 const char *self_name,
120 const char *source_name,
160 const char *type_name);
176 size_t summary_size);
struct zcm_proc_runtime_cfg zcm_proc_runtime_cfg_t
Parsed runtime config for one zcm_proc instance.
struct zcm_proc zcm_proc_t
Opaque process helper handle.
const char * zcm_proc_runtime_builtin_reply_for_command(const char *cmd, uint32_t cmd_len)
Resolve builtin text command reply (PING => PONG, DATA_METRICS => ROLE=NONE;PUB_PORT=-1;PUSH_PORT=-1;...
void zcm_proc_runtime_start_data_workers(zcm_proc_runtime_cfg_t *cfg, zcm_proc_t *proc, zcm_proc_runtime_sub_payload_cb_t on_sub_payload, void *user)
Start detached background workers for configured data sockets.
enum zcm_proc_type_arg_kind zcm_proc_type_arg_kind_t
Supported typed argument kinds parsed from <type format="...">.
struct zcm_proc_data_socket_cfg zcm_proc_data_socket_cfg_t
One runtime data socket entry parsed from XML.
zcm_proc_data_socket_kind
Data socket kind declared in proc runtime config.
struct zcm_proc_type_handler_cfg zcm_proc_type_handler_cfg_t
One configured typed request handler signature.
const zcm_proc_type_handler_cfg_t * zcm_proc_runtime_find_type_handler(const zcm_proc_runtime_cfg_t *cfg, const char *type_name)
Find a configured TYPE handler by case-insensitive name.
int zcm_proc_runtime_decode_type_payload(zcm_msg_t *msg, const zcm_proc_type_handler_cfg_t *handler, char *summary, size_t summary_size)
Decode a message payload according to one TYPE handler signature.
int zcm_proc_runtime_bootstrap(const char *cfg_path, zcm_proc_runtime_cfg_t *cfg, zcm_proc_t **out_proc, zcm_socket_t **out_rep)
Load config and initialize a daemon process/socket pair.
zcm_proc_type_arg_kind
Supported typed argument kinds parsed from <type format="...">.
#define ZCM_PROC_DATA_SOCKET_MAX
Maximum number of <dataSocket> entries supported per proc config.
int zcm_proc_runtime_first_pub_port(const zcm_proc_runtime_cfg_t *cfg, int *out_port)
Return the first configured PUB data port.
const char * zcm_proc_runtime_builtin_ping_reply(void)
Builtin command reply literal for builtin ping requests.
#define ZCM_PROC_TYPE_HANDLER_MAX
Maximum number of <type> handlers supported in one proc config.
enum zcm_proc_data_socket_kind zcm_proc_data_socket_kind_t
Data socket kind declared in proc runtime config.
void(* zcm_proc_runtime_sub_payload_cb_t)(const char *self_name, const char *source_name, const void *payload, size_t payload_len, void *user)
Optional callback for bytes received by SUB/PULL data workers.
int zcm_proc_runtime_load_config(const char *cfg_path, zcm_proc_runtime_cfg_t *cfg)
Parse and validate a runtime config XML into an in-memory structure.
#define ZCM_PROC_TYPE_HANDLER_ARG_MAX
Maximum number of typed arguments parsed for one <type> handler.
#define ZCM_PROC_SUB_TOPIC_MAX
Maximum number of SUB topics supported for one SUB data socket.
const char * zcm_proc_runtime_builtin_default_reply(void)
Builtin default reply literal for unknown text commands.
const char * zcm_proc_runtime_data_role(const zcm_proc_runtime_cfg_t *cfg)
Return the data role string for configured data sockets.
int zcm_proc_runtime_first_push_port(const zcm_proc_runtime_cfg_t *cfg, int *out_port)
Return the first configured PUSH data port.
int zcm_proc_runtime_payload_bytes(const zcm_proc_runtime_cfg_t *cfg, zcm_proc_data_socket_kind_t kind, int *out_bytes)
Return payload byte count for one data socket kind.
const char * zcm_proc_runtime_builtin_ping_request(void)
Builtin command request literal used by zcm_proc command semantics.
@ ZCM_PROC_DATA_SOCKET_PULL
Pull socket (receive payload from one push target).
@ ZCM_PROC_DATA_SOCKET_PUB
Publisher socket (broadcast payload periodically).
@ ZCM_PROC_DATA_SOCKET_PUSH
Push socket (send payload to pull peers).
@ ZCM_PROC_DATA_SOCKET_SUB
Subscriber socket (consume payload from one publisher target).
@ ZCM_PROC_TYPE_ARG_DOUBLE
Double argument (-d).
@ ZCM_PROC_TYPE_ARG_TEXT
String/text argument (-t).
@ ZCM_PROC_TYPE_ARG_INT
Integer argument (-i).
@ ZCM_PROC_TYPE_ARG_FLOAT
Float argument (-f).
struct zcm_socket zcm_socket_t
Opaque transport socket wrapper.
struct zcm_msg zcm_msg_t
Opaque typed message container.
One runtime data socket entry parsed from XML.
char topics[ZCM_PROC_SUB_TOPIC_MAX][128]
Topic prefixes applied on SUB sockets.
size_t topic_count
Number of valid entries in topics.
char target[128]
Target node name for SUB/PULL endpoints.
char payload[256]
Payload text used by PUB/PUSH workers.
zcm_proc_data_socket_kind_t kind
Socket role (PUB/SUB/PUSH/PULL).
int port
Bound TCP port for PUB/PUSH; auto-assigned if initially unset.
int interval_ms
Publish/push loop period in milliseconds.
Parsed runtime config for one zcm_proc instance.
char name[128]
Node/process name used for broker registration.
zcm_proc_type_handler_cfg_t type_handlers[ZCM_PROC_TYPE_HANDLER_MAX]
Declared typed handlers.
size_t data_socket_count
Number of valid entries in data_sockets.
zcm_proc_data_socket_cfg_t data_sockets[ZCM_PROC_DATA_SOCKET_MAX]
Declared data sockets for worker startup.
size_t type_handler_count
Number of valid entries in type_handlers.
One configured typed request handler signature.
zcm_proc_type_arg_kind_t args[ZCM_PROC_TYPE_HANDLER_ARG_MAX]
Parsed ordered list of expected argument kinds.
char format[256]
Raw format string from config (if provided).
char name[64]
Type name (e.g.
size_t arg_count
Number of valid entries in args.
High-level process bootstrap helpers.