40#define XTC_SVR_CONTINUE 0
42#define XTC_SVR_NOREPLY 2
44typedef struct xtc_svr xtc_svr_t;
45typedef struct xtc_svr_call xtc_svr_call_t;
47typedef struct xtc_svr_callbacks {
48 int (*init) (
void *state);
49 int (*handle_call) (
void *state,
const void *req,
size_t req_size,
50 xtc_svr_call_t *call);
51 int (*handle_cast) (
void *state,
const void *msg,
size_t size);
52 int (*handle_info) (
void *state,
const void *msg,
size_t size);
60 int (*handle_continue)(
void *state,
void *cont);
61 void (*terminate) (
void *state,
int reason);
64typedef struct xtc_svr_opts {
83int xtc_svr_start(xtc_loop_t *loop,
89int xtc_svr_stop(xtc_svr_t *svr);
90int xtc_svr_join(xtc_svr_t *svr, int64_t timeout_ns);
91xtc_pid_t xtc_svr_pid(
const xtc_svr_t *svr);
100 const void *req,
size_t req_size,
101 void **out_reply,
size_t *out_size,
111int xtc_svr_call_abortable(
xtc_pid_t target,
112 const void *req,
size_t req_size,
113 void **out_reply,
size_t *out_size,
114 int64_t timeout_ns, xtc_abort_token_t *tok);
118int xtc_svr_cast(
xtc_pid_t target,
const void *msg,
size_t size);
122int xtc_svr_reply(xtc_svr_call_t *call,
123 const void *reply,
size_t size);
133int xtc_svr_continue(
void *cont);
152xtc_svr_call_t *xtc_svr_call_save(
const xtc_svr_call_t *call);