/// Connection manager event dispatcher. Called by the CM event loop. void on_cm_event(struct rdma_cm_event* event) { L_(trace) << rdma_event_str(event->event); switch (event->event) { case RDMA_CM_EVENT_ADDR_RESOLVED: on_addr_resolved(event->id); return; case RDMA_CM_EVENT_ADDR_ERROR: throw InfinibandException("rdma_resolve_addr failed"); case RDMA_CM_EVENT_ROUTE_RESOLVED: on_route_resolved(event->id); return; case RDMA_CM_EVENT_ROUTE_ERROR: throw InfinibandException("rdma_resolve_route failed"); case RDMA_CM_EVENT_CONNECT_ERROR: throw InfinibandException("could not establish connection"); case RDMA_CM_EVENT_UNREACHABLE: throw InfinibandException("remote server is not reachable"); case RDMA_CM_EVENT_REJECTED: on_rejected(event); return; case RDMA_CM_EVENT_ESTABLISHED: on_established(event); return; case RDMA_CM_EVENT_CONNECT_REQUEST: on_connect_request(event); return; case RDMA_CM_EVENT_DISCONNECTED: on_disconnected(event); return; default: L_(warning) << rdma_event_str(event->event); } }
int on_event(struct rdma_cm_event *event) { int r = 0; if (event->event == RDMA_CM_EVENT_ADDR_RESOLVED) r = on_addr_resolved(event->id); else if (event->event == RDMA_CM_EVENT_ROUTE_RESOLVED) r = on_route_resolved(event->id); else if (event->event == RDMA_CM_EVENT_ESTABLISHED) r = 1; else die("on_event: unknown event."); return r; }
int on_event(struct rdma_cm_event *event) { int r = 0; if (event->event == RDMA_CM_EVENT_ADDR_RESOLVED) r = on_addr_resolved(event->id); else if (event->event == RDMA_CM_EVENT_ROUTE_RESOLVED) r = on_route_resolved(event->id); else if (event->event == RDMA_CM_EVENT_ESTABLISHED) r = on_connection(event->id->context); else if (event->event == RDMA_CM_EVENT_DISCONNECTED) r = on_disconnect(event->id); else die("on_event: unknown event."); return r; }
//event handler int on_event(struct rdma_cm_id *id, struct rdma_cm_event *event) { int r = 0; if (event->event == RDMA_CM_EVENT_ADDR_RESOLVED) r = on_addr_resolved(id); else if (event->event == RDMA_CM_EVENT_ROUTE_RESOLVED) r = on_route_resolved(id); else if (event->event == RDMA_CM_EVENT_ESTABLISHED) r = on_connection(id); else if (event->event == RDMA_CM_EVENT_DISCONNECTED) r = on_disconnect(id); else { pr_debug("on_event: %d\n", event->event); die("on_event: unknown event."); } return r; }
int on_event(struct rdma_cm_event *event) { int r = 0; printf("event id: %d\n", event->event); if (event->event == RDMA_CM_EVENT_ADDR_RESOLVED) r = on_addr_resolved(event->id); else if (event->event == RDMA_CM_EVENT_ROUTE_RESOLVED) r = on_route_resolved(event->id); else if (event->event == RDMA_CM_EVENT_ESTABLISHED) r = on_connection(event->id); else if (event->event == RDMA_CM_EVENT_DISCONNECTED) r = on_disconnect(event->id); else fprintf(stderr, "unknow event id: %d\n", event->event); fprintf(stderr, "exit"); exit(1); // die("on_event: unknown event a"); return r; }