int acceptorSendsResendRequest(final int seqNum) { final ResendRequestEncoder resendRequest = new ResendRequestEncoder() .beginSeqNo(seqNum) .endSeqNo(seqNum); acceptingOtfAcceptor.messages().clear(); acceptingSession.send(resendRequest); return seqNum; }
long resendRequest( final int msgSeqNo, final int beginSeqNo, final int endSeqNo, final int sequenceIndex, final int lastMsgSeqNumProcessed) { final HeaderEncoder header = resendRequest.header(); setupHeader(header, msgSeqNo, lastMsgSeqNumProcessed); resendRequest.beginSeqNo(beginSeqNo) .endSeqNo(endSeqNo); final long result = resendRequest.encode(buffer, 0); return send(result, ResendRequestDecoder.MESSAGE_TYPE, sequenceIndex, resendRequest, msgSeqNo); }
private final ResendRequestEncoder resendRequest = new ResendRequestEncoder(); private final LogoutEncoder logout = new LogoutEncoder(); private final HeartbeatEncoder heartbeat = new HeartbeatEncoder(); private final SequenceResetEncoder sequenceReset = new SequenceResetEncoder(); private final List<HeaderEncoder> headers = asList( logon.header(), resendRequest.header(), logout.header(), heartbeat.header(), reject.header(), testRequest.header(), sequenceReset.header());
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); }
@Test public void shouldCombineGapFilledReplays() { messagesCanBeExchanged(); messagesCanBeExchanged(); final ResendRequestEncoder resendRequest = new ResendRequestEncoder(); resendRequest.beginSeqNo(1).endSeqNo(0); initiatingOtfAcceptor.messages().clear(); testSystem.send(initiatingSession, resendRequest); final FixMessage message = testSystem.awaitMessageOf(initiatingOtfAcceptor, SEQUENCE_RESET_MESSAGE_AS_STR); // Logon + two heartbeats gets to 3, next is 4. assertEquals("4", message.get(Constants.NEW_SEQ_NO)); clearMessages(); messagesCanBeExchanged(); }
@Test(timeout = TEST_TIMEOUT) public void messagesCanBeReplayedOverRestart() { exchangeMessagesAroundARestart(AUTOMATIC_INITIAL_SEQUENCE_NUMBER, DEFAULT_SEQ_NUM_AFTER); final ResendRequestEncoder resendRequest = new ResendRequestEncoder(); resendRequest.beginSeqNo(1).endSeqNo(1); initiatingOtfAcceptor.messages().clear(); testSystem.send(initiatingSession, resendRequest); final FixMessage message = testSystem.awaitMessageOf(initiatingOtfAcceptor, SEQUENCE_RESET_MESSAGE_AS_STR); assertEquals(message.get(Constants.MSG_SEQ_NUM), "1"); assertEquals(message.get(Constants.SENDER_COMP_ID), ACCEPTOR_ID); assertEquals(message.get(Constants.TARGET_COMP_ID), INITIATOR_ID); assertSequenceIndicesAre(0); }
@Test public void shouldReplayAMixOfEngineAndLibraryMessages() { // Engine messages messagesCanBeExchanged(); messagesCanBeExchanged(); // Library messages acquireAcceptingSession(); exchangeExecutionReport(); final ResendRequestEncoder resendRequest = new ResendRequestEncoder(); resendRequest.beginSeqNo(1).endSeqNo(0); initiatingOtfAcceptor.messages().clear(); testSystem.send(initiatingSession, resendRequest); final FixMessage gapFill = testSystem.awaitMessageOf(initiatingOtfAcceptor, SEQUENCE_RESET_MESSAGE_AS_STR); assertEquals(1, gapFill.messageSequenceNumber()); assertEquals(4, Integer.parseInt(gapFill.get(NEW_SEQ_NO))); final FixMessage execReport = testSystem.awaitMessageOf(initiatingOtfAcceptor, EXECUTION_REPORT_MESSAGE_AS_STR); assertEquals(4, execReport.messageSequenceNumber()); clearMessages(); messagesCanBeExchanged(); }