Motr  M0
item.h File Reference
#include "lib/types.h"
#include "lib/tlist.h"
#include "lib/list.h"
#include "lib/time.h"
#include "sm/sm.h"
#include "rpc/onwire.h"
Include dependency graph for item.h:

Go to the source code of this file.

Data Structures

struct  m0_rpc_item
 
struct  m0_rpc_item_ops
 
struct  m0_rpc_item_type_ops
 
struct  m0_rpc_item_type
 
struct  m0_rpc_item_cache
 

Macros

#define __MOTR_RPC_ITEM_H__
 
#define ITEM_FMT   "%p [%s/%s(%u)]"
 
#define ITEM_ARG(item)
 

Enumerations

enum  m0_rpc_item_priority { M0_RPC_ITEM_PRIO_MIN, M0_RPC_ITEM_PRIO_MID, M0_RPC_ITEM_PRIO_MAX, M0_RPC_ITEM_PRIO_NR }
 
enum  m0_rpc_item_state {
  M0_RPC_ITEM_UNINITIALISED, M0_RPC_ITEM_INITIALISED, M0_RPC_ITEM_ENQUEUED, M0_RPC_ITEM_URGENT,
  M0_RPC_ITEM_SENDING, M0_RPC_ITEM_SENT, M0_RPC_ITEM_WAITING_FOR_REPLY, M0_RPC_ITEM_REPLIED,
  M0_RPC_ITEM_ACCEPTED, M0_RPC_ITEM_FAILED, M0_RPC_ITEM_NR_STATES
}
 
enum  m0_rpc_item_dir { M0_RPC_ITEM_INCOMING, M0_RPC_ITEM_OUTGOING }
 
enum  m0_rpc_item_resend { M0_RPC_ITEM_RESEND_INTERVAL = 1, M0_RPC_ITEM_REPLY_CACHE_TMO = 100, M0_RPC_ITEM_REQ_CACHE_TMO = 100 }
 
enum  m0_rpc_item_flags { M0_RIF_DUP = 1 << 0, M0_RIF_REPLIED = 1 << 1 }
 
enum  m0_rpc_item_type_flags {
  M0_RPC_ITEM_TYPE_REQUEST = (1 << 0), M0_RPC_ITEM_TYPE_REPLY = (1 << 1), M0_RPC_ITEM_TYPE_ONEWAY = (1 << 2), M0_RPC_ITEM_TYPE_MUTABO = (1 << 3),
  M0_RPC_MUTABO_REQ = M0_RPC_ITEM_TYPE_MUTABO | M0_RPC_ITEM_TYPE_REQUEST
}
 
enum  { RIC_HASH_MASK = 0xff, RIC_HASH_SIZE = RIC_HASH_MASK + 1 }
 

Functions

void m0_rpc_item_init (struct m0_rpc_item *item, const struct m0_rpc_item_type *itype)
 
void m0_rpc_item_fini (struct m0_rpc_item *item)
 
void m0_rpc_item_get (struct m0_rpc_item *item)
 
void m0_rpc_item_put (struct m0_rpc_item *item)
 
void m0_rpc_item_put_lock (struct m0_rpc_item *item)
 
m0_bcount_t m0_rpc_item_payload_size (struct m0_rpc_item *item)
 
m0_bcount_t m0_rpc_item_size (struct m0_rpc_item *item)
 
M0_INTERNAL bool m0_rpc_item_max_payload_exceeded (struct m0_rpc_item *item, struct m0_rpc_session *session)
 
int m0_rpc_item_timedwait (struct m0_rpc_item *item, uint64_t states, m0_time_t timeout)
 
int m0_rpc_item_wait_for_reply (struct m0_rpc_item *item, m0_time_t timeout)
 
void m0_rpc_item_cancel (struct m0_rpc_item *item)
 
void m0_rpc_item_cancel_nolock (struct m0_rpc_item *item)
 
void m0_rpc_item_cancel_init (struct m0_rpc_item *item)
 
int32_t m0_rpc_item_error (const struct m0_rpc_item *item)
 
M0_INTERNAL void m0_rpc_item_type_register (struct m0_rpc_item_type *item_type)
 
M0_INTERNAL void m0_rpc_item_type_deregister (struct m0_rpc_item_type *item_type)
 
M0_INTERNAL struct m0_rpc_item_typem0_rpc_item_type_lookup (uint32_t opcode)
 
M0_INTERNAL const char * m0_rpc_item_remote_ep_addr (const struct m0_rpc_item *item)
 
M0_INTERNAL const char * m0_rpc_item_opname (const struct m0_rpc_item *item)
 
M0_INTERNAL const char * m0_rpc_item_type_name (const struct m0_rpc_item_type *item_type)
 
M0_INTERNAL int m0_rpc_item_cache_init (struct m0_rpc_item_cache *ic, struct m0_mutex *lock)
 
M0_INTERNAL void m0_rpc_item_cache_fini (struct m0_rpc_item_cache *ic)
 
M0_INTERNAL bool m0_rpc_item_cache__invariant (struct m0_rpc_item_cache *ic)
 
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 void m0_rpc_item_cache_del (struct m0_rpc_item_cache *ic, uint64_t xid)
 
M0_INTERNAL struct m0_rpc_itemm0_rpc_item_cache_lookup (struct m0_rpc_item_cache *ic, uint64_t xid)
 
M0_INTERNAL void m0_rpc_item_cache_purge (struct m0_rpc_item_cache *ic)
 
M0_INTERNAL void m0_rpc_item_cache_clear (struct m0_rpc_item_cache *ic)
 
M0_INTERNAL void m0_rpc_item_xid_list_init (struct m0_rpc_session *session)
 
M0_INTERNAL void m0_rpc_item_xid_list_fini (struct m0_rpc_session *session)
 
M0_INTERNAL void m0_rpc_item_pending_cache_init (struct m0_rpc_session *session)
 
M0_INTERNAL void m0_rpc_item_pending_cache_fini (struct m0_rpc_session *session)
 
M0_INTERNAL void m0_rpc_item_pending_cache_add (struct m0_rpc_item *item)
 
M0_INTERNAL void m0_rpc_item_pending_cache_del (struct m0_rpc_item *item)
 

Variables

M0_EXTERN m0_bcount_t m0_rpc_item_onwire_header_size
 
M0_EXTERN m0_bcount_t m0_rpc_item_onwire_footer_size
 

Macro Definition Documentation

◆ __MOTR_RPC_ITEM_H__

#define __MOTR_RPC_ITEM_H__

Definition at line 26 of file item.h.