Return-Path: Delivered-To: apmail-qpid-commits-archive@www.apache.org Received: (qmail 39110 invoked from network); 16 Oct 2009 18:48:11 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 16 Oct 2009 18:48:11 -0000 Received: (qmail 98046 invoked by uid 500); 16 Oct 2009 18:48:11 -0000 Delivered-To: apmail-qpid-commits-archive@qpid.apache.org Received: (qmail 98011 invoked by uid 500); 16 Oct 2009 18:48:11 -0000 Mailing-List: contact commits-help@qpid.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@qpid.apache.org Delivered-To: mailing list commits@qpid.apache.org Received: (qmail 98002 invoked by uid 99); 16 Oct 2009 18:48:11 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Oct 2009 18:48:11 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Oct 2009 18:48:08 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id DE32D2388982; Fri, 16 Oct 2009 18:47:47 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r826032 - in /qpid/trunk/qpid/cpp/src/qpid/sys: AsynchIO.h TCPIOPlugin.cpp posix/AsynchIO.cpp Date: Fri, 16 Oct 2009 18:47:47 -0000 To: commits@qpid.apache.org From: astitcher@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20091016184747.DE32D2388982@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: astitcher Date: Fri Oct 16 18:47:47 2009 New Revision: 826032 URL: http://svn.apache.org/viewvc?rev=826032&view=rev Log: Rationalised AsynchConnector/Acceptor/IO to all use the same code structure Modified: qpid/trunk/qpid/cpp/src/qpid/sys/AsynchIO.h qpid/trunk/qpid/cpp/src/qpid/sys/TCPIOPlugin.cpp qpid/trunk/qpid/cpp/src/qpid/sys/posix/AsynchIO.cpp Modified: qpid/trunk/qpid/cpp/src/qpid/sys/AsynchIO.h URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/AsynchIO.h?rev=826032&r1=826031&r2=826032&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/sys/AsynchIO.h (original) +++ qpid/trunk/qpid/cpp/src/qpid/sys/AsynchIO.h Fri Oct 16 18:47:47 2009 @@ -36,18 +36,13 @@ * Asynchronous acceptor: accepts connections then does a callback with the * accepted fd */ -class AsynchAcceptorPrivate; class AsynchAcceptor { public: typedef boost::function1 Callback; -private: - AsynchAcceptorPrivate* impl; - -public: - QPID_COMMON_EXTERN AsynchAcceptor(const Socket& s, Callback callback); - QPID_COMMON_EXTERN ~AsynchAcceptor(); - QPID_COMMON_EXTERN void start(boost::shared_ptr poller); + QPID_COMMON_EXTERN static AsynchAcceptor* create(const Socket& s, Callback callback); + virtual ~AsynchAcceptor() {}; + virtual void start(boost::shared_ptr poller) = 0; }; /* Modified: qpid/trunk/qpid/cpp/src/qpid/sys/TCPIOPlugin.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/TCPIOPlugin.cpp?rev=826032&r1=826031&r2=826032&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/sys/TCPIOPlugin.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/sys/TCPIOPlugin.cpp Fri Oct 16 18:47:47 2009 @@ -114,7 +114,7 @@ void AsynchIOProtocolFactory::accept(Poller::shared_ptr poller, ConnectionCodec::Factory* fact) { acceptor.reset( - new AsynchAcceptor(listener, + AsynchAcceptor::create(listener, boost::bind(&AsynchIOProtocolFactory::established, this, poller, _1, fact, false))); acceptor->start(poller); } Modified: qpid/trunk/qpid/cpp/src/qpid/sys/posix/AsynchIO.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/posix/AsynchIO.cpp?rev=826032&r1=826031&r2=826032&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/sys/posix/AsynchIO.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/sys/posix/AsynchIO.cpp Fri Oct 16 18:47:47 2009 @@ -73,11 +73,12 @@ */ namespace qpid { namespace sys { +namespace posix { -class AsynchAcceptorPrivate { +class AsynchAcceptor : public qpid::sys::AsynchAcceptor { public: - AsynchAcceptorPrivate(const Socket& s, AsynchAcceptor::Callback callback); - ~AsynchAcceptorPrivate(); + AsynchAcceptor(const Socket& s, AsynchAcceptor::Callback callback); + ~AsynchAcceptor(); void start(Poller::shared_ptr poller); private: @@ -90,40 +91,27 @@ }; -}} // namespace qpid::sys - -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, + AsynchAcceptor::Callback callback) : acceptedCallback(callback), - handle(s, boost::bind(&AsynchAcceptorPrivate::readable, this, _1), 0, 0), + handle(s, boost::bind(&AsynchAcceptor::readable, this, _1), 0, 0), socket(s) { s.setNonblocking(); } -AsynchAcceptorPrivate::~AsynchAcceptorPrivate() { +AsynchAcceptor::~AsynchAcceptor() { handle.stopWatch(); } -void AsynchAcceptorPrivate::start(Poller::shared_ptr poller) { +void AsynchAcceptor::start(Poller::shared_ptr poller) { handle.startWatch(poller); } /* * We keep on accepting as long as there is something to accept */ -void AsynchAcceptorPrivate::readable(DispatchHandle& h) { +void AsynchAcceptor::readable(DispatchHandle& h) { Socket* s; do { errno = 0; @@ -146,13 +134,6 @@ } /* - * Asynch Connector - */ -namespace qpid { -namespace sys { -namespace posix { - -/* * POSIX version of AsynchIO TCP socket connector. * * The class is implemented in terms of DispatchHandle to allow it to be @@ -228,32 +209,12 @@ DispatchHandle::doDelete(); } -} // namespace posix - - -AsynchConnector* qpid::sys::AsynchConnector::create(const Socket& s, - Poller::shared_ptr poller, - std::string hostname, - uint16_t port, - ConnectedCallback connCb, - FailedCallback failCb) -{ - return new qpid::sys::posix::AsynchConnector(s, - poller, - hostname, - port, - connCb, - failCb); -} - /* * POSIX version of AsynchIO reader/writer * * The class is implemented in terms of DispatchHandle to allow it to be * deleted by deleting the contained DispatchHandle. */ -namespace posix { - class AsynchIO : public qpid::sys::AsynchIO, private DispatchHandle { public: @@ -629,15 +590,31 @@ } // namespace posix -AsynchIO* qpid::sys::AsynchIO::create(const Socket& s, - AsynchIO::ReadCallback rCb, - AsynchIO::EofCallback eofCb, - AsynchIO::DisconnectCallback disCb, - AsynchIO::ClosedCallback cCb, - AsynchIO::BuffersEmptyCallback eCb, - AsynchIO::IdleCallback iCb) +AsynchAcceptor* AsynchAcceptor::create(const Socket& s, + Callback callback) +{ + return new posix::AsynchAcceptor(s, callback); +} + +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); +} + +AsynchIO* AsynchIO::create(const Socket& s, + AsynchIO::ReadCallback rCb, + AsynchIO::EofCallback eofCb, + AsynchIO::DisconnectCallback disCb, + AsynchIO::ClosedCallback cCb, + AsynchIO::BuffersEmptyCallback eCb, + AsynchIO::IdleCallback iCb) { - return new qpid::sys::posix::AsynchIO(s, rCb, eofCb, disCb, cCb, eCb, iCb); + return new posix::AsynchIO(s, rCb, eofCb, disCb, cCb, eCb, iCb); } }} // namespace qpid::sys --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscribe@qpid.apache.org