Final (TCP) socket timeout patch?

Tom Tromey tromey@redhat.com
Fri Jan 11 10:47:00 GMT 2002


>>>>> "Andreas" == Andreas Tobler <toa@pop.agri.ch> writes:

Andreas> Gives this one: invalid conversion from `void*' to `char*'

Yeah, it would.
Try this one.

Tom

Index: ChangeLog
from  Tom Tromey  <tromey@redhat.com>

	* java/net/natPlainSocketImpl.cc (BooleanClass): Removed.
	(_Jv_recv): New template function.
	(read): Use _Jv_recv.
	(setOption): Use Boolean::class$.  Throw exception if option not
	Boolean or Integer.
	Include IllegalArgumentException.h.

Index: java/net/natPlainSocketImpl.cc
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/net/natPlainSocketImpl.cc,v
retrieving revision 1.26
diff -u -r1.26 natPlainSocketImpl.cc
--- java/net/natPlainSocketImpl.cc 2002/01/08 21:14:58 1.26
+++ java/net/natPlainSocketImpl.cc 2002/01/11 18:43:41
@@ -70,6 +70,15 @@
 #undef accept
 #endif
 
+// A wrapper for recv so we don't have to do configure tests.
+template <typename T_buf>
+static inline int
+_Jv_recv (int (*recv_func) (int s, T_buf buf, size_t len, int flags),
+	  int s, void *buf, size_t len, int flags)
+{
+  return recv_func (s, (T_buf) buf, len, flags);
+}
+
 #include <gcj/cni.h>
 #include <gcj/javaprims.h>
 #include <java/io/IOException.h>
@@ -88,8 +97,7 @@
 #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 @@
       }
   }
   // 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 @@
   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,11 +606,15 @@
 	    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) 



More information about the Java-patches mailing list