24 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_RPC 63 rev_conn_tlist_init(&
svc->rps_rev_conns);
74 rev_conn_tlist_fini(&
svc->rps_rev_conns);
82 m0_rpc_service_bob_fini(
svc);
110 m0_rpc_service_bob_init(
svc);
124 .rst_keep_alive =
true,
181 rc = revc ==
NULL ? -ENOMEM : 0;
190 rev_conn_tlink_init_at_tail(revc, &
svc->rps_rev_conns);
201 rev_conn_tlink_del_fini(revc);
273 rev_conn_tlink_fini(revc);
308 #undef M0_TRACE_SUBSYSTEM M0_INTERNAL int m0_uint128_cmp(const struct m0_uint128 *u0, const struct m0_uint128 *u1)
M0_INTERNAL void m0_chan_wait(struct m0_clink *link)
static void rev_conn_free(struct m0_sm_group *grp, struct m0_sm_ast *ast)
int(* rso_start)(struct m0_reqh_service *service)
M0_INTERNAL void m0_clink_init(struct m0_clink *link, m0_chan_cb_t cb)
M0_INTERNAL void m0_ha_state_fop_fini(void)
void(* sa_cb)(struct m0_sm_group *grp, struct m0_sm_ast *)
static int rpc_service_allocate(struct m0_reqh_service **service, const struct m0_reqh_service_type *stype)
M0_INTERNAL int m0_rpc_link_init(struct m0_rpc_link *rlink, struct m0_rpc_machine *mach, struct m0_fid *svc_fid, const char *ep, uint64_t max_rpcs_in_flight)
static struct m0_sm_group * grp
M0_INTERNAL void m0_sm_ast_post(struct m0_sm_group *grp, struct m0_sm_ast *ast)
M0_INTERNAL int m0_ha_state_fop_init(void)
static void rpc_service_fini(struct m0_reqh_service *service)
struct m0_rpc_conn rlk_conn
M0_TL_DESCR_DEFINE(dopr, "dtm0_process", static, struct dtm0_process, dop_link, dop_magic, M0_DTM0_PROC_MAGIC, M0_DTM0_PROC_HEAD_MAGIC)
static const struct m0_reqh_service_type_ops rpc_service_type_ops
M0_INTERNAL void m0_rpc_link_fini(struct m0_rpc_link *rlink)
#define container_of(ptr, type, member)
static struct m0_rpc_item * item
struct m0_reqh_service * rh_rpc_service
int m0_reqh_service_type_register(struct m0_reqh_service_type *rstype)
M0_INTERNAL void m0_rpc_service_reverse_sessions_cleanup(struct m0_reqh_service *service)
static void rpc_service_stop(struct m0_reqh_service *service)
static struct m0_sm_ast ast[NR]
M0_INTERNAL void m0_sm_group_unlock(struct m0_sm_group *grp)
static const struct m0_reqh_service_ops rpc_ops
M0_INTERNAL void m0_rpc_service_reverse_session_put(struct m0_rpc_session *sess)
return M0_ERR(-EOPNOTSUPP)
M0_INTERNAL struct m0_reqh_service * m0_reqh_rpc_service_find(struct m0_reqh *reqh)
static const struct socktype stype[]
#define m0_tl_teardown(name, head, obj)
M0_INTERNAL void m0_reqh_service_quit(struct m0_reqh_service *svc)
M0_INTERNAL int m0_rpc_session_status(struct m0_rpc_session *session)
struct m0_rpc_item_header2 ri_header
#define bob_of(ptr, type, field, bt)
struct m0_tl rh_rpc_machines
struct m0_clink * cl_group
static bool rev_conn_disconnected_cb(struct m0_clink *link)
M0_INTERNAL void m0_rpc_service_stop(struct m0_reqh *reqh)
M0_INTERNAL struct m0_rpc_session * m0_rpc_service_reverse_session_lookup(struct m0_reqh_service *service, const struct m0_rpc_item *item)
static const struct m0_bob_type rpc_svc_bob
static struct m0_clink clink[RDWR_REQUEST_MAX]
M0_INTERNAL int m0_reqh_service_setup(struct m0_reqh_service **out, struct m0_reqh_service_type *stype, struct m0_reqh *reqh, struct m0_reqh_context *rctx, const struct m0_fid *fid)
struct m0_reqh_service rps_svc
M0_TL_DEFINE(dopr, static, struct dtm0_process)
struct m0_rpc_link rcf_rlink
M0_BOB_DEFINE(static, &dtm0_service_bob, m0_dtm0_service)
M0_INTERNAL void m0_rpc_service_unregister(void)
M0_INTERNAL struct m0_reqh_service * m0_reqh_service_find(const struct m0_reqh_service_type *st, const struct m0_reqh *reqh)
M0_INTERNAL void m0_rpc_link_connect_async(struct m0_rpc_link *rlink, m0_time_t abs_timeout, struct m0_clink *wait_clink)
int(* rsto_service_allocate)(struct m0_reqh_service **service, const struct m0_reqh_service_type *stype)
struct m0_reqh_service_type m0_rpc_service_type
M0_INTERNAL struct m0_locality * m0_locality0_get(void)
const struct m0_reqh_service_type * rs_type
#define M0_ALLOC_PTR(ptr)
m0_time_t m0_time_from_now(uint64_t secs, long ns)
M0_INTERNAL int m0_rpc_service_reverse_session_get(struct m0_reqh_service *service, const struct m0_rpc_item *item, struct m0_clink *clink, struct m0_rpc_session **session)
static struct m0_net_test_service svc
M0_INTERNAL void m0_clink_fini(struct m0_clink *link)
static struct m0_fop * fop
M0_INTERNAL void m0_sm_group_lock(struct m0_sm_group *grp)
static int rpc_service_fop_accept(struct m0_reqh_service *service, struct m0_fop *fop)
struct m0_rpc_session rlk_sess
struct m0_rpc_machine * ri_rmachine
struct m0_clink rcf_disc_wait
#define m0_tl_find(name, var, head,...)
M0_INTERNAL void m0_rpc_link_disconnect_async(struct m0_rpc_link *rlink, m0_time_t abs_timeout, struct m0_clink *wait_clink)
#define m0_tl_for(name, head, obj)
struct m0_sm_ast rcf_free_ast
void m0_reqh_service_type_unregister(struct m0_reqh_service_type *rstype)
M0_INTERNAL int m0_rpc_service_start(struct m0_reqh *reqh)
static struct m0_reqh_service * service[REQH_IN_UT_MAX]
M0_INTERNAL int m0_rpc_service_register(void)
#define offsetof(typ, memb)
static int rpc_service_start(struct m0_reqh_service *service)
M0_INTERNAL const char * m0_rpc_item_remote_ep_addr(const struct m0_rpc_item *item)