diff options
| author | mkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-11-29 07:56:58 +0000 |
|---|---|---|
| committer | mkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-11-29 07:56:58 +0000 |
| commit | 974e2352eb44cd863c8cfa264ed5b92fa416e6df (patch) | |
| tree | eef474c51f1d8941961771ec5290dbedfa69e847 /libjava/gnu/java/nio/natSocketChannelImpl.cc | |
| parent | 6798725201d109c8bdd8b3f1cc6faef07b1470b5 (diff) | |
| download | gcc-974e2352eb44cd863c8cfa264ed5b92fa416e6df.tar.gz | |
2002-11-29 Michael Koch <konqueror@gmx.de>
* gnu/java/nio/natByteBufferImpl.cc,
gnu/java/nio/natCharBufferImpl.cc,
gnu/java/nio/natDoubleBufferImpl.cc,
gnu/java/nio/natFloatBufferImpl.cc,
gnu/java/nio/natIntBufferImpl.cc,
gnu/java/nio/natLongBufferImpl.cc,
gnu/java/nio/natSelectorImpl.cc,
gnu/java/nio/natServerSocketChannelImpl.cc,
gnu/java/nio/natShortBufferImpl.cc,
gnu/java/nio/natSocketChannelImpl.cc:
New files that implement native functionalities.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@59625 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/java/nio/natSocketChannelImpl.cc')
| -rw-r--r-- | libjava/gnu/java/nio/natSocketChannelImpl.cc | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/libjava/gnu/java/nio/natSocketChannelImpl.cc b/libjava/gnu/java/nio/natSocketChannelImpl.cc new file mode 100644 index 00000000000..4e6c6da3782 --- /dev/null +++ b/libjava/gnu/java/nio/natSocketChannelImpl.cc @@ -0,0 +1,130 @@ +// natSelectorImpl.cc + +/* Copyright (C) 2002 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 <gcj/cni.h> +#include <gnu/java/nio/SocketChannelImpl.h> +#include <java/io/IOException.h> +#include <java/net/InetAddress.h> +#include <java/net/SocketException.h> + +jint +gnu::java::nio::SocketChannelImpl::SocketCreate () +{ + int sock = _Jv_socket (AF_INET, SOCK_STREAM, 0); + + if (sock < 0) + { + char* strerr = strerror (errno); + throw new ::java::io::IOException (JvNewStringUTF (strerr)); + } + + return sock; +} + +jint +gnu::java::nio::SocketChannelImpl::SocketConnect (jint fd, + ::java::net::InetAddress *addr, + jint port) +{ + int result = _Jv_connect_address (fd, addr, port, addr, port); + + if (result < 0) + { + char* strerr = strerror (errno); + throw new ::java::io::IOException (JvNewStringUTF (strerr)); + } + + return result; +} + +jint +gnu::java::nio::SocketChannelImpl::SocketBind (jint fd, + ::java::net::InetAddress *addr, + jint port) +{ + int result = _Jv_bind_address (fd, addr, port); + + if (result < 0) + { + char* strerr = strerror (errno); + throw new ::java::io::IOException (JvNewStringUTF (strerr)); + } + + return result; +} + +jint +gnu::java::nio::SocketChannelImpl::SocketListen (jint fd, jint backlog) +{ + int result = _Jv_listen (fd, backlog); + + if (result < 0) + { + char* strerr = strerror (errno); + throw new ::java::io::IOException (JvNewStringUTF (strerr)); + } + + return result; +} + +jint +gnu::java::nio::SocketChannelImpl::SocketAvailable (jint /*fd*/) +{ + throw new ::java::net::SocketException (JvNewStringLatin1 ("SocketAvailable: not implemented")); +} + +jint +gnu::java::nio::SocketChannelImpl::SocketClose (jint fd) +{ + int result = _Jv_close (fd); + + if (result < 0) + { + char* strerr = strerror (errno); + throw new ::java::io::IOException (JvNewStringUTF (strerr)); + } + + return result; +} + +jint +gnu::java::nio::SocketChannelImpl::SocketRead (jint fd, jbyteArray data, + jint offset, jint length) +{ + int result = ::recv (fd, data, offset, length); + + if (result < 0) + { + char* strerr = strerror (errno); + throw new ::java::io::IOException (JvNewStringUTF (strerr)); + } + + return result; +} + +jint +gnu::java::nio::SocketChannelImpl::SocketWrite (jint fd, jbyteArray data, + jint offset, jint length) +{ + int result = ::send (fd, data, offset, length); + + if (result < 0) + { + char* strerr = strerror (errno); + throw new ::java::io::IOException (JvNewStringUTF (strerr)); + } + + return result; +} |
