zCm 0.1.0
Lightweight messaging toolkit
Loading...
Searching...
No Matches
zcm_node.h
Go to the documentation of this file.
1#ifndef ZCM_ZCM_NODE_H
2#define ZCM_ZCM_NODE_H
3
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13#include <stddef.h>
14
15#include "zcm_msg.h"
16
17struct zcm_context;
18
22
24typedef struct zcm_node zcm_node_t;
25
29typedef enum {
30 ZCM_SOCK_REQ = 1,
31 ZCM_SOCK_REP = 2,
32 ZCM_SOCK_PUB = 3,
33 ZCM_SOCK_SUB = 4,
34 ZCM_SOCK_PAIR = 5,
35 ZCM_SOCK_PUSH = 6,
36 ZCM_SOCK_PULL = 7
38
40typedef struct zcm_socket zcm_socket_t;
41
45typedef struct zcm_node_entry {
47 char *name;
49 char *endpoint;
51
53#define ZCM_NODE_REGISTER_EX_DUPLICATE (-2)
54
62zcm_node_t *zcm_node_new(struct zcm_context *ctx, const char *broker_endpoint);
63
70
78int zcm_node_unregister(zcm_node_t *node, const char *name);
79
95int zcm_node_register_ex(zcm_node_t *node, const char *name, const char *endpoint,
96 const char *ctrl_endpoint, const char *host, int pid,
97 const char *role, int pub_port, int push_port);
98
108int zcm_node_lookup(zcm_node_t *node, const char *name,
109 char *out_endpoint, size_t out_size);
110
127int zcm_node_info(zcm_node_t *node, const char *name,
128 char *out_endpoint, size_t out_ep_size,
129 char *out_ctrl_endpoint, size_t out_ctrl_size,
130 char *out_host, size_t out_host_size,
131 int *out_pid);
132
141int zcm_node_list(zcm_node_t *node, zcm_node_entry_t **out_entries, size_t *out_count);
142
149void zcm_node_list_free(zcm_node_entry_t *entries, size_t count);
150
167int zcm_node_report_metrics(zcm_node_t *node, const char *name, const char *role,
168 int pub_port, int push_port,
169 int pub_bytes, int sub_bytes,
170 int push_bytes, int pull_bytes);
171
190int zcm_node_handle_control_msg(zcm_msg_t *req, zcm_msg_t *reply, int *out_should_exit);
191
199zcm_socket_t *zcm_socket_new(struct zcm_context *ctx, zcm_socket_type_t type);
200
207
215int zcm_socket_bind(zcm_socket_t *sock, const char *endpoint);
216
224int zcm_socket_connect(zcm_socket_t *sock, const char *endpoint);
225
234int zcm_socket_set_subscribe(zcm_socket_t *sock, const char *prefix, size_t len);
235
244
253
262int zcm_socket_send_bytes(zcm_socket_t *sock, const void *data, size_t len);
263
273int zcm_socket_recv_bytes(zcm_socket_t *sock, void *buf, size_t buf_len, size_t *out_len);
274
283
285
286#ifdef __cplusplus
287}
288#endif
289
290#endif /* ZCM_ZCM_NODE_H */
int zcm_node_register_ex(zcm_node_t *node, const char *name, const char *endpoint, const char *ctrl_endpoint, const char *host, int pid, const char *role, int pub_port, int push_port)
Register a process with extended metadata.
void zcm_socket_free(zcm_socket_t *sock)
Destroy a socket created by zcm_socket_new().
int zcm_socket_send_msg(zcm_socket_t *sock, const zcm_msg_t *msg)
Serialize and send a typed message.
struct zcm_socket zcm_socket_t
Opaque transport socket wrapper.
Definition zcm_node.h:40
int zcm_node_info(zcm_node_t *node, const char *name, char *out_endpoint, size_t out_ep_size, char *out_ctrl_endpoint, size_t out_ctrl_size, char *out_host, size_t out_host_size, int *out_pid)
Fetch extended metadata for a registered name.
int zcm_node_list(zcm_node_t *node, zcm_node_entry_t **out_entries, size_t *out_count)
List currently registered node entries.
int zcm_socket_connect(zcm_socket_t *sock, const char *endpoint)
Connect a socket to an endpoint.
int zcm_socket_set_subscribe(zcm_socket_t *sock, const char *prefix, size_t len)
Configure subscription prefix on a SUB socket.
struct zcm_msg zcm_msg_t
Opaque typed message container.
Definition zcm_msg.h:21
struct zcm_node_entry zcm_node_entry_t
Node listing entry returned by zcm_node_list().
int zcm_socket_send_bytes(zcm_socket_t *sock, const void *data, size_t len)
Send raw bytes.
zcm_socket_type_t
Socket type abstraction mapped to ZeroMQ socket kinds.
Definition zcm_node.h:29
int zcm_socket_recv_bytes(zcm_socket_t *sock, void *buf, size_t buf_len, size_t *out_len)
Receive raw bytes into a caller-provided buffer.
int zcm_node_report_metrics(zcm_node_t *node, const char *name, const char *role, int pub_port, int push_port, int pub_bytes, int sub_bytes, int push_bytes, int pull_bytes)
Report runtime role/metric values for a registered name to the broker.
zcm_socket_t * zcm_socket_new(struct zcm_context *ctx, zcm_socket_type_t type)
Create a transport socket wrapper.
zcm_node_t * zcm_node_new(struct zcm_context *ctx, const char *broker_endpoint)
Create a node helper bound to one broker endpoint.
int zcm_node_lookup(zcm_node_t *node, const char *name, char *out_endpoint, size_t out_size)
Resolve a registered name to its endpoint.
int zcm_socket_set_timeouts(zcm_socket_t *sock, int ms)
Configure receive/send socket timeouts.
void zcm_node_free(zcm_node_t *node)
Destroy a node created by zcm_node_new().
int zcm_socket_bind(zcm_socket_t *sock, const char *endpoint)
Bind a socket to an endpoint.
void zcm_node_list_free(zcm_node_entry_t *entries, size_t count)
Free list memory returned by zcm_node_list().
int zcm_node_unregister(zcm_node_t *node, const char *name)
Remove a previously registered name from the broker.
struct zcm_node zcm_node_t
Opaque broker-registry client handle.
Definition zcm_node.h:24
int zcm_socket_recv_msg(zcm_socket_t *sock, zcm_msg_t *msg)
Receive and decode a typed message.
int zcm_node_handle_control_msg(zcm_msg_t *req, zcm_msg_t *reply, int *out_should_exit)
Handle a standard ZCM_CMD management message.
Node listing entry returned by zcm_node_list().
Definition zcm_node.h:45
char * endpoint
Endpoint string associated with name.
Definition zcm_node.h:49
char * name
Registered logical name.
Definition zcm_node.h:47
Typed message builder/parser API for zCm payloads.