39 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_ADDB 54 #include "addb2/addb2_xc.h" 104 static,
struct source, s_linkage, s_magix,
182 "addb2 item source", &
src_ops);
189 return M0_RC(result);
251 if (!tr_tlist_is_empty(
q)) {
257 if (tr_tlist_is_empty(
q))
258 (*callback)(
net, datum);
277 .
xt = m0_addb2_trace_xc,
460 #undef M0_TRACE_SUBSYSTEM
static void src_conn_terminating(struct m0_rpc_item_source *ris)
void m0_rpc_item_source_fini(struct m0_rpc_item_source *ris)
M0_INTERNAL void m0_addb2_net_fini(struct m0_addb2_net *net)
M0_INTERNAL void m0_rpc_oneway_item_post(const struct m0_rpc_conn *conn, struct m0_rpc_item *item)
struct m0_rpc_conn * ris_conn
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
static struct m0_semaphore q
#define M0_FOP_TYPE_INIT(ft,...)
void m0_rpc_item_source_deregister(struct m0_rpc_item_source *ris)
M0_INTERNAL void m0_fop_init(struct m0_fop *fop, struct m0_fop_type *fopt, void *data, void(*fop_release)(struct m0_ref *))
#define M0_LOG(level,...)
void(* ne_callback)(struct m0_addb2_net *, void *)
M0_INTERNAL bool m0_mutex_is_not_locked(const struct m0_mutex *mutex)
void m0_rpc_item_source_init(struct m0_rpc_item_source *ris, const char *name, const struct m0_rpc_item_source_ops *ops)
static const struct m0_rpc_item_ops net_rpc_ops
void * m0_fop_data(const struct m0_fop *fop)
void m0_fop_type_fini(struct m0_fop_type *fopt)
M0_EXTERN const struct m0_sm_conf m0_addb2__sm_conf
struct m0_tlink s_linkage
static void src_fini(struct source *s)
static void net_fop_init(struct m0_fop *fop, struct m0_addb2_net *net, struct m0_addb2_trace *trace)
M0_INTERNAL bool m0_addb2_net__is_not_locked(const struct m0_addb2_net *net)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
static struct m0_xcode_type ** xt[]
static struct m0_rpc_item * item
M0_INTERNAL struct m0_addb2_net * m0_addb2_net_init(void)
static const m0_time_t IDLE_THRESHOLD
M0_TL_DEFINE(src, static, struct source)
M0_TL_DESCR_DEFINE(src, "addb2 rpc sources", static, struct source, s_linkage, s_magix, M0_ADDB2_SOURCE_MAGIC, M0_ADDB2_SOURCE_HEAD_MAGIC)
struct m0_rpc_machine * c_rpc_machine
void m0_addb2_trace_done(const struct m0_addb2_trace *ctrace)
bool m0_time_is_in_past(m0_time_t t)
static bool src_has_item(const struct m0_rpc_item_source *ris)
return M0_ERR(-EOPNOTSUPP)
M0_INTERNAL void m0_rpc_machine_unlock(struct m0_rpc_machine *machine)
static void net_unlock(struct m0_addb2_net *net)
#define M0_AMB(obj, ptr, field)
#define m0_tl_teardown(name, head, obj)
static struct m0_rpc_item * src_get_item(struct m0_rpc_item_source *ris, m0_bcount_t size)
m0_time_t m0_time_now(void)
static struct m0_thread t[8]
static const struct m0_rpc_item_source_ops src_ops
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
M0_INTERNAL struct m0_reqh_service_type m0_addb2_service_type
M0_INTERNAL int m0_addb2_net_submit(struct m0_addb2_net *net, struct m0_addb2_trace_obj *obj)
M0_INTERNAL void m0_fop_fini(struct m0_fop *fop)
void(* rio_sent)(struct m0_rpc_item *item)
m0_time_t m0_time_add(const m0_time_t t1, const m0_time_t t2)
M0_INTERNAL void m0_addb2_net_del(struct m0_addb2_net *net, struct m0_rpc_conn *conn)
struct m0_rpc_item_source s_src
struct m0_fop_data f_data
M0_INTERNAL int m0_addb2_net_add(struct m0_addb2_net *net, struct m0_rpc_conn *conn)
M0_INTERNAL void m0_addb2_net_module_fini(void)
M0_INTERNAL void m0_rpc_machine_lock(struct m0_rpc_machine *machine)
M0_INTERNAL void m0_fop_release(struct m0_ref *ref)
#define M0_ALLOC_PTR(ptr)
const struct m0_rpc_item_ops * ri_ops
M0_INTERNAL m0_bcount_t m0_addb2_trace_size(const struct m0_addb2_trace *trace)
M0_INTERNAL void m0_mutex_fini(struct m0_mutex *mutex)
static struct m0_fop * fop
struct m0_fop * m0_rpc_item_to_fop(const struct m0_rpc_item *item)
#define M0_MKTIME(secs, ns)
static void net_sent(struct m0_rpc_item *item)
M0_INTERNAL void m0_addb2_net_stop(struct m0_addb2_net *net, void(*callback)(struct m0_addb2_net *, void *), void *datum)
static struct m0_addb2_net * net
M0_INTERNAL int m0_addb2_net_module_init(void)
static bool net_invariant(const struct m0_addb2_net *net)
M0_EXTERN const struct m0_fom_type_ops m0_addb2__fom_type_ops
struct m0_addb2_net * s_net
M0_INTERNAL void m0_addb2_net_tick(struct m0_addb2_net *net)
static int scan(struct scanner *s)
#define m0_tl_find(name, var, head,...)
static struct m0_fop_type net_fopt
static struct m0_addb2_source * s
struct m0_rpc_item f_item
static void net_lock(struct m0_addb2_net *net)
struct m0_pdclust_src_addr src
void m0_rpc_item_source_register_locked(struct m0_rpc_conn *conn, struct m0_rpc_item_source *ris)
static void net_force(struct m0_addb2_net *net)
bool(* riso_has_item)(const struct m0_rpc_item_source *ris)
#define m0_tl_forall(name, var, head,...)