Commit 4e002027 by Adam Megacz Committed by Adam Megacz

natPlainSocketImpl.cc: Changed USE_WINSOCK to WIN32, and added thunks for…

natPlainSocketImpl.cc: Changed USE_WINSOCK to WIN32, and added thunks for read(), write(), and close().

2002-03-07  Adam Megacz  <adam@xwt.org>

        * 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.

From-SVN: r50418
parent 8eeda6e0
2002-03-07 Adam Megacz <adam@xwt.org> 2002-03-07 Adam Megacz <adam@xwt.org>
* 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 <adam@xwt.org>
* win32.cc (_Jv_platform_gettimeofday): Now takes no args, * win32.cc (_Jv_platform_gettimeofday): Now takes no args,
returns jlong. Added implementation returns jlong. Added implementation
* posix.cc (_Jv_platform_gettimeofday): Now takes no args, * posix.cc (_Jv_platform_gettimeofday): Now takes no args,
......
...@@ -10,22 +10,45 @@ details. */ ...@@ -10,22 +10,45 @@ details. */
#ifndef DISABLE_JAVA_NET #ifndef DISABLE_JAVA_NET
#ifdef USE_WINSOCK #ifdef WIN32
#include <windows.h> #include <windows.h>
#include <winsock.h> #include <winsock.h>
#include <errno.h> #include <errno.h>
#include <string.h> #include <string.h>
#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 #ifndef ENOPROTOOPT
#define ENOPROTOOPT 109 #define ENOPROTOOPT 109
#endif #endif
#else /* USE_WINSOCK */ #else /* WIN32 */
#include "posix.h" #include "posix.h"
#include <sys/socket.h> #include <sys/socket.h>
#include <netinet/in.h> #include <netinet/in.h>
#include <netinet/tcp.h> #include <netinet/tcp.h>
#include <errno.h> #include <errno.h>
#include <string.h> #include <string.h>
#endif /* USE_WINSOCK */ #endif /* WIN32 */
#endif /* DISABLE_JAVA_NET */ #endif /* DISABLE_JAVA_NET */
#if HAVE_BSTRING_H #if HAVE_BSTRING_H
...@@ -325,6 +348,8 @@ java::net::PlainSocketImpl::accept (java::net::PlainSocketImpl *s) ...@@ -325,6 +348,8 @@ java::net::PlainSocketImpl::accept (java::net::PlainSocketImpl *s)
socklen_t addrlen = sizeof(u); socklen_t addrlen = sizeof(u);
int new_socket = 0; int new_socket = 0;
// FIXME: implement timeout support for Win32
#ifndef WIN32
// Do timeouts via select since SO_RCVTIMEO is not always available. // Do timeouts via select since SO_RCVTIMEO is not always available.
if (timeout > 0) if (timeout > 0)
{ {
...@@ -341,6 +366,7 @@ java::net::PlainSocketImpl::accept (java::net::PlainSocketImpl *s) ...@@ -341,6 +366,7 @@ java::net::PlainSocketImpl::accept (java::net::PlainSocketImpl *s)
throw new java::io::InterruptedIOException ( throw new java::io::InterruptedIOException (
JvNewStringUTF("Accept timed out")); JvNewStringUTF("Accept timed out"));
} }
#endif /* WIN32 */
new_socket = _Jv_accept (fnum, (sockaddr*) &u, &addrlen); new_socket = _Jv_accept (fnum, (sockaddr*) &u, &addrlen);
if (new_socket < 0) if (new_socket < 0)
...@@ -461,6 +487,8 @@ java::net::PlainSocketImpl::read(void) ...@@ -461,6 +487,8 @@ java::net::PlainSocketImpl::read(void)
{ {
jbyte b; jbyte b;
// FIXME: implement timeout support for Win32
#ifndef WIN32
// Do timeouts via select. // Do timeouts via select.
if (timeout > 0) if (timeout > 0)
{ {
...@@ -482,6 +510,8 @@ java::net::PlainSocketImpl::read(void) ...@@ -482,6 +510,8 @@ java::net::PlainSocketImpl::read(void)
// If select returns ok we know we either got signalled or read some data... // If select returns ok we know we either got signalled or read some data...
// either way we need to try to read. // either way we need to try to read.
} }
#endif /* WIN32 */
int r = ::read (fnum, &b, 1); int r = ::read (fnum, &b, 1);
if (r == 0) if (r == 0)
...@@ -516,6 +546,8 @@ java::net::PlainSocketImpl::read(jbyteArray buffer, jint offset, jint count) ...@@ -516,6 +546,8 @@ java::net::PlainSocketImpl::read(jbyteArray buffer, jint offset, jint count)
throw new java::lang::ArrayIndexOutOfBoundsException; throw new java::lang::ArrayIndexOutOfBoundsException;
jbyte *bytes = elements (buffer) + offset; jbyte *bytes = elements (buffer) + offset;
// FIXME: implement timeout support for Win32
#ifndef WIN32
// Do timeouts via select. // Do timeouts via select.
if (timeout > 0) if (timeout > 0)
{ {
...@@ -541,6 +573,8 @@ java::net::PlainSocketImpl::read(jbyteArray buffer, jint offset, jint count) ...@@ -541,6 +573,8 @@ java::net::PlainSocketImpl::read(jbyteArray buffer, jint offset, jint count)
throw iioe; throw iioe;
} }
} }
#endif
// Read the socket. // Read the socket.
int r = ::recv (fnum, (char *) bytes, count, 0); int r = ::recv (fnum, (char *) bytes, count, 0);
if (r == 0) if (r == 0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment