diff options
| author | Stephen D. Huston <shuston@apache.org> | 2009-10-20 17:10:05 +0000 |
|---|---|---|
| committer | Stephen D. Huston <shuston@apache.org> | 2009-10-20 17:10:05 +0000 |
| commit | fcc8f328bbac4a318dbe8cdead8de256dac8517d (patch) | |
| tree | 567494b9897a70058f8bb013414e17232a80835a /cpp/src/qpid/sys/windows/AsynchIO.cpp | |
| parent | 93a716f5fd3426fc0c476f7089d81ec67ba16a32 (diff) | |
| download | qpid-python-fcc8f328bbac4a318dbe8cdead8de256dac8517d.tar.gz | |
Carry over recent AsynchIO-level changes to Windows.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@827735 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/sys/windows/AsynchIO.cpp')
| -rw-r--r-- | cpp/src/qpid/sys/windows/AsynchIO.cpp | 56 |
1 files changed, 25 insertions, 31 deletions
diff --git a/cpp/src/qpid/sys/windows/AsynchIO.cpp b/cpp/src/qpid/sys/windows/AsynchIO.cpp index 971f0bb665..c4f67ddf70 100644 --- a/cpp/src/qpid/sys/windows/AsynchIO.cpp +++ b/cpp/src/qpid/sys/windows/AsynchIO.cpp @@ -74,6 +74,7 @@ void lookUpAcceptEx() { namespace qpid { namespace sys { +namespace windows { /* * Asynch Acceptor @@ -88,13 +89,13 @@ namespace sys { * and status of each accept operation outstanding. */ -class AsynchAcceptorPrivate { +class AsynchAcceptor : public qpid::sys::AsynchAcceptor { friend class AsynchAcceptResult; public: - AsynchAcceptorPrivate(const Socket& s, AsynchAcceptor::Callback callback); - ~AsynchAcceptorPrivate(); + AsynchAcceptor(const Socket& s, AsynchAcceptor::Callback callback); + ~AsynchAcceptor(); void start(Poller::shared_ptr poller); private: @@ -104,19 +105,7 @@ private: const Socket& socket; }; -AsynchAcceptor::AsynchAcceptor(const Socket& s, Callback callback) : - impl(new AsynchAcceptorPrivate(s, callback)) -{} - -AsynchAcceptor::~AsynchAcceptor() -{ delete impl; } - -void AsynchAcceptor::start(Poller::shared_ptr poller) { - impl->start(poller); -} - -AsynchAcceptorPrivate::AsynchAcceptorPrivate(const Socket& s, - AsynchAcceptor::Callback callback) +AsynchAcceptor::AsynchAcceptor(const Socket& s, Callback callback) : acceptedCallback(callback), socket(s) { @@ -128,16 +117,17 @@ AsynchAcceptorPrivate::AsynchAcceptorPrivate(const Socket& s, #endif } -AsynchAcceptorPrivate::~AsynchAcceptorPrivate(void) { +AsynchAcceptor::~AsynchAcceptor() +{ socket.close(); } -void AsynchAcceptorPrivate::start(Poller::shared_ptr poller) { +void AsynchAcceptor::start(Poller::shared_ptr poller) { poller->monitorHandle(PollerHandle(socket), Poller::INPUT); restart (); } -void AsynchAcceptorPrivate::restart(void) { +void AsynchAcceptor::restart(void) { DWORD bytesReceived = 0; // Not used, needed for AcceptEx API AsynchAcceptResult *result = new AsynchAcceptResult(acceptedCallback, this, @@ -156,7 +146,7 @@ void AsynchAcceptorPrivate::restart(void) { AsynchAcceptResult::AsynchAcceptResult(AsynchAcceptor::Callback cb, - AsynchAcceptorPrivate *acceptor, + AsynchAcceptor *acceptor, SOCKET listener) : callback(cb), acceptor(acceptor), listener(listener) { newSocket.reset (new Socket()); @@ -174,13 +164,11 @@ void AsynchAcceptResult::success(size_t /*bytesTransferred*/) { } void AsynchAcceptResult::failure(int status) { - //if (status != WSA_OPERATION_ABORTED) - // Can there be anything else? ; - delete this; + //if (status != WSA_OPERATION_ABORTED) + // Can there be anything else? ; + delete this; } -namespace windows { - /* * AsynchConnector does synchronous connects for now... to do asynch the * IocpPoller will need some extension to register an event handle as a @@ -224,6 +212,12 @@ AsynchConnector::AsynchConnector(const Socket& sock, } // namespace windows +AsynchAcceptor* AsynchAcceptor::create(const Socket& s, + Callback callback) +{ + return new windows::AsynchAcceptor(s, callback); +} + AsynchConnector* qpid::sys::AsynchConnector::create(const Socket& s, Poller::shared_ptr poller, std::string hostname, @@ -231,12 +225,12 @@ AsynchConnector* qpid::sys::AsynchConnector::create(const Socket& s, ConnectedCallback connCb, FailedCallback failCb) { - return new qpid::sys::windows::AsynchConnector(s, - poller, - hostname, - port, - connCb, - failCb); + return new windows::AsynchConnector(s, + poller, + hostname, + port, + connCb, + failCb); } |
