From 98a91a724e8f0377624353dcc4dc7e5d2875dc96 Mon Sep 17 00:00:00 2001 From: Michael Koch Date: Thu, 19 Jun 2003 16:42:25 +0000 Subject: 2003-06-19 Michael Koch * gnu/java/nio/DatagramChannelImpl.java (fd): Removed. (blocking): New member variable. (socket): Likewise. (DatagramChannelImpl): Throws IOException, initialize socket. (socket):Implemented. (implCloseSelectableChannel): Throws IOException, implemented. (implConfigureBlocking): Likewise. (connect): Likewise. (disconnect): Likewise. (isConnected): Likewise. (write): Likewise. (read): Likewise. (receive): Throws IOException. (send): Likewise. * gnu/java/nio/SocketChannelImpl.java (read): Implemented. (write): Implemented. From-SVN: r68208 --- libjava/gnu/java/nio/SocketChannelImpl.java | 45 ++++++++++++++--------------- 1 file changed, 21 insertions(+), 24 deletions(-) (limited to 'libjava/gnu/java/nio/SocketChannelImpl.java') diff --git a/libjava/gnu/java/nio/SocketChannelImpl.java b/libjava/gnu/java/nio/SocketChannelImpl.java index 94913fb8ac7..b721c6d7d51 100644 --- a/libjava/gnu/java/nio/SocketChannelImpl.java +++ b/libjava/gnu/java/nio/SocketChannelImpl.java @@ -118,22 +118,21 @@ public class SocketChannelImpl extends SocketChannel public int read (ByteBuffer dst) throws IOException { + byte[] data; int bytes = 0; - int len = 1024; - byte[]b = new byte[len]; + int len = dst.remaining (); - /* - bytes = SocketRead(fd, b, 0, len); - dst.put(b, 0, bytes); - - if (bytes == 0) + if (!dst.hasArray ()) { - // we've hit eof ? - return -1; + data = new byte [len]; + dst.get (data, 0, len); } - */ - - return bytes; + else + { + data = dst.array (); + } + + return socket.getInputStream().read (data, 0, len); } public long read (ByteBuffer[] dsts, int offset, int length) @@ -152,24 +151,22 @@ public class SocketChannelImpl extends SocketChannel public int write (ByteBuffer src) throws IOException { + byte[] data; int bytes = 0; - int len = src.position(); - - /* - if (src.hasArray ()) + int len = src.remaining (); + + if (!src.hasArray ()) { - byte[] b = src.array (); - bytes = SocketWrite (fd, b, 0, len); + data = new byte [len]; + src.get (data, 0, len); } else { - byte[] b = new byte [len]; - src.get (b, 0, len); - bytes = SocketWrite (fd, b, 0, len); + data = src.array (); } - */ - - return bytes; + + socket.getOutputStream().write (data, 0, len); + return len; } public long write (ByteBuffer[] srcs, int offset, int length) -- cgit v1.2.3