Commit 94468b1c by Michele Sandri Committed by Mohan Embar

2007-01-28 Michele Sandri <gpointorama@gmail.com>

	* gnu/java/nio/channels/natFileChannelWin32.cc
	(lock): Implemented.
	(unlock): Implemented.

From-SVN: r121265
parent 226a2e08
2007-01-28 Michele Sandri <gpointorama@gmail.com>
* gnu/java/nio/channels/natFileChannelWin32.cc
(lock): Implemented.
(unlock): Implemented.
2007-01-27 Andreas Tobler <a.tobler@schweiz.org> 2007-01-27 Andreas Tobler <a.tobler@schweiz.org>
PR libgcj/30513 PR libgcj/30513
......
...@@ -343,18 +343,52 @@ FileChannelImpl::available (void) ...@@ -343,18 +343,52 @@ FileChannelImpl::available (void)
} }
jboolean jboolean
FileChannelImpl::lock FileChannelImpl::lock (jlong pos, jlong len, jboolean shared, jboolean wait)
(jlong /*pos*/, jlong /*len*/, jboolean /*shared*/, jboolean /*wait*/)
{ {
throw new IOException (JvNewStringLatin1 DWORD flags = 0;
("FileChannel.lock() not implemented")); OVERLAPPED ovlpd;
ZeroMemory(&ovlpd,sizeof(OVERLAPPED));
if(!shared)
flags |= LOCKFILE_EXCLUSIVE_LOCK;
if(!wait)
flags |= LOCKFILE_FAIL_IMMEDIATELY;
ovlpd.Offset = (DWORD)pos;
ovlpd.OffsetHigh = pos>>32;
DWORD lenlow = (DWORD)len;
DWORD lenhigh = len>>32;
BOOL ret = LockFileEx((HANDLE)fd,flags,0,lenlow,lenhigh,&ovlpd);
if(ret==ERROR_IO_PENDING && !shared && wait)
ret = GetOverlappedResult((HANDLE)fd,&ovlpd,NULL,wait);
if(!ret)
_Jv_ThrowIOException(GetLastError());
return true;
} }
void void
FileChannelImpl::unlock (jlong /*pos*/, jlong /*len*/) FileChannelImpl::unlock (jlong pos, jlong len)
{ {
throw new IOException (JvNewStringLatin1 OVERLAPPED ovlpd;
("FileChannel.unlock() not implemented"));
ZeroMemory(&ovlpd,sizeof(OVERLAPPED));
ovlpd.Offset = (DWORD)pos;
ovlpd.OffsetHigh = pos>>32;
DWORD lenlow = (DWORD)len;
DWORD lenhigh = len>>32;
BOOL ret = UnlockFileEx((HANDLE)fd,0,lenlow,lenhigh,&ovlpd);
if(!ret)
_Jv_ThrowIOException(GetLastError());
} }
java::nio::MappedByteBuffer * java::nio::MappedByteBuffer *
......
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