void ucp_ep_destroy(ucp_ep_h ep) { ucp_worker_h worker = ep->worker; ucs_debug("destroy ep %p", ep); UCS_ASYNC_BLOCK(&worker->async); ucp_ep_delete_from_hash(ep); ucp_ep_destory_uct_eps(ep); UCS_ASYNC_UNBLOCK(&worker->async); ucs_free(ep); }
static void ucp_ep_disconnected(ucp_request_t *req) { ucp_ep_h ep = req->send.ep; if (ep->flags & UCP_EP_FLAG_REMOTE_CONNECTED) { /* Endpoints which have remote connection are destroyed only when the * worker is destroyed, to enable remote endpoints keep sending * TODO negotiate disconnect. */ ucs_trace("not destroying ep %p because of connection from remote", ep); return; } ucp_ep_delete_from_hash(ep); ucp_ep_destroy_internal(ep, " from disconnect"); }
static void ucp_ep_delete(ucp_ep_h ep) { ucp_ep_delete_from_hash(ep); ucs_free(ep); }