26#include "xtc_export.h"
42#define XTC_SVR_CONTINUE 0
44#define XTC_SVR_NOREPLY 2
46typedef struct xtc_svr xtc_svr_t;
47typedef struct xtc_svr_call xtc_svr_call_t;
49typedef struct xtc_svr_callbacks {
50 int (*init) (
void *state);
51 int (*handle_call) (
void *state,
const void *req,
size_t req_size,
52 xtc_svr_call_t *call);
53 int (*handle_cast) (
void *state,
const void *msg,
size_t size);
54 int (*handle_info) (
void *state,
const void *msg,
size_t size);
62 int (*handle_continue)(
void *state,
void *cont);
63 void (*terminate) (
void *state,
int reason);
66typedef struct xtc_svr_opts {
85XTC_API
int xtc_svr_start(xtc_loop_t *loop,
91XTC_API
int xtc_svr_stop(xtc_svr_t *svr);
92XTC_API
int xtc_svr_join(xtc_svr_t *svr, int64_t timeout_ns);
93XTC_API
xtc_pid_t xtc_svr_pid(
const xtc_svr_t *svr);
101XTC_API
int xtc_svr_call(
xtc_pid_t target,
102 const void *req,
size_t req_size,
103 void **out_reply,
size_t *out_size,
113XTC_API
int xtc_svr_call_abortable(
xtc_pid_t target,
114 const void *req,
size_t req_size,
115 void **out_reply,
size_t *out_size,
116 int64_t timeout_ns, xtc_abort_token_t *tok);
120XTC_API
int xtc_svr_cast(
xtc_pid_t target,
const void *msg,
size_t size);
124XTC_API
int xtc_svr_reply(xtc_svr_call_t *call,
125 const void *reply,
size_t size);
135XTC_API
int xtc_svr_continue(
void *cont);
154XTC_API xtc_svr_call_t *xtc_svr_call_save(
const xtc_svr_call_t *call);