From e3b6a47f66e30920f97d8206c57bd881e3a175f7 Mon Sep 17 00:00:00 2001 From: Michael Koch Date: Tue, 11 Feb 2003 06:47:50 +0000 Subject: [PATCH] FileLockImpl.java, [...]: New files. 2003-02-11 Michael Koch * gnu/java/nio/FileLockImpl.java, java/nio/channels/FileLock.java: New files. From-SVN: r62681 --- libjava/ChangeLog | 5 + libjava/gnu/java/nio/FileLockImpl.java | 63 +++++++++++ libjava/java/nio/channels/FileLock.java | 137 ++++++++++++++++++++++++ 3 files changed, 205 insertions(+) create mode 100644 libjava/gnu/java/nio/FileLockImpl.java create mode 100644 libjava/java/nio/channels/FileLock.java diff --git a/libjava/ChangeLog b/libjava/ChangeLog index dbeaa7dba78..8fb09ea7c1b 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2003-02-11 Michael Koch + + * gnu/java/nio/FileLockImpl.java, + java/nio/channels/FileLock.java: New files. + 2003-02-11 Michael Koch * java/nio/charset/IllegalCharsetNameException.java diff --git a/libjava/gnu/java/nio/FileLockImpl.java b/libjava/gnu/java/nio/FileLockImpl.java new file mode 100644 index 00000000000..2e55f6bb657 --- /dev/null +++ b/libjava/gnu/java/nio/FileLockImpl.java @@ -0,0 +1,63 @@ +/* FileChannelImpl.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +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.nio.channels.FileChannel; +import java.nio.channels.FileLock; + +/** + * @author Michael Koch + */ +public class FileLockImpl extends FileLock +{ + public FileLockImpl (FileChannel channel, long position, long size, + boolean shared) + { + super (channel, position, size, shared); + } + + public boolean isValid () + { + throw new Error ("Not implemented"); + } + + public void release () + { + throw new Error ("Not implemented"); + } +} diff --git a/libjava/java/nio/channels/FileLock.java b/libjava/java/nio/channels/FileLock.java new file mode 100644 index 00000000000..1b4595e5c43 --- /dev/null +++ b/libjava/java/nio/channels/FileLock.java @@ -0,0 +1,137 @@ +/* FileLock.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +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 java.nio.channels; + +import java.io.IOException; + +/** + * @since 1.4 + */ +public abstract class FileLock +{ + FileChannel channel; + long position; + long size; + boolean shared; + + /** + * Initializes the file lock. + * + * @exception IllegalArgumentException If the preconditions on the parameters do not hold + */ + protected FileLock (FileChannel channel, long position, long size, + boolean shared) + { + if (position < 0 || + size < 0) + throw new IllegalArgumentException (); + + this.channel = channel; + this.position = position; + this.size = size; + this.shared = shared; + } + + /** + * Tells whether or not this lock is valid. + */ + public abstract boolean isValid(); + + /** + * Releases this lock. + * + * @exception IOException If an error occurs + * @exception ClosedChannelException If the locked channel is no longer open. + */ + public abstract void release () throws IOException; + + /** + * Returns the file channel upon whose file this lock is held. + */ + public final FileChannel channel () + { + return channel; + } + + /** + * Tells whether this lock is shared. + */ + public final boolean isShared () + { + return shared; + } + + /** + * Tells whether or not this lock overlaps the given lock range. + */ + public final boolean overlaps (long position, long size) + { + if (position > this.position +this.size) + return false; + + if (position + size < this.position) + return false; + + return true; + } + + /** + * Returns the position within the file of the first byte of the + * locked region. + */ + public final long position () + { + return position; + } + + /** + * Returns the size of the locked region in bytes. + */ + public final long size () + { + return size; + } + + /** + * Returns a string describing the range, type, and validity of this lock. + */ + public final String toString () + { + return "file-lock:pos=" + position + "size=" + size; + } +} -- 2.30.2