diff options
| author | Andrew Stitcher <astitcher@apache.org> | 2013-01-22 19:02:22 +0000 |
|---|---|---|
| committer | Andrew Stitcher <astitcher@apache.org> | 2013-01-22 19:02:22 +0000 |
| commit | 18de0170eedfd2d1725f7d73de43c63481c5b5b0 (patch) | |
| tree | a7722e2b8fc14484e0dcf89c4bd60ff9996b3586 /qpid/cpp | |
| parent | cdb684fd1e8996772be47579e414cfe6a7643eb7 (diff) | |
| download | qpid-python-18de0170eedfd2d1725f7d73de43c63481c5b5b0.tar.gz | |
NO-JIRA: Add abort() implementation for SSL client code - this make heartbeats
work for SSL client connections too.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1437101 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp')
| -rw-r--r-- | qpid/cpp/src/qpid/client/SslConnector.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/qpid/cpp/src/qpid/client/SslConnector.cpp b/qpid/cpp/src/qpid/client/SslConnector.cpp index 3a146592e6..11707eb3f7 100644 --- a/qpid/cpp/src/qpid/client/SslConnector.cpp +++ b/qpid/cpp/src/qpid/client/SslConnector.cpp @@ -90,9 +90,11 @@ class SslConnector : public Connector void connect(const std::string& host, const std::string& port); void connected(const sys::Socket&); void connectFailed(const std::string& msg); + void close(); void send(framing::AMQFrame& frame); - void abort() {} // TODO: Need to fix for heartbeat timeouts to work + void abort(); + void connectAborted(); void setInputHandler(framing::InputHandler* handler); void setShutdownHandler(sys::ShutdownHandler* handler); @@ -224,6 +226,24 @@ void SslConnector::socketClosed(AsynchIO&, const Socket&) { shutdownHandler->shutdown(); } +void SslConnector::connectAborted() { + connector->stop(); + connectFailed("Connection timedout"); +} + +void SslConnector::abort() { + // Can't abort a closed connection + if (!closed) { + if (aio) { + // Established connection + aio->requestCallback(boost::bind(&SslConnector::eof, this, _1)); + } else if (connector) { + // We're still connecting + connector->requestCallback(boost::bind(&SslConnector::connectAborted, this)); + } + } +} + void SslConnector::setInputHandler(InputHandler* handler){ input = handler; } |
