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);
53 void (*terminate) (
void *state,
int reason);
56typedef struct xtc_svr_opts {
74int xtc_svr_start(xtc_loop_t *loop,
80int xtc_svr_stop(xtc_svr_t *svr);
81int xtc_svr_join(xtc_svr_t *svr, int64_t timeout_ns);
82xtc_pid_t xtc_svr_pid(
const xtc_svr_t *svr);
91 const void *req,
size_t req_size,
92 void **out_reply,
size_t *out_size,
102int xtc_svr_call_abortable(
xtc_pid_t target,
103 const void *req,
size_t req_size,
104 void **out_reply,
size_t *out_size,
105 int64_t timeout_ns, xtc_abort_token_t *tok);
109int xtc_svr_cast(
xtc_pid_t target,
const void *msg,
size_t size);
113int xtc_svr_reply(xtc_svr_call_t *call,
114 const void *reply,
size_t size);
133xtc_svr_call_t *xtc_svr_call_save(
const xtc_svr_call_t *call);