/** * Copyright (C) Mellanox Technologies Ltd. 2019. ALL RIGHTS RESERVED. * * See file LICENSE for terms. */ #ifndef UCT_RDMACM_CM_H #define UCT_RDMACM_CM_H #include #include "rdmacm_def.h" /** * An rdmacm connection manager */ typedef struct uct_rdmacm_cm { uct_cm_t super; struct rdma_event_channel *ev_ch; } uct_rdmacm_cm_t; UCS_CLASS_DECLARE_NEW_FUNC(uct_rdmacm_cm_t, uct_cm_t, uct_component_h, uct_worker_h, const uct_cm_config_t *); UCS_CLASS_DECLARE_DELETE_FUNC(uct_rdmacm_cm_t, uct_cm_t); static UCS_F_ALWAYS_INLINE ucs_async_context_t * uct_rdmacm_cm_get_async(uct_rdmacm_cm_t *cm) { uct_priv_worker_t *wpriv = ucs_derived_of(cm->super.iface.worker, uct_priv_worker_t); return wpriv->async; } ucs_status_t uct_rdmacm_cm_destroy_id(struct rdma_cm_id *id); ucs_status_t uct_rdmacm_cm_ack_event(struct rdma_cm_event *event); ucs_status_t uct_rdmacm_cm_reject(struct rdma_cm_id *id); #endif