Add a bit more state checking and better ByteBuffer send impl.

Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/fd0081e2
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/fd0081e2
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/fd0081e2

Branch: refs/heads/master
Commit: fd0081e2e38a07b1ee3e0c1a48cb7c83e0778ec3
Parents: 884d6b5
Author: Timothy Bish <tabish...@gmail.com>
Authored: Thu Jan 8 17:55:38 2015 -0500
Committer: Timothy Bish <tabish...@gmail.com>
Committed: Thu Jan 8 17:55:38 2015 -0500

----------------------------------------------------------------------
 .../jms/transports/netty/NettyTcpTransport.java | 28 ++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/fd0081e2/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java
 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java
index 3d4a928..366b643 100644
--- 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java
+++ 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java
@@ -35,9 +35,9 @@ import java.net.URI;
 import java.nio.ByteBuffer;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import org.apache.qpid.jms.transports.TransportOptions;
 import org.apache.qpid.jms.transports.Transport;
 import org.apache.qpid.jms.transports.TransportListener;
+import org.apache.qpid.jms.transports.TransportOptions;
 import org.apache.qpid.jms.util.IOExceptionSupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -138,11 +138,28 @@ public class NettyTcpTransport implements Transport {
 
     @Override
     public void send(ByteBuffer output) throws IOException {
-        send(Unpooled.wrappedBuffer(output));
+        checkConnected();
+        int length = output.remaining();
+        if (length == 0) {
+            return;
+        }
+
+        byte[] copy = new byte[length];
+        output.get(copy);
+
+        send(Unpooled.wrappedBuffer(copy));
     }
 
     @Override
     public void send(ByteBuf output) throws IOException {
+        checkConnected();
+        int length = output.readableBytes();
+        if (length == 0) {
+            return;
+        }
+
+        LOG.info("Attempted write of: {} bytes", length);
+
         channel.write(output);
         channel.flush();
     }
@@ -188,6 +205,12 @@ public class NettyTcpTransport implements Transport {
         }
     }
 
+    private void checkConnected() throws IOException {
+        if (!connected.get()) {
+            throw new IOException("Cannot send to a non-connected transport.");
+        }
+    }
+
     //----- Handle connection events 
-----------------------------------------//
 
     private class NettyTcpTransportHandler extends 
SimpleChannelInboundHandler<ByteBuf> {
@@ -222,3 +245,4 @@ public class NettyTcpTransport implements Transport {
         }
     }
 }
+


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

Reply via email to