summaryrefslogtreecommitdiff
path: root/libjava/gnu/java/nio/SocketChannelImpl.java
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2003-06-19 16:42:25 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2003-06-19 16:42:25 +0000
commit98a91a724e8f0377624353dcc4dc7e5d2875dc96 (patch)
tree2d17811875fd5e4fe910a6479ac643d3267cf0eb /libjava/gnu/java/nio/SocketChannelImpl.java
parent536a695f0454b7c12015e0ac94aaa7125e1df351 (diff)
2003-06-19 Michael Koch <konqueror@gmx.de>
* 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
Diffstat (limited to 'libjava/gnu/java/nio/SocketChannelImpl.java')
-rw-r--r--libjava/gnu/java/nio/SocketChannelImpl.java45
1 files changed, 21 insertions, 24 deletions
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)