accelio

主要数据结构

xio_transport 协议类型,目前只有rdma,包含协议名和该协议相关的所有操作函数 ,rdma模块中定义了一个xio_rdma_transport全局变量,实现了xio_transport中所有函数,同时还有一个struct xio_rdma_transport结构,该类型是对底层驱动接口的封装,同时包含了上下文,每个conn对象都包含一个单独的,该结构实际应该是和xio_transport_base在同一层次
xio_transport_base 底层通信的上下文,每个conn对应一个
xio_conn 对transport_base的简单封装,处理框架内部定义的一些消息,握手消息之类
xio_connection 对xio_conn的封装,管理连接buf,上层请求
xio_session 网络session,一个addr对应一个session,每个session可以包含多个连接
xio_server 服务端,xio_bind调用时返回,处理session未建立前的一些事件
xio_msg,用户需要发送的内容
xio_task,打包msg,加入消息头

xio_connecton_send中,XIO_MSG_RSP_FLAG_FIRST标记和XIO_MSG_RSP_FLAG_LAST标记,如果仅设置FIRST标记,发送消息时,不使用原有的task,重新生成,这种情况出现在xio_connection_send_read_receipt的时候

rdma主要事件的顺序

RDMA_CM_EVENT_ADDR_RESOLVED
RDMA_CM_EVENT_ROUTE_RESOLVED
RDMA_CM_EVENT_CONNECT_REQUEST
RDMA_CM_EVENT_ESTABLISHED
RDMA_CM_EVENT_REJECTED
RDMA_CM_EVENT_ADDR_CHANGE
RDMA_CM_EVENT_DISCONNECTED
RDMA_CM_EVENT_TIMEWAIT_EXIT
RDMA_CM_EVENT_MULTICAST_JOIN
RDMA_CM_EVENT_MULTICAST_ERROR
RDMA_CM_EVENT_DEVICE_REMOVAL
RDMA_CM_EVENT_CONNECT_RESPONSE

状态变更

enum xio_session_state {
     XIO_SESSION_STATE_INIT,
     XIO_SESSION_STATE_CONNECT,
     XIO_SESSION_STATE_ONLINE,
     XIO_SESSION_STATE_REDIRECTED,
     XIO_SESSION_STATE_ACCEPTED,
     XIO_SESSION_STATE_REJECTED,
     XIO_SESSION_STATE_REFUSED,
     XIO_SESSION_STATE_CLOSING,
     XIO_SESSION_STATE_CLOSED,
};

消息定义方式

#define XIO_MSG_REQ          XIO_MSG_TYPE_REQ
#define XIO_MSG_RSP          XIO_MSG_TYPE_RSP
#define XIO_CREDIT_NOP          (XIO_CREDIT | XIO_NOP)
#define XIO_CONN_SETUP_REQ     (XIO_CONN_SETUP | XIO_REQUEST)
#define XIO_CONN_SETUP_RSP     (XIO_CONN_SETUP | XIO_RESPONSE)
#define XIO_SESSION_SETUP_REQ     (XIO_SESSION_SETUP | XIO_REQUEST)
#define XIO_SESSION_SETUP_RSP     (XIO_SESSION_SETUP | XIO_RESPONSE)
#define XIO_ONE_WAY_REQ          XIO_MSG_TYPE_ONE_WAY
#define XIO_ONE_WAY_RSP          (XIO_ONE_WAY | XIO_RESPONSE)
#define XIO_FIN_REQ          (XIO_FIN | XIO_REQUEST)
#define XIO_FIN_RSP          (XIO_FIN | XIO_RESPONSE)
#define XIO_CANCEL_REQ          (XIO_CANCEL | XIO_REQUEST)
#define XIO_CANCEL_RSP          (XIO_CANCEL | XIO_RESPONSE)
#define XIO_CONNECTION_HELLO_REQ (XIO_CONNECTION_HELLO | XIO_REQUEST)
#define XIO_CONNECTION_HELLO_RSP (XIO_CONNECTION_HELLO | XIO_RESPONSE)

cq事件检测

xio_data_handler

声明:转载本博文章须在文章明显处注明作者及附上原文链接,便于读者找到原文的更新版。

猜你喜欢

转载自blog.csdn.net/oscube/article/details/80567133