You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ri...@apache.org on 2009/10/28 16:29:59 UTC

svn commit: r830585 - in /qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys: AsynchIO.h TCPIOPlugin.cpp posix/AsynchIO.cpp

Author: ritchiem
Date: Wed Oct 28 15:29:59 2009
New Revision: 830585

URL: http://svn.apache.org/viewvc?rev=830585&view=rev
Log:
Rationalised AsynchConnector/Acceptor/IO to all use the same code structure

Modified:
    qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/AsynchIO.h
    qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/TCPIOPlugin.cpp
    qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/posix/AsynchIO.cpp

Modified: qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/AsynchIO.h
URL: http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/AsynchIO.h?rev=830585&r1=830584&r2=830585&view=diff
==============================================================================
--- qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/AsynchIO.h (original)
+++ qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/AsynchIO.h Wed Oct 28 15:29:59 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<void, const Socket&> 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> poller);
+    QPID_COMMON_EXTERN static AsynchAcceptor* create(const Socket& s, Callback callback);
+    virtual ~AsynchAcceptor() {};
+    virtual void start(boost::shared_ptr<Poller> poller) = 0;
 };
 
 /*

Modified: qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/TCPIOPlugin.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/TCPIOPlugin.cpp?rev=830585&r1=830584&r2=830585&view=diff
==============================================================================
--- qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/TCPIOPlugin.cpp (original)
+++ qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/TCPIOPlugin.cpp Wed Oct 28 15:29:59 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/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/posix/AsynchIO.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/posix/AsynchIO.cpp?rev=830585&r1=830584&r2=830585&view=diff
==============================================================================
--- qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/posix/AsynchIO.cpp (original)
+++ qpid/branches/0.5.x-dev/qpid/cpp/src/qpid/sys/posix/AsynchIO.cpp Wed Oct 28 15:29:59 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