protected boolean sendMessage(DaRPCMessage message, int ticket) throws IOException { SVCPostSend postSend = freePostSend.poll(); if (postSend != null){ int index = (int) postSend.getWrMod(0).getWr_id(); sendBufs[index].putInt(0, ticket); sendBufs[index].position(4); int written = 4 + message.write(sendBufs[index]); postSend.getWrMod(0).getSgeMod(0).setLength(written); postSend.getWrMod(0).setSend_flags(IbvSendWR.IBV_SEND_SIGNALED); if (written <= maxinline) { postSend.getWrMod(0).setSend_flags(postSend.getWrMod(0).getSend_flags() | IbvSendWR.IBV_SEND_INLINE); } pendingPostSend.put(ticket, postSend); postSend.execute(); messagesSent.incrementAndGet(); return true; } else { return false; } }
postSend.getWrMod(0).getSgeMod(0).setLength(i); postSend.execute();
sendWriteWR.setWr_id(opcount.getAndIncrement()); sendWriteWR.getRdmaMod().setRemote_addr(remoteMr.getAddr() + remoteOffset); sendWriteWR.getRdmaMod().setRkey(remoteMr.getLkey()); SgeMod sgeSendWrite = writeOp.getWrMod(0).getSgeMod(0); sgeSendWrite.setAddr(bufferAddress + buffer.position()); sgeSendWrite.setLength(buffer.remaining()); sendReadWR.setWr_id(opcount.getAndIncrement()); sendReadWR.getRdmaMod().setRemote_addr(remoteMr.getAddr() + remoteOffset); sendReadWR.getRdmaMod().setRkey(remoteMr.getLkey()); SgeMod sgeSendRead = writeOp.getWrMod(1).getSgeMod(0); sgeSendRead.setAddr(bufferAddress + buffer.position()); sgeSendRead.setLkey(localMr.getLkey()); sendQueueAvailable.acquire(); if (writeOp.getWrMod(0).getRdmaMod().getRkey() == 0){ throw new IOException("stag is zero, can't be"); if (writeOp.getWrMod(1).getRdmaMod().getRkey() == 0){ throw new IOException("stag is zero, can't be"); RdmaActiveFuture future = new RdmaActiveFuture(sendReadWR.getWr_id(), sgeSendWrite.getLength(), true);
sendWR.setWr_id(opcount.getAndIncrement()); SgeMod sgeSend = sendWR.getSgeMod(0); sgeSend.setAddr(bufferAddress + buffer.position()); sgeSend.setLength(buffer.remaining()); sgeSend.setLkey(localMr.getLkey()); sendWR.getRdmaMod().setRemote_addr(remoteMr.getAddr() + remoteOffset); sendWR.getRdmaMod().setRkey(remoteMr.getLkey()); RdmaPassiveFuture future = new RdmaPassiveFuture(this, sendWR.getWr_id(), sgeSend.getLength(), false);
sendWR.setWr_id(opcount.getAndIncrement()); SgeMod sgeSend = sendWR.getSgeMod(0); sgeSend.setAddr(bufferAddress + buffer.position()); sgeSend.setLength(buffer.remaining()); sgeSend.setLkey(localMr.getLkey()); sendWR.getRdmaMod().setRemote_addr(remoteMr.getAddr() + remoteOffset); sendWR.getRdmaMod().setRkey(remoteMr.getLkey()); if (readOp.getWrMod(0).getRdmaMod().getRkey() == 0){ throw new IOException("stag is zero, can't be"); RdmaActiveFuture future = new RdmaActiveFuture(sendWR.getWr_id(), sgeSend.getLength(), false);
sendBuf.clear(); SVCPostSend postSend = endpoint.postSend(endpoint.getWrList_send()); postSend.getWrMod(0).setWr_id(4444); postSend.execute().free();
sendWriteWR.setWr_id(opcount.getAndIncrement()); sendWriteWR.getRdmaMod().setRemote_addr(remoteMr.getAddr() + remoteOffset); sendWriteWR.getRdmaMod().setRkey(remoteMr.getLkey()); SgeMod sgeSendWrite = writeOp.getWrMod(0).getSgeMod(0); sgeSendWrite.setAddr(bufferAddress + buffer.position()); sgeSendWrite.setLength(buffer.remaining()); sendReadWR.setWr_id(opcount.getAndIncrement()); sendReadWR.getRdmaMod().setRemote_addr(remoteMr.getAddr() + remoteOffset); sendReadWR.getRdmaMod().setRkey(remoteMr.getLkey()); SgeMod sgeSendRead = writeOp.getWrMod(1).getSgeMod(0); sgeSendRead.setAddr(bufferAddress + buffer.position()); sgeSendRead.setLkey(localMr.getLkey()); RdmaPassiveFuture future = new RdmaPassiveFuture(this, sendReadWR.getWr_id(), sgeSendWrite.getLength(), true);