private void handleRequest(Packet packet) { // it is a request, then we send back a response byte[] requestPayload = packet.toByteArray(); byte[] responsePayload = null; if (requestPayload != null && returnPayload) { responsePayload = new byte[requestPayload.length]; addHeadTailMarkers(responsePayload); } Packet response = new Packet(responsePayload, packet.getPartitionId()); response.setPacketType(Packet.Type.OPERATION).raiseFlags(FLAG_OP_RESPONSE); packet.getConn().write(response); }
@Override public boolean onWrite(Packet packet, ByteBuffer dst) throws Exception { if (currentPacket == null && packet.getPacketType() != Packet.Type.BIND && packet.dataSize() > 100) { currentPacket = packet; addSequenceId(packet.toByteArray(), sequenceId); sequenceId++; } boolean completed = packet.writeTo(dst); if (completed) { currentPacket = null; } return completed; } }
void handle(Packet packet) throws IOException { if (!packet.isFlagRaised(FLAG_JET_FLOW_CONTROL)) { handleStreamPacket(packet); return; } handleFlowControlPacket(packet.getConn().getEndPoint(), packet.toByteArray()); }
private Packet newResponsePacket(byte[] bytes, boolean urgent) { Packet packet = new Packet(bytes, -1) .setPacketType(OPERATION) .raiseFlags(FLAG_OP_RESPONSE); if (urgent) { packet.raiseFlags(FLAG_URGENT); } return packet; }
private void checkPayloadSize(Packet packet) { byte[] payload = packet.toByteArray(); int foundPayloadSize = payload == null ? 0 : payload.length; int expectedPayloadSize; if (packet.isFlagSet(FLAG_RESPONSE) && !returnPayload) { expectedPayloadSize = 0; } else { expectedPayloadSize = payloadSize; } if (foundPayloadSize != expectedPayloadSize) { throw new IllegalArgumentException("Unexpected payload size; expected: " + expectedPayloadSize + " but found: " + foundPayloadSize); } } }
private void handleRequest(Packet packet) { // it is a request, then we send back a response byte[] requestPayload = packet.toByteArray(); byte[] responsePayload = null; if (requestPayload != null && returnPayload) { responsePayload = new byte[requestPayload.length]; addHeadTailMarkers(responsePayload); } Packet response = new Packet(responsePayload, packet.getPartitionId()); response.setHeader(HEADER_RESPONSE); packet.getConn().write(response); }
private void handleRequest(Packet packet) { // it is a request, then we send back a response byte[] requestPayload = packet.toByteArray(); byte[] responsePayload = null; if (requestPayload != null && returnPayload) { responsePayload = new byte[requestPayload.length]; addHeadTailMarkers(responsePayload); } Packet response = new Packet(responsePayload, packet.getPartitionId()); response.setAllFlags(FLAG_RESPONSE); packet.getConn().write(response); }
@Override public void accept(Packet packet) { checkNotNull(packet, "packet can't be null"); checkTrue(packet.getPacketType() == OPERATION, "Packet type is not OPERATION"); checkTrue(packet.isFlagRaised(FLAG_OP_RESPONSE), "FLAG_OP_RESPONSE is not set"); byte[] bytes = packet.toByteArray(); int typeId = Bits.readInt(bytes, OFFSET_TYPE_ID, useBigEndian); long callId = Bits.readLong(bytes, OFFSET_CALL_ID, useBigEndian); Address sender = packet.getConn().getEndPoint(); try { switch (typeId) {
private void checkPayloadContent(Packet packet) { byte[] payload = packet.toByteArray(); int foundPayloadSize = payload == null ? 0 : payload.length; if (foundPayloadSize <= 0) { return; } checkHeadTailMarkers(payload); if (!trackSequenceId) { return; } AtomicLong sequenceCounter = sequenceCounterMap.get(packet.getConn()); if (sequenceCounter == null) { AtomicLong newSequenceCounter = new AtomicLong(0); sequenceCounter = sequenceCounterMap.putIfAbsent(packet.getConn(), newSequenceCounter); if (sequenceCounter == null) { sequenceCounter = newSequenceCounter; } } long foundSequence = readLong(payload, 3); long expectedSequence = sequenceCounter.get() + 1; if (expectedSequence != foundSequence) { throw new IllegalArgumentException("Unexpected sequence id, expected: " + expectedSequence + "found: " + foundSequence); } sequenceCounter.set(expectedSequence); }
@Nonnull @Override public ProgressState call() { progTracker.reset(); tryFillInbox(); if (progTracker.isDone()) { return progTracker.toProgressState(); } if (tryFillOutputBuffer()) { progTracker.madeProgress(); connection.write(new Packet(outputBuffer.toByteArray()).setPacketType(Packet.Type.JET)); } return progTracker.toProgressState(); }
@Override public boolean onWrite(Packet packet, ByteBuffer dst) throws Exception { if (currentPacket == null && !packet.isHeaderSet(HEADER_BIND) && packet.dataSize() > 100) { currentPacket = packet; addSequenceId(packet.toByteArray(), sequenceId); sequenceId++; } boolean completed = packet.writeTo(dst); if (completed) { currentPacket = null; } return completed; } }
@Override public boolean onWrite(Packet packet, ByteBuffer dst) throws Exception { if (currentPacket == null && !packet.isFlagSet(FLAG_BIND) && packet.dataSize() > 100) { currentPacket = packet; addSequenceId(packet.toByteArray(), sequenceId); sequenceId++; } boolean completed = packet.writeTo(dst); if (completed) { currentPacket = null; } return completed; } }
public RemoteEventProcessor(EventServiceImpl eventService, Packet packet) { super(eventService, null, packet.getPartitionId()); this.eventService = eventService; this.packet = packet; }
/** * Writes the packet data to the supplied {@code ByteBuffer}, up to the buffer's limit. If it returns {@code false}, * it should be called again to write the remaining data. * * @param dst the destination byte buffer * @return {@code true} if all the packet's data is now written out; {@code false} otherwise. */ public boolean writeTo(Packet packet, ByteBuffer dst) { if (!headerComplete) { if (dst.remaining() < HEADER_SIZE) { return false; } dst.put(VERSION); dst.putChar(packet.getFlags()); dst.putInt(packet.getPartitionId()); size = packet.totalSize(); dst.putInt(size); headerComplete = true; } if (writeValue(packet, dst)) { reset(); return true; } else { return false; } }
@Override public void accept(Packet packet) { assert packet.getPacketType() == Packet.Type.BIND; BindMessage bind = ioService.getSerializationService().toObject(packet); bind((TcpIpConnection) packet.getConn(), bind.getLocalAddress(), bind.getTargetAddress(), bind.shouldReply()); }
@Override public void accept(Packet packet) { try { switch (packet.getPacketType()) { case OPERATION: if (packet.isFlagRaised(FLAG_OP_RESPONSE)) { responseHandler.accept(packet); } else if (packet.isFlagRaised(FLAG_OP_CONTROL)) { invocationMonitor.accept(packet); } else { break; default: logger.severe("Header flags [" + Integer.toBinaryString(packet.getFlags()) + "] specify an undefined packet type " + packet.getPacketType().name());
private void checkPayloadSize(Packet packet) { byte[] payload = packet.toByteArray(); int foundPayloadSize = payload == null ? 0 : payload.length; int expectedPayloadSize; if (packet.isFlagRaised(FLAG_OP_RESPONSE) && !returnPayload) { expectedPayloadSize = 0; } else { expectedPayloadSize = payloadSize; } if (foundPayloadSize != expectedPayloadSize) { throw new IllegalArgumentException("Unexpected payload size; expected: " + expectedPayloadSize + " but found: " + foundPayloadSize); } } }
ProcessOperationControlTask(Packet payload) { this.payload = payload; this.sender = payload.getConn().getEndPoint(); }
@Override public void accept(Packet packet) { execute(packet, packet.getPartitionId(), packet.isUrgent()); }
@Override public String toString() { Type type = getPacketType(); return "Packet{" + "partitionId=" + partitionId + ", frameLength=" + getFrameLength() + ", conn=" + conn + ", rawFlags=" + Integer.toBinaryString(flags) + ", isUrgent=" + isUrgent() + ", packetType=" + type.name() + ", typeSpecificFlags=" + type.describeFlags(flags) + '}'; }