diff --git a/docker-java-transport/src/main/java/com/github/dockerjava/transport/UnixSocket.java b/docker-java-transport/src/main/java/com/github/dockerjava/transport/UnixSocket.java index 0a9338771..de447db61 100644 --- a/docker-java-transport/src/main/java/com/github/dockerjava/transport/UnixSocket.java +++ b/docker-java-transport/src/main/java/com/github/dockerjava/transport/UnixSocket.java @@ -6,8 +6,10 @@ import java.net.Socket; import java.net.SocketAddress; import java.net.SocketException; +import java.nio.ByteBuffer; import java.nio.channels.Channels; import java.nio.channels.SocketChannel; +import java.nio.channels.WritableByteChannel; public class UnixSocket extends AbstractSocket { @@ -67,7 +69,7 @@ public OutputStream getOutputStream() throws IOException { throw new SocketException("Socket output is shutdown"); } - return Channels.newOutputStream(socketChannel); + return Channels.newOutputStream(new WrappedWritableByteChannel()); } @Override @@ -85,4 +87,22 @@ public void close() throws IOException { super.close(); this.socketChannel.close(); } + + private class WrappedWritableByteChannel implements WritableByteChannel { + + @Override + public int write(ByteBuffer src) throws IOException { + return UnixSocket.this.socketChannel.write(src); + } + + @Override + public boolean isOpen() { + return UnixSocket.this.socketChannel.isOpen(); + } + + @Override + public void close() throws IOException { + UnixSocket.this.socketChannel.close(); + } + } }