@Override public void close() throws IOException, InterruptedException { super.close(); agroup.close(this); }
public StorageEndpoint createEndpoint(InetSocketAddress inetAddress) throws Exception { if (RdmaConstants.STORAGE_RDMA_LOCAL_MAP && CrailUtils.isLocalAddress(inetAddress.getAddress())){ RdmaStorageLocalEndpoint localEndpoint = localCache.get(inetAddress.getAddress()); if (localEndpoint == null){ localEndpoint = new RdmaStorageLocalEndpoint(inetAddress); localCache.put(inetAddress, localEndpoint); } return localEndpoint; } RdmaStorageActiveEndpoint endpoint = super.createEndpoint(); endpoint.connect(inetAddress, RdmaConstants.STORAGE_RDMA_CONNECTTIMEOUT); return endpoint; }
public ReadServer(String host, int port, int size, int loop) throws IOException{ this.group = new RdmaActiveEndpointGroup<ReadServer.ReadServerEndpoint>(1, false, 128, 4, 128); this.group.init(this); this.host = host; this.port = port; this.size = size; this.loop = loop; }
public void run() throws Exception { endpointGroup = new RdmaActiveEndpointGroup<SendRecvClient.CustomClientEndpoint>(1000, false, 128, 4, 128); endpointGroup.init(this); SendRecvClient.CustomClientEndpoint endpoint = endpointGroup.createEndpoint(); endpointGroup.close(); System.out.println("group closed");
public void run() throws Exception { endpointGroup = new RdmaActiveEndpointGroup<SendRecvServer.CustomServerEndpoint>(1000, false, 128, 4, 128); endpointGroup.init(this); RdmaServerEndpoint<SendRecvServer.CustomServerEndpoint> serverEndpoint = endpointGroup.createServerEndpoint(); serverEndpoint.close(); System.out.println("server endpoint closed"); endpointGroup.close(); System.out.println("group closed");
private void run() throws Exception { System.out.println("ReadServer, size " + size + ", loop " + loop); RdmaServerEndpoint<ReadServerEndpoint> serverEndpoint = group.createServerEndpoint(); InetAddress ipAddress = InetAddress.getByName(host); InetSocketAddress address = new InetSocketAddress(ipAddress, port); serverEndpoint.bind(address, 10); ReadServer.ReadServerEndpoint endpoint = serverEndpoint.accept(); System.out.println("ReadServer, client connected, address " + address.toString()); //let's send a message to the client //in the message we include the RDMA information of a local buffer which we allow the client to read using a one-sided RDMA operation System.out.println("ReadServer, sending message"); endpoint.sendMessage(); //we have to wait for the CQ event, only then we know the message has been sent out endpoint.takeEvent(); //let's wait for the final message to be received. We don't need to check the message itself, just the CQ event is enough. endpoint.takeEvent(); System.out.println("ReadServer, final message"); //close everything endpoint.close(); serverEndpoint.close(); group.close(); }
endpointGroup = new RdmaActiveEndpointGroup<SendRecvServer.CustomServerEndpoint>(1000, false, 128, 4, 128); endpointGroup.init(this); serverEndpoint = endpointGroup.createServerEndpoint();
public void runRDMA() throws Exception { endpointGroup = new RdmaActiveEndpointGroup<CustomClientEndpoint>(1000, false, 128, 4, 128); endpointGroup.init(this); CustomClientEndpoint endpoint = endpointGroup.createEndpoint(); endpointGroup.close();
public void run() throws Exception { endpointGroup = new RdmaActiveEndpointGroup<CustomServerEndpoint>(1000, false, 128, 4, 128); endpointGroup.init(this); RdmaServerEndpoint<ReadServer.CustomServerEndpoint> serverEndpoint = endpointGroup.createServerEndpoint(); endpointGroup.close();
public void run() throws Exception { endpointGroup = new RdmaActiveEndpointGroup<ReadClient.CustomClientEndpoint>(1000, false, 128, 4, 128); endpointGroup.init(this); ReadClient.CustomClientEndpoint endpoint = endpointGroup.createEndpoint(); endpoint.close(); System.out.println("closing endpoint, done"); endpointGroup.close();
public void runRDMA() throws Exception { //we can accept new connections SendRecvServer.CustomServerEndpoint clientEndpoint = serverEndpoint.accept(); //we have previously passed our own endpoint factory to the group, therefore new endpoints will be of type CustomServerEndpoint System.out.println("RDMAvsTcpBenchmarkServer::client connection accepted"); //in our custom endpoints we have prepared (memory registration and work request creation) some memory buffers beforehand. ByteBuffer sendBuf = clientEndpoint.getSendBuf(); sendBuf.asCharBuffer().put("PONG"); ByteBuffer recvBuf = clientEndpoint.getRecvBuf(); SVCPostSend postSend = clientEndpoint.postSend(clientEndpoint.getWrList_send()); SVCPostRecv postRecv = clientEndpoint.postRecv(clientEndpoint.getWrList_recv()); for (int i = 0; i < loopCount + 1; i++){ // Recv PING postRecv.execute(); clientEndpoint.getWcEvents().take(); recvBuf.clear(); //Send PONG postSend.execute(); clientEndpoint.getWcEvents().take(); sendBuf.clear(); } clientEndpoint.close(); serverEndpoint.close(); endpointGroup.close(); }