示例#1
0
 /// 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);
     }
 }
示例#2
0
文件: client1.c 项目: xiansl/mytests
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;
}
示例#4
0
//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;
}
示例#5
0
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;
}