mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 03:46:53 -05:00
2007-01-28 Michele Sandri <gpointorama@gmail.com>
* gnu/java/nio/channels/natFileChannelWin32.cc (lock): Implemented. (unlock): Implemented. From-SVN: r121258
This commit is contained in:
committed by
Mohan Embar
parent
78b69a1c56
commit
9c5a8333f4
@@ -1,3 +1,9 @@
|
||||
2007-01-28 Michele Sandri <gpointorama@gmail.com>
|
||||
|
||||
* gnu/java/nio/channels/natFileChannelWin32.cc
|
||||
(lock): Implemented.
|
||||
(unlock): Implemented.
|
||||
|
||||
2007-01-24 Marco Trudel <mtrudel@gmx.ch>
|
||||
|
||||
* java/security/Security.java
|
||||
|
||||
@@ -343,18 +343,52 @@ FileChannelImpl::available (void)
|
||||
}
|
||||
|
||||
jboolean
|
||||
FileChannelImpl::lock
|
||||
(jlong /*pos*/, jlong /*len*/, jboolean /*shared*/, jboolean /*wait*/)
|
||||
FileChannelImpl::lock (jlong pos, jlong len, jboolean shared, jboolean wait)
|
||||
{
|
||||
throw new IOException (JvNewStringLatin1
|
||||
("FileChannel.lock() not implemented"));
|
||||
DWORD flags = 0;
|
||||
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
|
||||
FileChannelImpl::unlock (jlong /*pos*/, jlong /*len*/)
|
||||
FileChannelImpl::unlock (jlong pos, jlong len)
|
||||
{
|
||||
throw new IOException (JvNewStringLatin1
|
||||
("FileChannel.unlock() not implemented"));
|
||||
OVERLAPPED ovlpd;
|
||||
|
||||
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 *
|
||||
|
||||
Reference in New Issue
Block a user