diff options
Diffstat (limited to 'libjava/java/nio/channels/natFileChannelImpl.cc')
-rw-r--r-- | libjava/java/nio/channels/natFileChannelImpl.cc | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/libjava/java/nio/channels/natFileChannelImpl.cc b/libjava/java/nio/channels/natFileChannelImpl.cc new file mode 100644 index 00000000000..8dbbd141e60 --- /dev/null +++ b/libjava/java/nio/channels/natFileChannelImpl.cc @@ -0,0 +1,94 @@ +// natFileChannelImpl.cc + +/* Copyright (C) 2003 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +#include <config.h> + +#include <jvm.h> + +#include <errno.h> +#include <string.h> +#include <sys/types.h> + +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif + +#ifdef HAVE_FCNTL_H +#include <fcntl.h> +#endif + +#include <gnu/gcj/RawData.h> +#include <java/io/FileDescriptor.h> +#include <java/io/IOException.h> +#include <java/nio/ByteBuffer.h> +#include <java/nio/channels/FileChannel.h> +#include <java/nio/channels/FileChannelImpl.h> + +jlong +java::nio::channels::FileChannelImpl::size () +{ + return fd->getLength (); +} + +jlong +java::nio::channels::FileChannelImpl::implPosition () +{ + return fd->getFilePointer (); +} + +java::nio::channels::FileChannel* +java::nio::channels::FileChannelImpl::implPosition (jlong newPosition) +{ + fd->seek (newPosition, ::java::io::FileDescriptor::SET, true); + return this; +} + +jint +java::nio::channels::FileChannelImpl::implRead (JArray<jbyte>* buffer, + jint offset, jint len) +{ + return fd->read (buffer, offset, len); +} + +jint +java::nio::channels::FileChannelImpl::implWrite (JArray<jbyte>* buffer, + jint offset, jint len) +{ + fd->write (buffer, offset, len); + return len; +} + +java::nio::channels::FileChannel* +java::nio::channels::FileChannelImpl::implTruncate (jlong size) +{ + fd->setLength (size); + return this; +} + +gnu::gcj::RawData* +java::nio::channels::FileChannelImpl::nio_mmap_file (jlong /*pos*/, jlong /*size*/, + jint /*mode*/) +{ + throw new ::java::io::IOException (JvNewStringUTF ("mmap not implemented")); +} + +void +java::nio::channels::FileChannelImpl::nio_unmmap_file (gnu::gcj::RawData* /*address*/, + jint /*size*/) +{ + throw new ::java::io::IOException (JvNewStringUTF ("munmap not implemented")); +} + +void +java::nio::channels::FileChannelImpl::nio_msync (gnu::gcj::RawData* /*map_address*/, + jint /*length*/) +{ + throw new ::java::io::IOException (JvNewStringUTF ("msync not implemented")); +} |