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