diff options
Diffstat (limited to 'cpp/src/qpid')
| -rw-r--r-- | cpp/src/qpid/client/MessageReplayTracker.cpp | 5 | ||||
| -rw-r--r-- | cpp/src/qpid/client/MessageReplayTracker.h | 7 |
2 files changed, 9 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() diff --git a/cpp/src/qpid/client/MessageReplayTracker.h b/cpp/src/qpid/client/MessageReplayTracker.h index 40324de4e9..45b16fb704 100644 --- a/cpp/src/qpid/client/MessageReplayTracker.h +++ b/cpp/src/qpid/client/MessageReplayTracker.h @@ -44,6 +44,13 @@ class MessageReplayTracker void setFlushInterval(uint interval); uint getFlushInterval(); void checkCompletion(); + + template <class F> void foreach(F& f) { + for (std::list<ReplayRecord>::const_iterator i = buffer.begin(); i != buffer.end(); i++) { + f(i->message); + } + } + private: struct ReplayRecord { |
