25 #ifndef __MOTR_RPC_ITEM_H__ 26 #define __MOTR_RPC_ITEM_H__ 515 M0_INTERNAL
const char *
520 M0_INTERNAL
const char *
617 #define ITEM_FMT "%p [%s/%s(%u)]" 618 #define ITEM_ARG(item) (item), item_kind(item), m0_rpc_item_opname(item), \ 619 ((item)->ri_type != NULL ? (item)->ri_type->rit_opcode : 0) M0_INTERNAL void m0_rpc_item_xid_list_fini(struct m0_rpc_session *session)
static struct m0_mutex lock
m0_time_t ri_resend_interval
static struct m0_list list
enum m0_rpc_item_priority ri_prio
M0_INTERNAL void m0_rpc_item_xid_list_init(struct m0_rpc_session *session)
struct m0_tlink ri_cache_link
static struct buffer * cur(struct m0_addb2_mach *mach, m0_bcount_t space)
struct m0_sm_timer ri_timer
const struct m0_rpc_item_type_ops * rit_ops
void m0_rpc_item_put(struct m0_rpc_item *item)
struct m0_container container
void m0_rpc_item_get(struct m0_rpc_item *item)
struct m0_mutex * ric_lock
struct m0_tl ri_compound_items
M0_INTERNAL void m0_rpc_item_cache_fini(struct m0_rpc_item_cache *ic)
struct m0_tlink ri_pending_link
struct m0_rpc_item * ri_pending_reply
m0_time_t ri_cache_deadline
M0_INTERNAL struct m0_rpc_item_type * m0_rpc_item_type_lookup(uint32_t opcode)
struct m0_sm_conf rit_incoming_conf
M0_INTERNAL void m0_rpc_item_type_register(struct m0_rpc_item_type *item_type)
struct m0_sm_timeout ri_deadline_timeout
void m0_rpc_item_init(struct m0_rpc_item *item, const struct m0_rpc_item_type *itype)
static struct m0_rpc_item * item
int m0_rpc_item_wait_for_reply(struct m0_rpc_item *item, m0_time_t timeout)
M0_INTERNAL void m0_rpc_item_pending_cache_add(struct m0_rpc_item *item)
static int head(struct m0_sm *mach)
m0_bcount_t m0_rpc_item_size(struct m0_rpc_item *item)
bool(* rito_eq)(const struct m0_rpc_item *i1, const struct m0_rpc_item *i2)
void m0_rpc_item_fini(struct m0_rpc_item *item)
struct m0_tlink ri_xid_link
bool ri_xid_assigned_here
struct m0_tlink ri_iq_link
m0_bcount_t(* rito_payload_size)(const struct m0_rpc_item *item)
void(* rito_item_get)(struct m0_rpc_item *item)
M0_INTERNAL const char * m0_rpc_item_type_name(const struct m0_rpc_item_type *item_type)
void m0_rpc_item_cancel(struct m0_rpc_item *item)
M0_INTERNAL void m0_rpc_item_pending_cache_del(struct m0_rpc_item *item)
struct m0_sm_conf rit_outgoing_conf
struct m0_rpc_item_header2 ri_header
int(* rito_decode)(const struct m0_rpc_item_type *item_type, struct m0_rpc_item **item, struct m0_bufvec_cursor *cur)
M0_INTERNAL bool m0_rpc_item_max_payload_exceeded(struct m0_rpc_item *item, struct m0_rpc_session *session)
M0_INTERNAL void m0_rpc_item_cache_purge(struct m0_rpc_item_cache *ic)
M0_INTERNAL void m0_rpc_item_cache_del(struct m0_rpc_item_cache *ic, uint64_t xid)
struct m0_rpc_frm * ri_frm
bool(* rito_try_merge)(struct m0_rpc_item *container, struct m0_rpc_item *component, m0_bcount_t limit)
const struct m0_rpc_item_type * ri_type
struct m0_rpc_item * ri_reply
M0_INTERNAL void m0_rpc_item_type_deregister(struct m0_rpc_item_type *item_type)
void(* rio_sent)(struct m0_rpc_item *item)
void(* rito_item_put)(struct m0_rpc_item *item)
M0_INTERNAL void m0_rpc_item_pending_cache_fini(struct m0_rpc_session *session)
M0_INTERNAL const char * m0_rpc_item_opname(const struct m0_rpc_item *item)
M0_INTERNAL void m0_rpc_item_pending_cache_init(struct m0_rpc_session *session)
M0_INTERNAL void m0_rpc_item_cache_clear(struct m0_rpc_item_cache *ic)
void(* rio_replied)(struct m0_rpc_item *item)
struct m0_rpc_packet * ri_packet
int32_t m0_rpc_item_error(const struct m0_rpc_item *item)
void m0_rpc_item_put_lock(struct m0_rpc_item *item)
M0_INTERNAL bool m0_rpc_item_cache_add(struct m0_rpc_item_cache *ic, struct m0_rpc_item *item, m0_time_t deadline)
M0_INTERNAL int m0_rpc_item_cache_init(struct m0_rpc_item_cache *ic, struct m0_mutex *lock)
const struct m0_rpc_item_ops * ri_ops
struct m0_rpc_session * ri_session
M0_EXTERN m0_bcount_t m0_rpc_item_onwire_footer_size
void m0_rpc_item_cancel_nolock(struct m0_rpc_item *item)
m0_bcount_t m0_rpc_item_payload_size(struct m0_rpc_item *item)
M0_INTERNAL bool m0_rpc_item_cache__invariant(struct m0_rpc_item_cache *ic)
M0_INTERNAL struct m0_rpc_item * m0_rpc_item_cache_lookup(struct m0_rpc_item_cache *ic, uint64_t xid)
void(* rito_io_coalesce)(struct m0_rpc_item *head, struct m0_list *list, uint64_t size)
int(* rito_deliver)(struct m0_rpc_machine *rpcmach, struct m0_rpc_item *item)
struct m0_tlink rit_linkage
struct m0_rpc_machine * ri_rmachine
int m0_rpc_item_timedwait(struct m0_rpc_item *item, uint64_t states, m0_time_t timeout)
static struct m0_sm_state_descr states[C_NR]
int(* rito_encode)(const struct m0_rpc_item_type *item_type, struct m0_rpc_item *item, struct m0_bufvec_cursor *cur)
M0_INTERNAL const char * m0_rpc_item_remote_ep_addr(const struct m0_rpc_item *item)
void m0_rpc_item_cancel_init(struct m0_rpc_item *item)
M0_EXTERN m0_bcount_t m0_rpc_item_onwire_header_size