summaryrefslogtreecommitdiff
path: root/cpp/src/tests/qpid-receive.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2010-12-15 18:10:12 +0000
committerAlan Conway <aconway@apache.org>2010-12-15 18:10:12 +0000
commit077facba2cddd2c49d14e496dfa942c23a5e66c9 (patch)
treee9c078351733678236a01056a88ec5bf5e50372c /cpp/src/tests/qpid-receive.cpp
parentc50499e4c309e43367c2ff4ab478d85f88c3124c (diff)
downloadqpid-python-077facba2cddd2c49d14e496dfa942c23a5e66c9.tar.gz
Fix flow control for qpid-cpp-benchmark with multiple senders.
Ensure senders & receivers agree on number of messages sent/received. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1049656 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/qpid-receive.cpp')
-rw-r--r--cpp/src/tests/qpid-receive.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/cpp/src/tests/qpid-receive.cpp b/cpp/src/tests/qpid-receive.cpp
index 9b84306605..28e229ca27 100644
--- a/cpp/src/tests/qpid-receive.cpp
+++ b/cpp/src/tests/qpid-receive.cpp
@@ -191,8 +191,7 @@ int main(int argc, char ** argv)
int64_t interval = 0;
if (opts.receiveRate) interval = qpid::sys::TIME_SEC/opts.receiveRate;
- Address replyToAddress;
- Sender replyToSender;
+ std::map<std::string,Sender> replyTo;
while (!done && receiver.fetch(msg, timeout)) {
reporter.message(msg);
@@ -227,12 +226,12 @@ int main(int argc, char ** argv)
session.acknowledge();
}
if (msg.getReplyTo()) { // Echo message back to reply-to address.
- if (msg.getReplyTo() != replyToAddress) {
- replyToSender = session.createSender(msg.getReplyTo());
- replyToSender.setCapacity(opts.capacity);
- replyToAddress = msg.getReplyTo();
+ Sender& s = replyTo[msg.getReplyTo().str()];
+ if (s.isNull()) {
+ s = session.createSender(msg.getReplyTo());
+ s.setCapacity(opts.capacity);
}
- replyToSender.send(msg);
+ s.send(msg);
}
if (opts.receiveRate) {
qpid::sys::AbsTime waitTill(start, count*interval);