You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ra...@apache.org on 2012/10/25 04:55:17 UTC

svn commit: r1401959 - in /qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/driver/impl: ConnectorImpl.java DriverImpl.java

Author: rajith
Date: Thu Oct 25 02:55:17 2012
New Revision: 1401959

URL: http://svn.apache.org/viewvc?rev=1401959&view=rev
Log:
PROTON-66 We now register for WRITE_OP if we are unable to write to the
channel. As soon we are successful in writing we deregister the WRITE_OP.

Modified:
    qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/driver/impl/ConnectorImpl.java
    qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/driver/impl/DriverImpl.java

Modified: qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/driver/impl/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/driver/impl/ConnectorImpl.java?rev=1401959&r1=1401958&r2=1401959&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/driver/impl/ConnectorImpl.java (original)
+++ qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/driver/impl/ConnectorImpl.java Thu Oct 25 02:55:17 2012
@@ -96,11 +96,7 @@ class ConnectorImpl<C> implements Connec
         {
             read();
         }
-
-        if (_key.isWritable())
-        {
-            write();
-        }
+        write();
     }
 
     void read()
@@ -154,6 +150,14 @@ class ConnectorImpl<C> implements Connec
                     _writeBuffer.clear();
                     _bytesNotWritten = 0;
                 }
+                if (_bytesNotWritten > 0) // couldn't write all the data, need to know when we could write again.
+                {
+                    _key.interestOps(_key.interestOps() | SelectionKey.OP_WRITE);
+                }
+                else if ((_key.interestOps() & SelectionKey.OP_WRITE) != 0)
+                {
+                    _key.interestOps(_key.interestOps() & ~SelectionKey.OP_WRITE);                    
+                }
             }
         }
         catch (IOException e)

Modified: qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/driver/impl/DriverImpl.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/driver/impl/DriverImpl.java?rev=1401959&r1=1401958&r2=1401959&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/driver/impl/DriverImpl.java (original)
+++ qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/driver/impl/DriverImpl.java Thu Oct 25 02:55:17 2012
@@ -216,7 +216,7 @@ public class DriverImpl implements Drive
 
     public <C> Connector<C> createConnector(SelectableChannel c, C context)
     {
-        SelectionKey key = registerInterest(c,SelectionKey.OP_READ | SelectionKey.OP_WRITE);
+        SelectionKey key = registerInterest(c,SelectionKey.OP_READ);
         Connector<C> co = new ConnectorImpl<C>(this, null, new SaslClientImpl(),(SocketChannel)c, context, key);
         key.attach(co);
         return co;
@@ -224,7 +224,7 @@ public class DriverImpl implements Drive
 
     protected <C> Connector<C> createServerConnector(SelectableChannel c, C context, Listener<C> l)
     {
-        SelectionKey key = registerInterest(c,SelectionKey.OP_READ | SelectionKey.OP_WRITE);
+        SelectionKey key = registerInterest(c,SelectionKey.OP_READ);
         Connector<C> co = new ConnectorImpl<C>(this, l, new SaslServerImpl(),(SocketChannel)c, context, key);
         key.attach(co);
         return co;



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org