diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 68fd9dc9e7782baae9d4155595cf018565fa98c4..6222b5726fafe28bac582691caa943c2714bc1c2 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,12 @@ +2004-04-23 Michael Koch <konqueror@gmx.de> + + * gnu/java/nio/channels/FileChannelImpl.java + (SET, CUR): Unused, removed. + (read): Implement here directly. + (implRead): Removed. + (write): Implement here directly. + (implWrite): Removed. + 2004-04-23 Dalibor Topic <robilad@kaffe.org> * javax/rmi/CORBA/PortableRemoteObjectDelegate.java, diff --git a/libjava/gnu/java/nio/channels/FileChannelImpl.java b/libjava/gnu/java/nio/channels/FileChannelImpl.java index 4bddf268daf31439add8cc1cee2a18d3e5f47f2a..ea6ef0e43bf833eddb94468c757db0b62e6528a6 100644 --- a/libjava/gnu/java/nio/channels/FileChannelImpl.java +++ b/libjava/gnu/java/nio/channels/FileChannelImpl.java @@ -60,13 +60,8 @@ import java.nio.channels.WritableByteChannel; * Instances of this class are created by invoking getChannel * Upon a Input/Output/RandomAccessFile object. */ - public final class FileChannelImpl extends FileChannel { - // These are WHENCE values for seek. - static final int SET = 0; - static final int CUR = 1; - // These are mode values for open(). public static final int READ = 1; public static final int WRITE = 2; @@ -139,7 +134,15 @@ public final class FileChannelImpl extends FileChannel public int read (ByteBuffer dst) throws IOException { - return implRead (dst); + int result; + byte[] buffer = new byte [dst.remaining ()]; + + result = read (buffer, 0, buffer.length); + + if (result > 0) + dst.put (buffer, 0, result); + + return result; } public int read (ByteBuffer dst, long position) @@ -149,25 +152,12 @@ public final class FileChannelImpl extends FileChannel throw new IllegalArgumentException (); long oldPosition = implPosition (); position (position); - int result = implRead (dst); + int result = read(dst); position (oldPosition); return result; } - private int implRead (ByteBuffer dst) throws IOException - { - int result; - byte[] buffer = new byte [dst.remaining ()]; - - result = read (buffer, 0, buffer.length); - - if (result > 0) - dst.put (buffer, 0, result); - - return result; - } - public native int read () throws IOException; @@ -189,7 +179,20 @@ public final class FileChannelImpl extends FileChannel public int write (ByteBuffer src) throws IOException { - return implWrite (src); + int len = src.remaining (); + if (src.hasArray()) + { + byte[] buffer = src.array(); + write(buffer, src.arrayOffset() + src.position(), len); + } + else + { + // Use a more efficient native method! FIXME! + byte[] buffer = new byte [len]; + src.get (buffer, 0, len); + write (buffer, 0, len); + } + return len; } public int write (ByteBuffer src, long position) @@ -209,30 +212,12 @@ public final class FileChannelImpl extends FileChannel oldPosition = implPosition (); seek (position); - result = implWrite (src); + result = write(src); seek (oldPosition); return result; } - private int implWrite (ByteBuffer src) throws IOException - { - int len = src.remaining (); - if (src.hasArray()) - { - byte[] buffer = src.array(); - write(buffer, src.arrayOffset() + src.position(), len); - } - else - { - // Use a more efficient native method! FIXME! - byte[] buffer = new byte [len]; - src.get (buffer, 0, len); - write (buffer, 0, len); - } - return len; - } - public native void write (byte[] buffer, int offset, int length) throws IOException;