summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client/Demux.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/client/Demux.cpp')
-rw-r--r--cpp/src/qpid/client/Demux.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/cpp/src/qpid/client/Demux.cpp b/cpp/src/qpid/client/Demux.cpp
index d85ad92003..bd1dda0ae9 100644
--- a/cpp/src/qpid/client/Demux.cpp
+++ b/cpp/src/qpid/client/Demux.cpp
@@ -37,7 +37,7 @@ bool ByTransferDest::operator()(const framing::FrameSet& frameset) const
ScopedDivert::ScopedDivert(const std::string& _dest, Demux& _demuxer) : dest(_dest), demuxer(_demuxer)
{
- queue = &(demuxer.add(dest, ByTransferDest(dest)));
+ queue = demuxer.add(dest, ByTransferDest(dest));
}
ScopedDivert::~ScopedDivert()
@@ -45,9 +45,9 @@ ScopedDivert::~ScopedDivert()
demuxer.remove(dest);
}
-Demux::Queue& ScopedDivert::getQueue()
+Demux::QueuePtr ScopedDivert::getQueue()
{
- return *queue;
+ return queue;
}
void Demux::handle(framing::FrameSet::shared_ptr frameset)
@@ -61,7 +61,7 @@ void Demux::handle(framing::FrameSet::shared_ptr frameset)
}
}
if (!matched) {
- defaultQueue.push(frameset);
+ defaultQueue->push(frameset);
}
}
@@ -71,17 +71,17 @@ void Demux::close()
for (iterator i = records.begin(); i != records.end(); i++) {
i->queue->close();
}
- defaultQueue.close();
+ defaultQueue->close();
}
-Demux::Queue& Demux::add(const std::string& name, Condition condition)
+Demux::QueuePtr Demux::add(const std::string& name, Condition condition)
{
sys::Mutex::ScopedLock l(lock);
iterator i = std::find_if(records.begin(), records.end(), Find(name));
if (i == records.end()) {
Record r(name, condition);
records.push_back(r);
- return *(r.queue);
+ return r.queue;
} else {
throw Exception("Queue already exists for " + name);
}
@@ -93,17 +93,17 @@ void Demux::remove(const std::string& name)
records.remove_if(Find(name));
}
-Demux::Queue& Demux::get(const std::string& name)
+Demux::QueuePtr Demux::get(const std::string& name)
{
sys::Mutex::ScopedLock l(lock);
iterator i = std::find_if(records.begin(), records.end(), Find(name));
if (i == records.end()) {
throw Exception("No queue for " + name);
}
- return *(i->queue);
+ return i->queue;
}
-Demux::Queue& Demux::getDefault()
+Demux::QueuePtr Demux::getDefault()
{
return defaultQueue;
}