diff options
Diffstat (limited to 'cpp/src/qpid/amqp_0_10/Connection.cpp')
| -rw-r--r-- | cpp/src/qpid/amqp_0_10/Connection.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/cpp/src/qpid/amqp_0_10/Connection.cpp b/cpp/src/qpid/amqp_0_10/Connection.cpp index c1de5e2dec..96d5146c30 100644 --- a/cpp/src/qpid/amqp_0_10/Connection.cpp +++ b/cpp/src/qpid/amqp_0_10/Connection.cpp @@ -31,7 +31,8 @@ namespace amqp_0_10 { using sys::Mutex; Connection::Connection(sys::OutputControl& o, const std::string& id, bool _isClient) - : frameQueueClosed(false), output(o), identifier(id), initialized(false), isClient(_isClient), buffered(0) + : frameQueueClosed(false), output(o), identifier(id), initialized(false), + isClient(_isClient), buffered(0), version(0,10) {} void Connection::setInputHandler(std::auto_ptr<sys::ConnectionInputHandler> c) { @@ -44,7 +45,9 @@ size_t Connection::decode(const char* buffer, size_t size) { //read in protocol header framing::ProtocolInitiation pi; if (pi.decode(in)) { - //TODO: check the version is correct + if(!(pi==version)) + throw Exception(QPID_MSG("Unsupported version: " << pi + << " supported version " << version)); QPID_LOG(trace, "RECV " << identifier << " INIT(" << pi << ")"); } initialized = true; @@ -128,7 +131,11 @@ void Connection::send(framing::AMQFrame& f) { } framing::ProtocolVersion Connection::getVersion() const { - return framing::ProtocolVersion(0,10); + return version; +} + +void Connection::setVersion(const framing::ProtocolVersion& v) { + version = v; } size_t Connection::getBuffered() const { |
