summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/ConnectionFactory.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-03-18 21:31:08 +0000
committerAlan Conway <aconway@apache.org>2008-03-18 21:31:08 +0000
commit36e23bcefbf0a6893370cb041bd05a662f0b2758 (patch)
tree601d29d88e873ac4d58da3cdb2753f02b64998bc /cpp/src/qpid/broker/ConnectionFactory.cpp
parenteac0911169b24e708637572fe6b5a8283b3f49e0 (diff)
downloadqpid-python-36e23bcefbf0a6893370cb041bd05a662f0b2758.tar.gz
Make AsyncIOAcceptor multi-protocol:
- ConnectionCodec interface replaces ConnectionInputHandle, moves encoding/decoding out of AsyncIOAcceptor. - ConnectionCodec::Factory replaces ConnectionInputHandlerFactory - Acceptor creates version-specific ConnectionCodec based on protocol header. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@638590 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/ConnectionFactory.cpp')
-rw-r--r--cpp/src/qpid/broker/ConnectionFactory.cpp29
1 files changed, 17 insertions, 12 deletions
diff --git a/cpp/src/qpid/broker/ConnectionFactory.cpp b/cpp/src/qpid/broker/ConnectionFactory.cpp
index a0cd4e35d7..dfab998c78 100644
--- a/cpp/src/qpid/broker/ConnectionFactory.cpp
+++ b/cpp/src/qpid/broker/ConnectionFactory.cpp
@@ -19,27 +19,32 @@
*
*/
#include "ConnectionFactory.h"
-#include "Connection.h"
-#include "MultiVersionConnectionInputHandler.h"
+#include "qpid/framing/ProtocolVersion.h"
+#include "qpid/amqp_0_10/Connection.h"
+#include "PreviewConnectionCodec.h"
namespace qpid {
namespace broker {
+using framing::ProtocolVersion;
-ConnectionFactory::ConnectionFactory(Broker& b) : broker(b)
-{}
+ConnectionFactory::ConnectionFactory(Broker& b) : broker(b) {}
+ConnectionFactory::~ConnectionFactory() {}
-ConnectionFactory::~ConnectionFactory()
-{
-
+sys::ConnectionCodec*
+ConnectionFactory::create(ProtocolVersion v, sys::OutputControl& out, const std::string& id) {
+ if (v == ProtocolVersion(99, 0))
+ return new PreviewConnectionCodec(out, broker, id);
+ if (v == ProtocolVersion(0, 10))
+ return new amqp_0_10::Connection(out, broker, id);
+ return 0;
}
-qpid::sys::ConnectionInputHandler*
-ConnectionFactory::create(qpid::sys::ConnectionOutputHandler* out,
- const std::string& id)
-{
- return new MultiVersionConnectionInputHandler(out, broker, id);
+sys::ConnectionCodec*
+ConnectionFactory::create(sys::OutputControl& out, const std::string& id) {
+ // FIXME aconway 2008-03-18:
+ return new PreviewConnectionCodec(out, broker, id);
}
}} // namespace qpid::broker