You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2010/02/12 19:23:51 UTC

svn commit: r909548 - in /qpid/trunk/qpid/cpp: bindings/qmf/python/qmf.py bindings/qmf/ruby/qmf.rb include/qmf/engine/ResilientConnection.h src/qmf/engine/ResilientConnection.cpp

Author: tross
Date: Fri Feb 12 18:23:47 2010
New Revision: 909548

URL: http://svn.apache.org/viewvc?rev=909548&view=rev
Log:
QPID-2328 - Applied patch from Ian Main

Modified:
    qpid/trunk/qpid/cpp/bindings/qmf/python/qmf.py
    qpid/trunk/qpid/cpp/bindings/qmf/ruby/qmf.rb
    qpid/trunk/qpid/cpp/include/qmf/engine/ResilientConnection.h
    qpid/trunk/qpid/cpp/src/qmf/engine/ResilientConnection.cpp

Modified: qpid/trunk/qpid/cpp/bindings/qmf/python/qmf.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qmf/python/qmf.py?rev=909548&r1=909547&r2=909548&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qmf/python/qmf.py (original)
+++ qpid/trunk/qpid/cpp/bindings/qmf/python/qmf.py Fri Feb 12 18:23:47 2010
@@ -242,8 +242,7 @@
 
 
     def kick(self):
-        self._sockEngine.send(".")
-        # self._sockEngine.flush()  Not available with python?
+        self.impl.notify()
 
 
     def add_conn_handler(self, handler):

Modified: qpid/trunk/qpid/cpp/bindings/qmf/ruby/qmf.rb
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qmf/ruby/qmf.rb?rev=909548&r1=909547&r2=909548&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qmf/ruby/qmf.rb (original)
+++ qpid/trunk/qpid/cpp/bindings/qmf/ruby/qmf.rb Fri Feb 12 18:23:47 2010
@@ -216,8 +216,7 @@
     end
 
     def kick
-      @sockEngine.write(".")
-      @sockEngine.flush
+      @impl.notify
     end
 
     def add_conn_handler(handler)

Modified: qpid/trunk/qpid/cpp/include/qmf/engine/ResilientConnection.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qmf/engine/ResilientConnection.h?rev=909548&r1=909547&r2=909548&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qmf/engine/ResilientConnection.h (original)
+++ qpid/trunk/qpid/cpp/include/qmf/engine/ResilientConnection.h Fri Feb 12 18:23:47 2010
@@ -155,6 +155,14 @@
          */
         void setNotifyFd(int fd);
 
+        /**
+         * Send a byte into the notify file descriptor.
+         *
+         * This can be used to wake up the event processing portion of the engine from either the
+         * wrapped implementation or the engine itself.
+         */
+        void notify();
+
     private:
         ResilientConnectionImpl* impl;
     };

Modified: qpid/trunk/qpid/cpp/src/qmf/engine/ResilientConnection.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qmf/engine/ResilientConnection.cpp?rev=909548&r1=909547&r2=909548&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qmf/engine/ResilientConnection.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qmf/engine/ResilientConnection.cpp Fri Feb 12 18:23:47 2010
@@ -96,6 +96,7 @@
         void bind(SessionHandle handle, char* exchange, char* queue, char* key);
         void unbind(SessionHandle handle, char* exchange, char* queue, char* key);
         void setNotifyFd(int fd);
+        void notify();
 
         void run();
         void failure();
@@ -329,6 +330,16 @@
     sess->session.exchangeUnbind(client::arg::exchange=exchange, client::arg::queue=queue, client::arg::bindingKey=key);
 }
 
+void ResilientConnectionImpl::notify()
+{
+    if (notifyFd != -1)
+    {
+        int unused_ret;    //Suppress warnings about ignoring return value.
+        unused_ret = ::write(notifyFd, ".", 1);
+    }
+}
+
+
 void ResilientConnectionImpl::setNotifyFd(int fd)
 {
     notifyFd = fd;
@@ -496,3 +507,8 @@
     impl->setNotifyFd(fd);
 }
 
+void ResilientConnection::notify()
+{
+    impl->notify();
+}
+



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org