diff options
| author | Andrew Stitcher <astitcher@apache.org> | 2010-01-21 06:15:06 +0000 |
|---|---|---|
| committer | Andrew Stitcher <astitcher@apache.org> | 2010-01-21 06:15:06 +0000 |
| commit | 4dae7bc7c71ead4a97c192f839abb1b3c64a55a9 (patch) | |
| tree | 7759ff53bfbed958d832c9883fbcf45ce344130c /cpp/src/qpid/sys/posix/AsynchIO.cpp | |
| parent | 56c8e15171dae96958cd9106e2e05abbf02739fc (diff) | |
| download | qpid-python-4dae7bc7c71ead4a97c192f839abb1b3c64a55a9.tar.gz | |
Split out AsynchConnecter::start from constructor (like other AsynchIO classes)
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@901547 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/sys/posix/AsynchIO.cpp')
| -rw-r--r-- | cpp/src/qpid/sys/posix/AsynchIO.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/cpp/src/qpid/sys/posix/AsynchIO.cpp b/cpp/src/qpid/sys/posix/AsynchIO.cpp index 61f10726f0..5ffe9b2b11 100644 --- a/cpp/src/qpid/sys/posix/AsynchIO.cpp +++ b/cpp/src/qpid/sys/posix/AsynchIO.cpp @@ -154,15 +154,14 @@ private: public: AsynchConnector(const Socket& socket, - Poller::shared_ptr poller, std::string hostname, uint16_t port, ConnectedCallback connCb, FailedCallback failCb); + void start(Poller::shared_ptr poller); }; AsynchConnector::AsynchConnector(const Socket& s, - Poller::shared_ptr poller, std::string hostname, uint16_t port, ConnectedCallback connCb, @@ -180,13 +179,18 @@ AsynchConnector::AsynchConnector(const Socket& s, try { socket.connect(sa); } catch(std::exception& e) { - // Defer reporting failure - startWatch(poller); + // Defer reporting failure till we start polling errMsg = e.what(); - DispatchHandle::call(boost::bind(&AsynchConnector::failure, this, -1, errMsg)); - return; } +} + +void AsynchConnector::start(Poller::shared_ptr poller) +{ startWatch(poller); + // If we previously detected an error insert failure callback now + if ( !errMsg.empty() ) { + DispatchHandle::call(boost::bind(&AsynchConnector::failure, this, -1, errMsg)); + } } void AsynchConnector::connComplete(DispatchHandle& h) @@ -600,13 +604,12 @@ AsynchAcceptor* AsynchAcceptor::create(const Socket& s, } AsynchConnector* AsynchConnector::create(const Socket& s, - Poller::shared_ptr poller, std::string hostname, uint16_t port, ConnectedCallback connCb, FailedCallback failCb) { - return new posix::AsynchConnector(s, poller, hostname, port, connCb, failCb); + return new posix::AsynchConnector(s, hostname, port, connCb, failCb); } AsynchIO* AsynchIO::create(const Socket& s, |
