diff options
author | Michael Koch <konqueror@gmx.de> | 2003-11-11 11:49:12 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2003-11-11 11:49:12 +0000 |
commit | 4ba6d1c3e2c8fc01c1e0f87c1417f9350b2ccf80 (patch) | |
tree | c80ab1a57d3bd04ed607e9739fe078abb21575f4 /libjava/gnu | |
parent | e055c0677062fe1888fd992e65fe67a6dbd283a8 (diff) | |
download | gcc-4ba6d1c3e2c8fc01c1e0f87c1417f9350b2ccf80.zip gcc-4ba6d1c3e2c8fc01c1e0f87c1417f9350b2ccf80.tar.gz gcc-4ba6d1c3e2c8fc01c1e0f87c1417f9350b2ccf80.tar.bz2 |
natPipeImpl.cc, [...]: Removed
2003-11-11 Michael Koch <konqueror@gmx.de>
* gnu/java/nio/natPipeImpl.cc,
gnu/java/nio/natSelectorImpl.cc: Removed
* gnu/java/nio/natPipeImplEcos.cc,
gnu/java/nio/natPipeImplPosix.cc,
gnu/java/nio/natPipeImplWin32.cc,
gnu/java/nio/natSelectorImplEcos.cc,
gnu/java/nio/natSelectorImplPosix.cc,
gnu/java/nio/natSelectorImplWin32.cc: New files
* configure.in: Create links for gnu/java/nio/natPipeImpl.cc and
gnu/java/nio/natSelectorImpl.cc
* configure: Regenerated.
From-SVN: r73446
Diffstat (limited to 'libjava/gnu')
-rw-r--r-- | libjava/gnu/java/nio/natPipeImplEcos.cc | 25 | ||||
-rw-r--r-- | libjava/gnu/java/nio/natPipeImplPosix.cc (renamed from libjava/gnu/java/nio/natPipeImpl.cc) | 2 | ||||
-rw-r--r-- | libjava/gnu/java/nio/natPipeImplWin32.cc | 38 | ||||
-rw-r--r-- | libjava/gnu/java/nio/natSelectorImplEcos.cc | 25 | ||||
-rw-r--r-- | libjava/gnu/java/nio/natSelectorImplPosix.cc (renamed from libjava/gnu/java/nio/natSelectorImpl.cc) | 2 | ||||
-rw-r--r-- | libjava/gnu/java/nio/natSelectorImplWin32.cc | 91 |
6 files changed, 181 insertions, 2 deletions
diff --git a/libjava/gnu/java/nio/natPipeImplEcos.cc b/libjava/gnu/java/nio/natPipeImplEcos.cc new file mode 100644 index 0000000..7c6b4b5 --- /dev/null +++ b/libjava/gnu/java/nio/natPipeImplEcos.cc @@ -0,0 +1,25 @@ +// natPipeImplEcos.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 <platform.h> + +#include <errno.h> +#include <string.h> +#include <unistd.h> + +#include <gnu/java/nio/PipeImpl.h> +#include <java/io/IOException.h> + +void +gnu::java::nio::PipeImpl::nativeInit (::java::nio::channels::spi::SelectorProvider*) +{ + throw new ::java::io::IOException (JvNewStringUTF ("nativeInit() not implemented")); +} diff --git a/libjava/gnu/java/nio/natPipeImpl.cc b/libjava/gnu/java/nio/natPipeImplPosix.cc index caae89c..b847faa 100644 --- a/libjava/gnu/java/nio/natPipeImpl.cc +++ b/libjava/gnu/java/nio/natPipeImplPosix.cc @@ -1,4 +1,4 @@ -// natPipeImpl.cc +// natPipeImplPosix.cc /* Copyright (C) 2003 Free Software Foundation diff --git a/libjava/gnu/java/nio/natPipeImplWin32.cc b/libjava/gnu/java/nio/natPipeImplWin32.cc new file mode 100644 index 0000000..4f48972 --- /dev/null +++ b/libjava/gnu/java/nio/natPipeImplWin32.cc @@ -0,0 +1,38 @@ +// natPipeImplWin32.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 <platform.h> + +#include <errno.h> +#include <string.h> +#include <unistd.h> + +#include <gnu/java/nio/PipeImpl.h> +//#include <gnu/java/nio/PipeImpl$SinkChannelImpl.h> +//#include <gnu/java/nio/PipeImpl$SourceChannelImpl.h> +#include <java/io/IOException.h> +#include <java/nio/channels/spi/SelectorProvider.h> + +void +gnu::java::nio::PipeImpl::nativeInit (::java::nio::channels::spi::SelectorProvider* /*provider*/) +{ + int filedes [2]; + + if (_Jv_pipe (filedes) < 0) + throw new ::java::io::IOException (JvNewStringUTF (strerror (errno))); + + /* FIXME + source = new gnu::java::nio::PipeImpl$SourceChannelImpl + (this, provider, filedes [0]); + sink = new gnu::java::nio::PipeImpl$SinkChannelImpl + (this, provider, filedes [1]); + */ +} diff --git a/libjava/gnu/java/nio/natSelectorImplEcos.cc b/libjava/gnu/java/nio/natSelectorImplEcos.cc new file mode 100644 index 0000000..a733686 --- /dev/null +++ b/libjava/gnu/java/nio/natSelectorImplEcos.cc @@ -0,0 +1,25 @@ +// natSelectorImplEcos.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 <platform.h> + +#include <errno.h> +#include <string.h> + +#include <gnu/java/nio/SelectorImpl.h> +#include <java/io/IOException.h> + +jint +gnu::java::nio::SelectorImpl::implSelect (jintArray read, jintArray write, + jintArray except, jlong timeout) +{ + throw new ::java::io::IOException (JvNewStringUTF ("implSelect() not implemented")); +} diff --git a/libjava/gnu/java/nio/natSelectorImpl.cc b/libjava/gnu/java/nio/natSelectorImplPosix.cc index 764167a..8a5112f 100644 --- a/libjava/gnu/java/nio/natSelectorImpl.cc +++ b/libjava/gnu/java/nio/natSelectorImplPosix.cc @@ -1,4 +1,4 @@ -// natSelectorImpl.cc +// natSelectorImplPosix.cc /* Copyright (C) 2002, 2003 Free Software Foundation diff --git a/libjava/gnu/java/nio/natSelectorImplWin32.cc b/libjava/gnu/java/nio/natSelectorImplWin32.cc new file mode 100644 index 0000000..c82c2aa --- /dev/null +++ b/libjava/gnu/java/nio/natSelectorImplWin32.cc @@ -0,0 +1,91 @@ +// natSelectorImplWin32.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 <platform.h> + +#include <errno.h> +#include <string.h> + +#include <gnu/java/nio/SelectorImpl.h> +#include <java/io/IOException.h> + +void +helper_put_filedescriptors (jintArray fdArray, fd_set& fds, int& max_fd) +{ + jint* tmpFDArray = elements (fdArray); + + for (int index = 0; index < JvGetArrayLength (fdArray); index++) + { + FD_SET (tmpFDArray [index], &fds); + + if (tmpFDArray [index] > max_fd) + max_fd = tmpFDArray [index]; + } +} + +void +helper_get_filedescriptors (jintArray& fdArray, fd_set fds) +{ + jint* tmpFDArray = elements (fdArray); + + for (int index = 0; index < JvGetArrayLength (fdArray); index++) + if (!FD_ISSET (tmpFDArray [index], &fds)) + tmpFDArray [index] = 0; +} + +jint +gnu::java::nio::SelectorImpl::implSelect (jintArray read, jintArray write, + jintArray except, jlong timeout) +{ + jint result; + int max_fd = 0; + fd_set read_fds; + fd_set write_fds; + fd_set except_fds; + struct timeval real_time_data; + struct timeval *time_data = NULL; + + real_time_data.tv_sec = 0; + real_time_data.tv_usec = timeout; + + // If not legal timeout value is given, use NULL. + // This means an infinite timeout. + if (timeout >= 0) + { + time_data = &real_time_data; + } + + // Reset all fd_set structures + FD_ZERO (&read_fds); + FD_ZERO (&write_fds); + FD_ZERO (&except_fds); + + // Fill the fd_set data structures for the _Jv_select() call. + helper_put_filedescriptors (read, read_fds, max_fd); + helper_put_filedescriptors (write, write_fds, max_fd); + helper_put_filedescriptors (except, except_fds, max_fd); + + // Actually do the select + result = _Jv_select (max_fd + 1, &read_fds, &write_fds, &except_fds, time_data); + + if (result < 0) + { + char* strerr = strerror (errno); + throw new ::java::io::IOException (JvNewStringUTF (strerr)); + } + + // Set the file descriptors according to the values returned from select(). + helper_get_filedescriptors (read, read_fds); + helper_get_filedescriptors (write, write_fds); + helper_get_filedescriptors (except, except_fds); + + return result; +} |