return 0;
}
+
+void fr_control_service(fr_control_t *c, void *data, size_t data_size, fr_time_t now)
+{
+ uint32_t id;
+ size_t message_size;
+
+ while (true) {
+ message_size = fr_control_message_pop(c->aq, &id, data, data_size);
+ if (!message_size) return;
+
+ if (!c->ident[id].callback) continue;
+
+ c->ident[id].callback(c->ident[id].ctx, data, message_size, now);
+ }
+}
int fr_control_callback_add(fr_control_t *c, uint32_t id, void *ctx, fr_control_callback_t callback) CC_HINT(nonnull(1,4));
int fr_control_callback_delete(fr_control_t *c, uint32_t id) CC_HINT(nonnull);
+void fr_control_service(fr_control_t *c, void *data, size_t data_size, fr_time_t now) CC_HINT(nonnull);
+
#ifdef __cplusplus
}
#endif