From cc1b3d6b642d0baf424a9fca1ad7d94e1f342b02 Mon Sep 17 00:00:00 2001 From: Michael Koch Date: Wed, 14 May 2003 06:37:59 +0000 Subject: 2003-05-14 Michael Koch * gnu/java/nio/FileLockImpl.java (released): New member variable. (FileLockImpl): Initialize released. (releaseImpl): New native method. (release): Implemented. * gnu/java/nio/SelectorImpl.java: Reformatted. * gnu/java/nio/SelectionKeyImpl.java: Reformatted. * gnu/java/nio/ServerSocketChannelImpl.java: Reformatted. (accept): Throws IOException. * gnu/java/nio/SocketChannelImpl.java: Reformatted. (implConfigureBlocking): Throws IOException. (connect): Likewise. (read): Likewise. (write): Likewise. * gnu/java/nio/natFileLockImpl.cc: New file. * java/nio/channels/FileLock.java: Reformatted. * Makefile.am: (ordinary_java_source_files): Added gnu/java/nio/FileLockImpl.java. (nat_source_files): Added gnu/java/nio/natFileLockImpl.cc. * Makefile.in: Regenerated. From-SVN: r66799 --- libjava/gnu/java/nio/FileLockImpl.java | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'libjava/gnu/java/nio/FileLockImpl.java') diff --git a/libjava/gnu/java/nio/FileLockImpl.java b/libjava/gnu/java/nio/FileLockImpl.java index 2e55f6b..088e552 100644 --- a/libjava/gnu/java/nio/FileLockImpl.java +++ b/libjava/gnu/java/nio/FileLockImpl.java @@ -35,29 +35,41 @@ this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. */ + package gnu.java.nio; +import java.io.FileDescriptor; +import java.io.IOException; import java.nio.channels.FileChannel; import java.nio.channels.FileLock; /** * @author Michael Koch + * @since 1.4 */ public class FileLockImpl extends FileLock { - public FileLockImpl (FileChannel channel, long position, long size, - boolean shared) + private FileDescriptor fd; + private boolean released; + + public FileLockImpl (FileDescriptor fd, FileChannel channel, long position, + long size, boolean shared) { super (channel, position, size, shared); + this.fd = fd; + this.released = false; } public boolean isValid () { - throw new Error ("Not implemented"); + return (released || !channel.isOpen ()); } - public void release () + private native void releaseImpl () throws IOException; + + public synchronized void release () throws IOException { - throw new Error ("Not implemented"); + releaseImpl (); + released = true; } } -- cgit v1.1