11#ifndef ASRT_COLLECT_CLIENT_H
12#define ASRT_COLLECT_CLIENT_H
18#include "../asrtl/chann.h"
19#include "../asrtl/collect_proto.h"
20#include "../asrtl/flat_tree.h"
23typedef asrt_send_done_cb asrt_collect_done_cb;
25enum asrt_collect_client_state
27 ASRT_COLLECT_CLIENT_IDLE = 0,
28 ASRT_COLLECT_CLIENT_READY_RECV,
29 ASRT_COLLECT_CLIENT_READY_SENT,
30 ASRT_COLLECT_CLIENT_ACTIVE,
31 ASRT_COLLECT_CLIENT_APPEND_SENT,
32 ASRT_COLLECT_CLIENT_ERROR,
44 enum asrt_collect_client_state state;
52 void* append_done_ptr;
57enum asrt_status asrt_collect_client_init(
75enum asrt_status asrt_collect_client_append(
77 asrt_flat_id parent_id,
81 asrt_collect_done_cb done_cb,
85static inline enum asrt_status asrt_collect_client_append_object(
87 asrt_flat_id parent_id,
90 asrt_collect_done_cb done_cb,
94 return asrt_collect_client_append( client, parent_id, key, &v, out_id, done_cb, done_ptr );
98static inline enum asrt_status asrt_collect_client_append_array(
100 asrt_flat_id parent_id,
102 asrt_flat_id* out_id,
103 asrt_collect_done_cb done_cb,
107 return asrt_collect_client_append( client, parent_id, key, &v, out_id, done_cb, done_ptr );
111static inline enum asrt_status asrt_collect_client_append_u32(
113 asrt_flat_id parent_id,
116 asrt_collect_done_cb done_cb,
120 v.data.s.u32_val = val;
121 return asrt_collect_client_append( client, parent_id, key, &v, NULL, done_cb, done_ptr );
125static inline enum asrt_status asrt_collect_client_append_i32(
127 asrt_flat_id parent_id,
130 asrt_collect_done_cb done_cb,
134 v.data.s.i32_val = val;
135 return asrt_collect_client_append( client, parent_id, key, &v, NULL, done_cb, done_ptr );
139static inline enum asrt_status asrt_collect_client_append_str(
141 asrt_flat_id parent_id,
144 asrt_collect_done_cb done_cb,
148 v.data.s.str_val = val;
149 return asrt_collect_client_append( client, parent_id, key, &v, NULL, done_cb, done_ptr );
153static inline enum asrt_status asrt_collect_client_append_bool(
155 asrt_flat_id parent_id,
158 asrt_collect_done_cb done_cb,
162 v.data.s.bool_val = val;
163 return asrt_collect_client_append( client, parent_id, key, &v, NULL, done_cb, done_ptr );
167static inline enum asrt_status asrt_collect_client_append_float(
169 asrt_flat_id parent_id,
172 asrt_collect_done_cb done_cb,
176 v.data.s.float_val = val;
177 return asrt_collect_client_append( client, parent_id, key, &v, NULL, done_cb, done_ptr );
181static inline enum asrt_status asrt_collect_client_append_null(
183 asrt_flat_id parent_id,
185 asrt_collect_done_cb done_cb,
189 return asrt_collect_client_append( client, parent_id, key, &v, NULL, done_cb, done_ptr );
193static inline asrt_flat_id asrt_collect_client_root_id(
struct asrt_collect_client const* client )
199static inline uint8_t asrt_collect_client_is_busy(
struct asrt_collect_client const* client )
201 return client->state == ASRT_COLLECT_CLIENT_READY_SENT ||
202 client->state == ASRT_COLLECT_CLIENT_APPEND_SENT;
Definition: collect_proto.h:74
Reactor-side collect client (ASRT_COLL channel).
Definition: collect.h:41
asrt_flat_id root_id
Root ID from READY message.
Definition: collect.h:45
asrt_flat_id next_node_id
Next auto-assigned node ID.
Definition: collect.h:46
asrt_collect_done_cb append_done_cb
User callback, fired when append send completes.
Definition: collect.h:51
Definition: flat_tree.h:90
A node in a doubly-linked channel chain.
Definition: chann.h:122