summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/sys/posix/AsynchIO.cpp
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2010-01-21 06:15:06 +0000
committerAndrew Stitcher <astitcher@apache.org>2010-01-21 06:15:06 +0000
commit4dae7bc7c71ead4a97c192f839abb1b3c64a55a9 (patch)
tree7759ff53bfbed958d832c9883fbcf45ce344130c /cpp/src/qpid/sys/posix/AsynchIO.cpp
parent56c8e15171dae96958cd9106e2e05abbf02739fc (diff)
downloadqpid-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.cpp19
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,