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
This commit is contained in:
parent
ca1d829f31
commit
9719e37cec
5 changed files with 86 additions and 10 deletions
|
@ -1,3 +1,21 @@
|
||||||
|
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>
|
2004-01-23 Michael Koch <konqueror@gmx.de>
|
||||||
|
|
||||||
* java/io/FileDescriptor.java
|
* java/io/FileDescriptor.java
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* 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
|
||||||
}
|
}
|
||||||
|
|
||||||
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. */
|
||||||
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. */
|
||||||
|
|
||||||
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;
|
||||||
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
|
||||||
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
|
||||||
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. */
|
||||||
#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
|
||||||
{
|
{
|
||||||
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);
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue