RdmaCmId idPriv = cmEvent.getListenIdPriv(); RdmaCmId clientID = cmEvent.getConnIdPriv(); int event = cmEvent.getEvent();
public void run() { logger.info("launching cm processor, cmChannel " + cmChannel.getFd()); RdmaCmEvent cmEvent; while (!closed.get()) { try { cmEvent = cmChannel.getCmEvent(timeout); if (cmEvent != null){ cmConsumer.dispatchCmEvent(cmEvent); cmEvent.ackEvent(); } } catch(Throwable e){ if (cmConsumer.isClosed()){ logger.info("cm looping closes, group is shutdown!!"); break; } else { logger.info("cm processing, caught exception but keep going " + e.getMessage()); e.printStackTrace(); } } } logger.info("terminating cm polling, closed " + closed); }
public synchronized void dispatchCmEvent(RdmaCmEvent cmEvent) throws IOException { try { int eventType = cmEvent.getEvent(); if (eventType == RdmaCmEvent.EventType.RDMA_CM_EVENT_CONNECT_REQUEST.ordinal()) { // logger.info("got event type + RDMA_CM_EVENT_CONNECT_REQUEST, serverAddress " + this.getSrcAddr()); RdmaCmId connId = cmEvent.getConnIdPriv(); C ep = group.createEndpoint(connId); ep.dispatchCmEvent(cmEvent); requested.add(ep); notifyAll(); } else if (eventType == RdmaCmEvent.EventType.RDMA_CM_EVENT_DISCONNECTED .ordinal()) { // logger.info("got event type + RDMA_CM_EVENT_CONNECT_REQUEST, serverAddress " + this.getSrcAddr()); connState = CONN_STATE_CLOSED; notifyAll(); } else { logger.info("got event type + UNKNOWN, serverAddress " + this.getSrcAddr()); } } catch(Exception e){ throw new IOException(e); } }
return; else if (cmEvent.getEvent() != RdmaCmEvent.EventType.RDMA_CM_EVENT_CONNECT_REQUEST .ordinal()) { System.out.println("VerbsServer::wrong event received: " + cmEvent.getEvent()); return; cmEvent.ackEvent(); RdmaCmId connId = cmEvent.getConnIdPriv(); if (connId == null){ System.out.println("VerbsServer::connId null"); if (cmEvent.getEvent() != RdmaCmEvent.EventType.RDMA_CM_EVENT_ESTABLISHED .ordinal()) { System.out.println("VerbsServer::wrong event received: " + cmEvent.getEvent()); return; cmEvent.ackEvent();
@Override public int ackCmEvent(RdmaCmEvent cmEvent) { int ret = nativeDispatcher._ackCmEvent(cmEvent.getEvent()); return ret; }
System.out.println("VerbsClient::cmEvent null"); return; } else if (cmEvent.getEvent() != RdmaCmEvent.EventType.RDMA_CM_EVENT_ADDR_RESOLVED .ordinal()) { System.out.println("VerbsClient::wrong event received: " + cmEvent.getEvent()); return; cmEvent.ackEvent(); System.out.println("VerbsClient::cmEvent null"); return; } else if (cmEvent.getEvent() != RdmaCmEvent.EventType.RDMA_CM_EVENT_ROUTE_RESOLVED .ordinal()) { System.out.println("VerbsClient::wrong event received: " + cmEvent.getEvent()); return; cmEvent.ackEvent(); System.out.println("VerbsClient::cmEvent null"); return; } else if (cmEvent.getEvent() != RdmaCmEvent.EventType.RDMA_CM_EVENT_ESTABLISHED .ordinal()) { System.out.println("VerbsClient::wrong event received: " + cmEvent.getEvent()); return; cmEvent.ackEvent();
@Override public RdmaCmEvent getCmEvent(RdmaEventChannel cmChannel, int timeout) throws IOException { NatRdmaEventChannel channelImpl = (NatRdmaEventChannel) cmChannel; RdmaCmEvent cmEvent = null; MemBuf memBuf = memAlloc.allocate(2*8); ByteBuffer buf = memBuf.getBuffer(); if (!channelImpl.isOpen()) { throw new IOException("Trying to get CM event on closed channel."); } int event = nativeDispatcher._getCmEvent(channelImpl.getObjId(), memBuf.address(), memBuf.address() + 8, timeout); if (event >= 0){ long _listenId = buf.getLong(); long _clientId = buf.getLong(); NatCmaIdPrivate idPriv = channelImpl.getCmId(_listenId); NatCmaIdPrivate clientId = channelImpl.getCmId(_clientId); if (event == RdmaCmEvent.EventType.RDMA_CM_EVENT_CONNECT_REQUEST.ordinal()){ clientId = new NatCmaIdPrivate(_clientId, channelImpl, nativeDispatcher); clientId.setVerbs(idPriv.getVerbs()); channelImpl.addCmId(clientId); } cmEvent = new RdmaCmEvent(event, idPriv, clientId); } memBuf.free(); return cmEvent; }
public synchronized void dispatchCmEvent(RdmaCmEvent cmEvent) throws IOException { super.dispatchCmEvent(cmEvent); int eventType = cmEvent.getEvent(); if (eventType == RdmaCmEvent.EventType.RDMA_CM_EVENT_DISCONNECTED .ordinal()) { closer.close(this); } } }
public synchronized void dispatchCmEvent(RdmaCmEvent cmEvent) throws IOException { super.dispatchCmEvent(cmEvent); try { int eventType = cmEvent.getEvent(); if (eventType == RdmaCmEvent.EventType.RDMA_CM_EVENT_ESTABLISHED.ordinal()) { logger.info("new RPC connection, eid " + this.getEndpointId()); group.open(this); } else if (eventType == RdmaCmEvent.EventType.RDMA_CM_EVENT_DISCONNECTED.ordinal()) { logger.info("RPC disconnection, eid " + this.getEndpointId()); group.close(this); } } catch (Exception e) { e.printStackTrace(); } }
public synchronized void dispatchCmEvent(RdmaCmEvent cmEvent) throws IOException { try { int eventType = cmEvent.getEvent(); if (eventType == RdmaCmEvent.EventType.RDMA_CM_EVENT_ADDR_RESOLVED.ordinal()) { connState = RdmaEndpoint.CONN_STATE_ADDR_RESOLVED; notifyAll(); } else if (cmEvent.getEvent() == RdmaCmEvent.EventType.RDMA_CM_EVENT_ROUTE_RESOLVED.ordinal()) { connState = RdmaEndpoint.CONN_STATE_ROUTE_RESOLVED; notifyAll(); } else if (eventType == RdmaCmEvent.EventType.RDMA_CM_EVENT_ESTABLISHED.ordinal()) { logger.info("got event type + RDMA_CM_EVENT_ESTABLISHED, srcAddress " + this.getSrcAddr() + ", dstAddress " + this.getDstAddr()); connState = CONN_STATE_CONNECTED; notifyAll(); } else if (eventType == RdmaCmEvent.EventType.RDMA_CM_EVENT_DISCONNECTED.ordinal()) { logger.info("got event type + RDMA_CM_EVENT_DISCONNECTED, srcAddress " + this.getSrcAddr() + ", dstAddress " + this.getDstAddr()); connState = CONN_STATE_CLOSED; notifyAll(); } else if (eventType == RdmaCmEvent.EventType.RDMA_CM_EVENT_CONNECT_REQUEST.ordinal()) { logger.info("got event type + RDMA_CM_EVENT_CONNECT_REQUEST, srcAddress " + this.getSrcAddr() + ", dstAddress " + this.getDstAddr()); } else { logger.info("got event type + UNKNOWN, srcAddress " + this.getSrcAddr() + ", dstAddress " + this.getDstAddr()); } } catch (Exception e) { throw new IOException(e); } }