diff options
Diffstat (limited to 'cpp/src/qpid/broker/Connection.cpp')
-rw-r--r-- | cpp/src/qpid/broker/Connection.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/cpp/src/qpid/broker/Connection.cpp b/cpp/src/qpid/broker/Connection.cpp index cdbcee1c69..dfe2101bc0 100644 --- a/cpp/src/qpid/broker/Connection.cpp +++ b/cpp/src/qpid/broker/Connection.cpp @@ -26,6 +26,7 @@ #include "BrokerChannel.h" #include "qpid/framing/AMQP_ClientProxy.h" #include "BrokerAdapter.h" +#include "SemanticHandler.h" using namespace boost; using namespace qpid::sys; @@ -55,7 +56,7 @@ void Connection::received(framing::AMQFrame& frame){ if (frame.getChannel() == 0) { adapter.handle(frame); } else { - getChannel((frame.getChannel())).getHandlers().in->handle(frame); + getChannel((frame.getChannel())).in->handle(frame); } } @@ -92,17 +93,17 @@ void Connection::closed(){ void Connection::closeChannel(uint16_t id) { ChannelMap::iterator i = channels.find(id); - if (i != channels.end()) - i->close(); + if (i != channels.end()) channels.erase(i); } -Channel& Connection::getChannel(ChannelId id) { +FrameHandler::Chains& Connection::getChannel(ChannelId id) { ChannelMap::iterator i = channels.find(id); if (i == channels.end()) { - i = channels.insert(id, new Channel(*this, id, &broker.getStore())).first; + FrameHandler::Chains chains(new SemanticHandler(id, *this), new OutputHandlerFrameHandler(*out)); + i = channels.insert(ChannelMap::value_type(id, chains)).first; } - return *i; + return i->second; } |