Motr  M0
interface.c File Reference
#include "lib/trace.h"
#include "ha/halon/interface.h"
#include <stdlib.h>
#include "lib/types.h"
#include "lib/misc.h"
#include "lib/memory.h"
#include "lib/bob.h"
#include "lib/errno.h"
#include "lib/string.h"
#include "lib/uuid.h"
#include "lib/thread.h"
#include "net/net.h"
#include "net/buffer_pool.h"
#include "fid/fid.h"
#include "module/instance.h"
#include "reqh/reqh.h"
#include "reqh/reqh_service.h"
#include "rpc/rpc.h"
#include "rpc/rpc_machine.h"
#include "sm/sm.h"
#include "rm/rm_service.h"
#include "spiel/spiel.h"
#include "cm/cm.h"
#include "conf/ha.h"
#include "conf/obj.h"
#include "motr/init.h"
#include "motr/magic.h"
#include "motr/version.h"
#include "ha/msg.h"
#include "ha/ha.h"
#include "ha/entrypoint_fops.h"
#include "ha/dispatcher.h"
#include "ha/note.h"
Include dependency graph for interface.c:

Go to the source code of this file.

Data Structures

struct  m0_halon_interface_cfg
 
struct  m0_halon_interface_internal
 

Macros

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_HA
 

Enumerations

enum  { HALON_INTERFACE_EP_BUF = 0x40, HALON_INTERFACE_NVEC_SIZE_MAX = 0x1000 }
 
enum  m0_halon_interface_level {
  M0_HALON_INTERFACE_LEVEL_ASSIGNS, M0_HALON_INTERFACE_LEVEL_NET_DOMAIN, M0_HALON_INTERFACE_LEVEL_NET_BUFFER_POOL, M0_HALON_INTERFACE_LEVEL_REQH_INIT,
  M0_HALON_INTERFACE_LEVEL_REQH_START, M0_HALON_INTERFACE_LEVEL_RPC_MACHINE, M0_HALON_INTERFACE_LEVEL_HA_INIT, M0_HALON_INTERFACE_LEVEL_DISPATCHER,
  M0_HALON_INTERFACE_LEVEL_HA_START, M0_HALON_INTERFACE_LEVEL_HA_CONNECT, M0_HALON_INTERFACE_LEVEL_INSTANCE_SET, M0_HALON_INTERFACE_LEVEL_EVENTS_STARTING,
  M0_HALON_INTERFACE_LEVEL_RM_SETUP, M0_HALON_INTERFACE_LEVEL_SPIEL_INIT, M0_HALON_INTERFACE_LEVEL_SNS_CM_TRIGGER_FOPS, M0_HALON_INTERFACE_LEVEL_EVENTS_STARTED,
  M0_HALON_INTERFACE_LEVEL_STARTED
}
 
enum  m0_halon_interface_state { M0_HALON_INTERFACE_STATE_UNINITIALISED, M0_HALON_INTERFACE_STATE_INITIALISED, M0_HALON_INTERFACE_STATE_WORKING, M0_HALON_INTERFACE_STATE_FINALISED }
 

Functions

 M0_BOB_DEFINE (static, &halon_interface_bob_type, m0_halon_interface_internal)
 
static bool halon_interface_is_compatible (struct m0_halon_interface *hi, const char *build_git_rev_id, const char *build_configure_opts, bool disable_compat_check)
 
static void halon_interface_parse_debug_options (struct m0_halon_interface *hi, const char *debug_options)
 
static struct m0_halon_interface_internalhalon_interface_ha2hii (struct m0_ha *ha)
 
static void halon_interface_process_failure_check (struct m0_halon_interface_internal *hii, struct m0_ha_msg *msg)
 
static void halon_interface_entrypoint_request_cb (struct m0_ha *ha, const struct m0_ha_entrypoint_req *req, const struct m0_uint128 *req_id)
 
static void halon_interface_entrypoint_replied_cb (struct m0_ha *ha, struct m0_ha_entrypoint_rep *rep)
 
static void halon_interface_msg_received_cb (struct m0_ha *ha, struct m0_ha_link *hl, struct m0_ha_msg *msg, uint64_t tag)
 
static void halon_interface_msg_is_delivered_cb (struct m0_ha *ha, struct m0_ha_link *hl, uint64_t tag)
 
static void halon_interface_msg_is_not_delivered_cb (struct m0_ha *ha, struct m0_ha_link *hl, uint64_t tag)
 
static void halon_interface_link_connected_cb (struct m0_ha *ha, const struct m0_uint128 *req_id, struct m0_ha_link *hl)
 
static void halon_interface_link_reused_cb (struct m0_ha *ha, const struct m0_uint128 *req_id, struct m0_ha_link *hl)
 
static void halon_interface_link_absent_cb (struct m0_ha *ha, const struct m0_uint128 *req_id)
 
static void halon_interface_link_is_disconnecting_cb (struct m0_ha *ha, struct m0_ha_link *hl)
 
static void halon_interface_link_disconnected_cb (struct m0_ha *ha, struct m0_ha_link *hl)
 
int m0_halon_interface_init (struct m0_halon_interface **hi_out, const char *build_git_rev_id, const char *build_configure_opts, const char *debug_options, const char *node_uuid)
 
void m0_halon_interface_fini (struct m0_halon_interface *hi)
 
static void halon_interface_process_event (struct m0_halon_interface_internal *hii, enum m0_conf_ha_process_event event)
 
static void halon_interface_service_event (struct m0_halon_interface_internal *hii, enum m0_conf_ha_service_event event)
 
static int halon_interface_level_enter (struct m0_module *module)
 
static void halon_interface_level_leave (struct m0_module *module)
 
int m0_halon_interface_start (struct m0_halon_interface *hi, const char *local_rpc_endpoint, const struct m0_fid *process_fid, const struct m0_fid *ha_service_fid, const struct m0_fid *rm_service_fid, void(*entrypoint_request_cb)(struct m0_halon_interface *hi, const struct m0_uint128 *req_id, const char *remote_rpc_endpoint, const struct m0_fid *process_fid, const char *git_rev_id, uint64_t pid, bool first_request), void(*msg_received_cb)(struct m0_halon_interface *hi, struct m0_ha_link *hl, const struct m0_ha_msg *msg, uint64_t tag), void(*msg_is_delivered_cb)(struct m0_halon_interface *hi, struct m0_ha_link *hl, uint64_t tag), void(*msg_is_not_delivered_cb)(struct m0_halon_interface *hi, struct m0_ha_link *hl, uint64_t tag), void(*link_connected_cb)(struct m0_halon_interface *hi, const struct m0_uint128 *req_id, struct m0_ha_link *link), void(*link_reused_cb)(struct m0_halon_interface *hi, const struct m0_uint128 *req_id, struct m0_ha_link *link), void(*link_absent_cb)(struct m0_halon_interface *hi, const struct m0_uint128 *req_id), void(*link_is_disconnecting_cb)(struct m0_halon_interface *hi, struct m0_ha_link *link), void(*link_disconnected_cb)(struct m0_halon_interface *hi, struct m0_ha_link *link))
 
void m0_halon_interface_stop (struct m0_halon_interface *hi)
 
void m0_halon_interface_entrypoint_reply (struct m0_halon_interface *hi, const struct m0_uint128 *req_id, int rc, uint32_t confd_nr, const struct m0_fid *confd_fid_data, const char **confd_eps_data, uint32_t confd_quorum, const struct m0_fid *rm_fid, const char *rm_eps)
 
void m0_halon_interface_send (struct m0_halon_interface *hi, struct m0_ha_link *hl, const struct m0_ha_msg *msg, uint64_t *tag)
 
void m0_halon_interface_delivered (struct m0_halon_interface *hi, struct m0_ha_link *hl, const struct m0_ha_msg *msg)
 
void m0_halon_interface_disconnect (struct m0_halon_interface *hi, struct m0_ha_link *hl)
 
static bool halon_interface_is_working (struct m0_halon_interface_internal *hii)
 
struct m0_rpc_machinem0_halon_interface_rpc_machine (struct m0_halon_interface *hi)
 
struct m0_reqhm0_halon_interface_reqh (struct m0_halon_interface *hi)
 
struct m0_spielm0_halon_interface_spiel (struct m0_halon_interface *hi)
 
M0_INTERNAL int m0_halon_interface_thread_adopt (struct m0_halon_interface *hi, struct m0_thread *thread)
 
M0_INTERNAL void m0_halon_interface_thread_shun (void)
 

Variables

static const struct m0_bob_type halon_interface_bob_type
 
static const struct m0_ha_ops halon_interface_ha_ops
 
static struct m0_sm_state_descr halon_interface_states []
 
static struct m0_sm_conf halon_interface_sm_conf
 
static const struct m0_modlev halon_interface_levels []