void SessionHandler::confirmed(const SequenceSet& commands, const Array& /*fragments*/) { checkAttached(); // Ignore non-contiguous confirmations. if (!commands.empty() && commands.front() >= getState()->senderGetReplayPoint()) getState()->senderConfirmed(commands.rangesBegin()->last()); }
void SessionHandler::expected(const SequenceSet& commands, const Array& /*fragments*/) { checkAttached(); if (getState()->hasState()) { // Replay if (commands.empty()) throw IllegalStateException( QPID_MSG(getState()->getId() << ": has state but client is attaching as new session.")); // TODO aconway 2008-05-12: support replay of partial commands. // Here we always round down to the last command boundary. SessionPoint expectedPoint = commands.empty() ? SequenceNumber(0) : SessionPoint(commands.front(),0); SessionState::ReplayRange replay = getState()->senderExpected(expectedPoint); sendCommandPoint(expectedPoint); std::for_each(replay.begin(), replay.end(), out); // replay } else sendCommandPoint(getState()->senderGetCommandPoint()); }