diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 7c125415ca9..7483b4c4408 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,10 @@ +2002-03-07 Adam Megacz + + * java/net/natPlainSocketImpl.cc: Changed USE_WINSOCK to + WIN32, and added thunks for read(), write(), and close(). + * java/net/natPlainSocketImpl.cc (accept, read, read): + Disabled timeouts on WIN32 pending discussion. + 2002-03-07 Adam Megacz * win32.cc (_Jv_platform_gettimeofday): Now takes no args, diff --git a/libjava/java/net/natPlainSocketImpl.cc b/libjava/java/net/natPlainSocketImpl.cc index 907143019fb..7090fcd64a4 100644 --- a/libjava/java/net/natPlainSocketImpl.cc +++ b/libjava/java/net/natPlainSocketImpl.cc @@ -10,22 +10,45 @@ details. */ #ifndef DISABLE_JAVA_NET -#ifdef USE_WINSOCK +#ifdef WIN32 #include #include #include #include +#undef STRICT +#undef MAX_PRIORITY +#undef MIN_PRIORITY +#undef FIONREAD + +// stuff to make Win32 look POSIXy +static inline int close(int s) { + return closesocket(s); +} + +static inline int write(int s, void *buf, int len) +{ + return send(s, (char*)buf, len, 0); +} + +static inline int read(int s, void *buf, int len) +{ + return recv(s, (char*)buf, len, 0); +} + +// these errors cannot occur on Win32 +#define ENOTCONN 0 +#define ECONNRESET 0 #ifndef ENOPROTOOPT #define ENOPROTOOPT 109 #endif -#else /* USE_WINSOCK */ +#else /* WIN32 */ #include "posix.h" #include #include #include #include #include -#endif /* USE_WINSOCK */ +#endif /* WIN32 */ #endif /* DISABLE_JAVA_NET */ #if HAVE_BSTRING_H @@ -325,6 +348,8 @@ java::net::PlainSocketImpl::accept (java::net::PlainSocketImpl *s) socklen_t addrlen = sizeof(u); int new_socket = 0; +// FIXME: implement timeout support for Win32 +#ifndef WIN32 // Do timeouts via select since SO_RCVTIMEO is not always available. if (timeout > 0) { @@ -341,6 +366,7 @@ java::net::PlainSocketImpl::accept (java::net::PlainSocketImpl *s) throw new java::io::InterruptedIOException ( JvNewStringUTF("Accept timed out")); } +#endif /* WIN32 */ new_socket = _Jv_accept (fnum, (sockaddr*) &u, &addrlen); if (new_socket < 0) @@ -461,6 +487,8 @@ java::net::PlainSocketImpl::read(void) { jbyte b; +// FIXME: implement timeout support for Win32 +#ifndef WIN32 // Do timeouts via select. if (timeout > 0) { @@ -482,6 +510,8 @@ java::net::PlainSocketImpl::read(void) // If select returns ok we know we either got signalled or read some data... // either way we need to try to read. } +#endif /* WIN32 */ + int r = ::read (fnum, &b, 1); if (r == 0) @@ -516,6 +546,8 @@ java::net::PlainSocketImpl::read(jbyteArray buffer, jint offset, jint count) throw new java::lang::ArrayIndexOutOfBoundsException; jbyte *bytes = elements (buffer) + offset; +// FIXME: implement timeout support for Win32 +#ifndef WIN32 // Do timeouts via select. if (timeout > 0) { @@ -541,6 +573,8 @@ java::net::PlainSocketImpl::read(jbyteArray buffer, jint offset, jint count) throw iioe; } } +#endif + // Read the socket. int r = ::recv (fnum, (char *) bytes, count, 0); if (r == 0)