long encode(final int msgSeqNum, final int newSeqNo) { final HeaderEncoder respHeader = sequenceResetEncoder.header(); respHeader.sendingTime(timestampEncoder.buffer(), timestampEncoder.encode(System.currentTimeMillis())); respHeader.msgSeqNum(msgSeqNum); sequenceResetEncoder.newSeqNo(newSeqNo); return sequenceResetEncoder.encode(buffer, 0); }
private void setupHeader(final HeaderEncoder header, final int msgSeqNo, final int lastMsgSeqNumProcessed) { final UtcTimestampEncoder timestampEncoder = this.timestampEncoder; header.sendingTime(timestampEncoder.buffer(), timestampEncoder.update(clock.time())); header.msgSeqNum(msgSeqNo); if (lastMsgSeqNumProcessed != NO_LAST_MSG_SEQ_NUM_PROCESSED) { header.lastMsgSeqNumProcessed(lastMsgSeqNumProcessed); } }
private void initiateConnection() throws IOException { socket = SocketChannel.open(new InetSocketAddress("localhost", port)); final UtcTimestampEncoder timestamp = new UtcTimestampEncoder(); timestamp.encode(System.currentTimeMillis()); logon .heartBtInt(10) .encryptMethod(0) .header() .sendingTime(timestamp.buffer()) .msgSeqNum(1) .senderCompID(INITIATOR_ID) .targetCompID(ACCEPTOR_ID); final long result = logon.encode(buffer, 0); final int offset = Encoder.offset(result); final int length = Encoder.length(result); byteBuffer.position(offset); byteBuffer.limit(offset + length); assertEquals(length, socket.write(byteBuffer)); }
private long logonWithSenderAndTarget(final String senderCompID, final String targetCompID) { logonEncoder.header() .sendingTime(new byte[] {0}) .senderCompID(senderCompID) .targetCompID(targetCompID); return logonEncoder.encryptMethod(0).heartBtInt(0).encode(asciiBuffer, 0); } }
void setupHeader(final HeaderEncoder header, final int msgSeqNum, final boolean possDupFlag) { final long timestamp = System.currentTimeMillis(); final int timestampLength = sendingTimeEncoder.encode(timestamp); header .senderCompID(senderCompID) .targetCompID(targetCompID) .msgSeqNum(msgSeqNum) .sendingTime(sendingTimeEncoder.buffer(), timestampLength); if (possDupFlag) { final int origSendingTimeLength = origSendingTimeEncoder.encode(timestamp - 1000); header .possDupFlag(true) .origSendingTime(origSendingTimeEncoder.buffer(), origSendingTimeLength); } }
protected long bufferHasResendRequest(final int endSeqNo, final String targetCompId) { final UtcTimestampEncoder timestampEncoder = new UtcTimestampEncoder(); timestampEncoder.encode(System.currentTimeMillis()); final ResendRequestEncoder resendRequest = new ResendRequestEncoder(); resendRequest .header() .sendingTime(timestampEncoder.buffer()) .msgSeqNum(1) .senderCompID(RESEND_SENDER) .targetCompID(targetCompId); return resendRequest .beginSeqNo(BEGIN_SEQ_NO) .endSeqNo(endSeqNo) .encode(new MutableAsciiBuffer(buffer), ENCODE_OFFSET); }
/** * Send a message on this session. * * @param encoder the encoder of the message to be sent * @return the position in the stream that corresponds to the end of this message or a negative * number indicating an error status. * @throws IndexOutOfBoundsException if the encoded message is too large, if this happens consider * increasing {@link CommonConfiguration#sessionBufferSize(int)} */ public long send(final Encoder encoder) { validateCanSendMessage(); final int sentSeqNum = newSentSeqNum(); final HeaderEncoder header = (HeaderEncoder)encoder.header(); header .msgSeqNum(sentSeqNum) .sendingTime(timestampEncoder.buffer(), timestampEncoder.encode(time())); if (enableLastMsgSeqNumProcessed) { header.lastMsgSeqNumProcessed(lastMsgSeqNumProcessed); } if (!header.hasSenderCompID()) { sessionIdStrategy.setupSession(sessionKey, header); } final long result = encoder.encode(asciiBuffer, 0); final int length = Encoder.length(result); final int offset = Encoder.offset(result); return send(asciiBuffer, offset, length, sentSeqNum, encoder.messageType()); }
private void bufferContainsMessage( final long sessionId, final int sequenceNumber, final int sequenceIndex, final Encoder exampleMessage, final HeaderEncoder header, final int messageType) { final UtcTimestampEncoder timestampEncoder = new UtcTimestampEncoder(); final int timestampLength = timestampEncoder.encode(ORIGINAL_SENDING_EPOCH_MS); MutableAsciiBuffer asciiBuffer = new MutableAsciiBuffer(new byte[BIG_BUFFER_LENGTH]); header .sendingTime(timestampEncoder.buffer(), timestampLength) .senderCompID(BUFFER_SENDER) .targetCompID(BUFFER_TARGET) .msgSeqNum(sequenceNumber); final long result = exampleMessage.encode(asciiBuffer, 0); logEntryLength = Encoder.length(result); final int encodedOffset = Encoder.offset(result); asciiBuffer = new MutableAsciiBuffer(asciiBuffer, encodedOffset, logEntryLength); bufferContainsMessage(sessionId, sequenceIndex, asciiBuffer, messageType); }
sequenceResetEncoder.header().sendingTime( timestampEncoder.buffer(), timestampEncoder.encode(System.currentTimeMillis()));