Commit 9719e37c by Michael Koch Committed by Michael Koch

FileLockImpl.java: Fixed filename in copyright.

2004-01-23  Michael Koch  <konqueror@gmx.de>

	* gnu/java/nio/FileLockImpl.java:
	Fixed filename in copyright.
	(released): Removed.
	(finalize): New method.
	* gnu/java/nio/natFileLockImpl.cc
	(releaseImpl): Implemented.
	* java/nio/channels/FileChannelImpl.java:
	Reworked imports.
	(lock): Implemented.
	(lockImpl): New method.
	(tryLock): Implemented.
	(tryLockImpl): New method.
	* java/nio/channels/natFileChannelImpl.cc
	(lockImpl): New method.
	(tryLockImpl): New method.

From-SVN: r76422
parent ca1d829f
2004-01-23 Michael Koch <konqueror@gmx.de> 2004-01-23 Michael Koch <konqueror@gmx.de>
* gnu/java/nio/FileLockImpl.java:
Fixed filename in copyright.
(released): Removed.
(finalize): New method.
* gnu/java/nio/natFileLockImpl.cc
(releaseImpl): Implemented.
* java/nio/channels/FileChannelImpl.java:
Reworked imports.
(lock): Implemented.
(lockImpl): New method.
(tryLock): Implemented.
(tryLockImpl): New method.
* java/nio/channels/natFileChannelImpl.cc
(lockImpl): New method.
(tryLockImpl): New method.
2004-01-23 Michael Koch <konqueror@gmx.de>
* java/io/FileDescriptor.java * java/io/FileDescriptor.java
(lock): New method. (lock): New method.
(tryLock): New method. (tryLock): New method.
......
/* FileChannelImpl.java -- /* FileLockImpl.java --
Copyright (C) 2002 Free Software Foundation, Inc. Copyright (C) 2002, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath. This file is part of GNU Classpath.
...@@ -60,14 +60,24 @@ public class FileLockImpl extends FileLock ...@@ -60,14 +60,24 @@ public class FileLockImpl extends FileLock
} }
private FileDescriptor fd; private FileDescriptor fd;
private boolean released;
public FileLockImpl (FileDescriptor fd, FileChannel channel, long position, public FileLockImpl (FileDescriptor fd, FileChannel channel, long position,
long size, boolean shared) long size, boolean shared)
{ {
super (channel, position, size, shared); super (channel, position, size, shared);
this.fd = fd; this.fd = fd;
this.released = false; }
public void finalize()
{
try
{
release();
}
catch (IOException e)
{
// Ignore this.
}
} }
public boolean isValid () public boolean isValid ()
......
...@@ -20,6 +20,5 @@ details. */ ...@@ -20,6 +20,5 @@ details. */
void void
gnu::java::nio::FileLockImpl::releaseImpl () gnu::java::nio::FileLockImpl::releaseImpl ()
{ {
throw new ::java::io::IOException fd->unlock(position(), size());
(JvNewStringUTF ("releaseImpl not implemented"));
} }
...@@ -38,6 +38,9 @@ exception statement from your version. */ ...@@ -38,6 +38,9 @@ exception statement from your version. */
package java.nio.channels; package java.nio.channels;
import gnu.classpath.Configuration;
import gnu.gcj.RawData;
import gnu.java.nio.FileLockImpl;
import java.io.EOFException; import java.io.EOFException;
import java.io.FileDescriptor; import java.io.FileDescriptor;
import java.io.FileInputStream; import java.io.FileInputStream;
...@@ -47,8 +50,6 @@ import java.io.RandomAccessFile; ...@@ -47,8 +50,6 @@ import java.io.RandomAccessFile;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.MappedByteBuffer; import java.nio.MappedByteBuffer;
import java.nio.MappedByteBufferImpl; import java.nio.MappedByteBufferImpl;
import gnu.classpath.Configuration;
import gnu.gcj.RawData;
/** /**
* This file is not user visible ! * This file is not user visible !
...@@ -354,8 +355,22 @@ public class FileChannelImpl extends FileChannel ...@@ -354,8 +355,22 @@ public class FileChannelImpl extends FileChannel
file_obj instanceof FileInputStream) file_obj instanceof FileInputStream)
throw new NonWritableChannelException (); throw new NonWritableChannelException ();
throw new Error ("Not implemented"); boolean completed = false;
try
{
begin();
lockImpl(position, size, shared);
completed = true;
return new FileLockImpl(fd, this, position, size, shared);
}
finally
{
end(completed);
}
} }
private native void lockImpl(long position, long size, boolean shared);
public FileLock tryLock (long position, long size, boolean shared) public FileLock tryLock (long position, long size, boolean shared)
throws IOException throws IOException
...@@ -367,9 +382,27 @@ public class FileChannelImpl extends FileChannel ...@@ -367,9 +382,27 @@ public class FileChannelImpl extends FileChannel
if (!isOpen ()) if (!isOpen ())
throw new ClosedChannelException (); throw new ClosedChannelException ();
throw new Error ("Not implemented"); if (! tryLockImpl(position, size, shared))
return null;
boolean completed = false;
try
{
boolean lockable = tryLockImpl(position, size, shared);
completed = true;
return (lockable
? new FileLockImpl(fd, this, position, size, shared)
: null);
}
finally
{
end(completed);
}
} }
private native boolean tryLockImpl(long position, long size, boolean shared);
public long position () public long position ()
throws IOException throws IOException
{ {
......
...@@ -25,11 +25,13 @@ details. */ ...@@ -25,11 +25,13 @@ details. */
#endif #endif
#include <gnu/gcj/RawData.h> #include <gnu/gcj/RawData.h>
#include <gnu/java/nio/FileLockImpl.h>
#include <java/io/FileDescriptor.h> #include <java/io/FileDescriptor.h>
#include <java/io/IOException.h> #include <java/io/IOException.h>
#include <java/nio/ByteBuffer.h> #include <java/nio/ByteBuffer.h>
#include <java/nio/channels/FileChannel.h> #include <java/nio/channels/FileChannel.h>
#include <java/nio/channels/FileChannelImpl.h> #include <java/nio/channels/FileChannelImpl.h>
#include <java/nio/channels/FileLock.h>
jlong jlong
java::nio::channels::FileChannelImpl::size () java::nio::channels::FileChannelImpl::size ()
...@@ -92,3 +94,17 @@ java::nio::channels::FileChannelImpl::nio_msync (gnu::gcj::RawData* /*map_addres ...@@ -92,3 +94,17 @@ java::nio::channels::FileChannelImpl::nio_msync (gnu::gcj::RawData* /*map_addres
{ {
throw new ::java::io::IOException (JvNewStringUTF ("msync not implemented")); throw new ::java::io::IOException (JvNewStringUTF ("msync not implemented"));
} }
void
java::nio::channels::FileChannelImpl::lockImpl(jlong position, jlong size, jboolean shared)
{
// FIXME: shared is unused, write is always true.
fd->lock(position, size, true);
}
jboolean
java::nio::channels::FileChannelImpl::tryLockImpl(jlong position, jlong size, jboolean shared)
{
// FIXME: shared is unused, write is always true.
return fd->tryLock(position, size, true);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment