diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-01-18 17:23:23 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-01-18 17:23:23 +0000 |
commit | 7965d83f493f78c5125bcb4010f94ac0df181917 (patch) | |
tree | ff69a21f6d83fedc7ec7c083f312376984477290 /libjava/java | |
parent | 9208060f3b9f6e2cca0c3bd446ebc500d49334a0 (diff) | |
download | ppe42-gcc-7965d83f493f78c5125bcb4010f94ac0df181917.tar.gz ppe42-gcc-7965d83f493f78c5125bcb4010f94ac0df181917.zip |
* java/net/natPlainSocketImpl.cc: Include
IllegalArgumentException.h.
(_Jv_recv): New template function.
(BooleanClass): Removed.
(read): Use _Jv_recv.
(setOption): Use Boolean::class$. Throw exception if object is
not Boolean or Integer.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48992 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/net/natPlainSocketImpl.cc | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/libjava/java/net/natPlainSocketImpl.cc b/libjava/java/net/natPlainSocketImpl.cc index cc8dca11830..ca294d23f1a 100644 --- a/libjava/java/net/natPlainSocketImpl.cc +++ b/libjava/java/net/natPlainSocketImpl.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 1999, 2000 , 2002 Free Software Foundation +/* Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation This file is part of libgcj. @@ -70,6 +70,15 @@ _Jv_accept (int fd, struct sockaddr *addr, socklen_t *addrlen) #undef accept #endif +// A wrapper for recv so we don't have to do configure tests. +template <typename T_fd, typename T_buf, typename T_len, typename T_flags> +static inline int +_Jv_recv (int (*recv_func) (T_fd s, T_buf buf, T_len len, T_flags flags), + int s, void *buf, size_t len, int flags) +{ + return recv_func ((T_fd) s, (T_buf) buf, (T_len) len, (T_flags) flags); +} + #include <gcj/cni.h> #include <gcj/javaprims.h> #include <java/io/IOException.h> @@ -88,8 +97,7 @@ _Jv_accept (int fd, struct sockaddr *addr, socklen_t *addrlen) #include <java/lang/Thread.h> #include <java/lang/NullPointerException.h> #include <java/lang/ArrayIndexOutOfBoundsException.h> - -#define BooleanClass java::lang::Boolean::class$ +#include <java/lang/IllegalArgumentException.h> #ifdef DISABLE_JAVA_NET @@ -497,7 +505,7 @@ java::net::PlainSocketImpl::read(jbyteArray buffer, jint offset, jint count) } } // Read the socket. - int r = ::recv (fnum, bytes, count, 0); + int r = _Jv_recv (::recv, fnum, (void *) bytes, count, 0); if (r == 0) return -1; if (java::lang::Thread::interrupted()) @@ -584,7 +592,7 @@ java::net::PlainSocketImpl::setOption (jint optID, java::lang::Object *value) int val; socklen_t val_len = sizeof (val); - if (_Jv_IsInstanceOf (value, &BooleanClass)) + if (_Jv_IsInstanceOf (value, &java::lang::Boolean::class$)) { java::lang::Boolean *boolobj = static_cast<java::lang::Boolean *> (value); @@ -598,12 +606,16 @@ java::net::PlainSocketImpl::setOption (jint optID, java::lang::Object *value) val = 0; } } - else // assume value is an Integer + else if (_Jv_IsInstanceOf (value, &java::lang::Integer::class$)) { java::lang::Integer *intobj = static_cast<java::lang::Integer *> (value); val = (int) intobj->intValue(); } + else + { + throw new java::lang::IllegalArgumentException (JvNewStringLatin1 ("`value' must be Boolean or Integer")); + } switch (optID) { |