summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client/MessageReplayTracker.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-11-06 16:45:27 +0000
committerGordon Sim <gsim@apache.org>2008-11-06 16:45:27 +0000
commitf5371ed7a94deb0c261d1ca8b5185d8c94cdf325 (patch)
tree142d6b52c36c4b50e0079d296f6ce5be5a58f364 /cpp/src/qpid/client/MessageReplayTracker.cpp
parent357557ff3f16b3dc0e6dacfab00e2d0a84f5c8fb (diff)
downloadqpid-python-f5371ed7a94deb0c261d1ca8b5185d8c94cdf325.tar.gz
* fix bug causing last message to occasionally be lost on replay
* make presence of gaps an error condition in the resuming_receiver example * add ability to apply functor to replay buffer git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@711903 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client/MessageReplayTracker.cpp')
-rw-r--r--cpp/src/qpid/client/MessageReplayTracker.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/cpp/src/qpid/client/MessageReplayTracker.cpp b/cpp/src/qpid/client/MessageReplayTracker.cpp
index 3c36b03b34..9ffbb76837 100644
--- a/cpp/src/qpid/client/MessageReplayTracker.cpp
+++ b/cpp/src/qpid/client/MessageReplayTracker.cpp
@@ -28,8 +28,8 @@ MessageReplayTracker::MessageReplayTracker(uint f) : flushInterval(f), count(0)
void MessageReplayTracker::send(const Message& message, const std::string& destination)
{
- ReplayRecord record(message, destination);
- record.send(*this);
+ buffer.push_back(ReplayRecord(message, destination));
+ buffer.back().send(*this);
if (flushInterval && ++count >= flushInterval) {
checkCompletion();
if (!buffer.empty()) session.flush();
@@ -70,7 +70,6 @@ MessageReplayTracker::ReplayRecord::ReplayRecord(const Message& m, const std::st
void MessageReplayTracker::ReplayRecord::send(MessageReplayTracker& tracker)
{
status = tracker.session.messageTransfer(arg::destination=destination, arg::content=message);
- tracker.buffer.push_back(*this);
}
bool MessageReplayTracker::ReplayRecord::isComplete()