diff options
author | Roman Kennke <roman@kennke.org> | 2006-01-09 21:30:15 +0000 |
---|---|---|
committer | Roman Kennke <roman@kennke.org> | 2006-01-09 21:30:15 +0000 |
commit | 634dfa3aa4cffb1cc0c3d635634709efadff1043 (patch) | |
tree | 18c9c0d232b7e7b7021eb43651842c7197a09d85 /native/jni/java-net | |
parent | aa587e38afc3e4dd8fe3ad8fe4c0d8fe8bea38c5 (diff) | |
download | classpath-634dfa3aa4cffb1cc0c3d635634709efadff1043.tar.gz |
2006-01-09 Roman Kennke <kennke@aicas.com>
* native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c
(connect): Added stream parameter to _connect() call.
* native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c
(connect): Added stream parameter to _connect() call.
* native/jni/java-net/javanet.c
(_javanet_create_localfd): Added stream parameter. Look up
fd field based on the stream parameter either in SocketImpl or
in DatagramSocketImpl.
(_javanet_connect): Added stream parameter. Call create_localfd
using this stream parameter. Set localPort field either in
SocketImpl or in DatagramSocketImpl, depending on the stream
flag.
* native/jni/java-net/javanet.c
(_javanet_connect): Added stream parameter.
Diffstat (limited to 'native/jni/java-net')
-rw-r--r-- | native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c | 2 | ||||
-rw-r--r-- | native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c | 2 | ||||
-rw-r--r-- | native/jni/java-net/javanet.c | 72 | ||||
-rw-r--r-- | native/jni/java-net/javanet.h | 2 |
4 files changed, 46 insertions, 32 deletions
diff --git a/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c b/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c index e7cb55727..cd401a4c7 100644 --- a/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c +++ b/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c @@ -115,7 +115,7 @@ Java_gnu_java_net_VMPlainDatagramSocketImpl_connect(JNIEnv *env, assert(env!=NULL); assert((*env)!=NULL); - _javanet_connect(env, obj, addr, port); + _javanet_connect(env, obj, addr, port, 0); #else /* not WITHOUT_NETWORK */ #endif /* not WITHOUT_NETWORK */ } diff --git a/native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c b/native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c index 93284b3af..ffe773486 100644 --- a/native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c +++ b/native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c @@ -116,7 +116,7 @@ Java_gnu_java_net_VMPlainSocketImpl_connect(JNIEnv *env, assert(env!=NULL); assert((*env)!=NULL); - _javanet_connect(env, obj, addr, port); + _javanet_connect(env, obj, addr, port, 1); #else /* not WITHOUT_NETWORK */ #endif /* not WITHOUT_NETWORK */ } diff --git a/native/jni/java-net/javanet.c b/native/jni/java-net/javanet.c index 31afbc869..5ae549bb8 100644 --- a/native/jni/java-net/javanet.c +++ b/native/jni/java-net/javanet.c @@ -133,7 +133,7 @@ _javanet_get_int_field (JNIEnv * env, jobject obj, const char *field) * need to include it. */ static void -_javanet_create_localfd (JNIEnv * env, jobject this) +_javanet_create_localfd (JNIEnv * env, jobject this, jboolean stream) { jclass this_cls, fd_cls; jfieldID fid; @@ -146,7 +146,10 @@ _javanet_create_localfd (JNIEnv * env, jobject this) DBG ("_javanet_create_localfd(): Entered _javanet_create_localfd\n"); /* Look up the fd field */ - this_cls = (*env)->FindClass (env, "java/net/SocketImpl"); + if (stream) + this_cls = (*env)->FindClass(env, "java/net/SocketImpl"); + else + this_cls = (*env)->FindClass(env, "java/net/DatagramSocketImpl"); if (this_cls == NULL) return; @@ -552,7 +555,8 @@ _javanet_close (JNIEnv * env, jobject this, int stream) * Connects to the specified destination. */ void -_javanet_connect (JNIEnv * env, jobject this, jobject addr, jint port) +_javanet_connect (JNIEnv * env, jobject this, jobject addr, jint port, + jboolean stream) { #ifndef WITHOUT_NETWORK int netaddr, fd; @@ -613,7 +617,7 @@ _javanet_connect (JNIEnv * env, jobject this, jobject addr, jint port) return; } - _javanet_create_localfd (env, this); + _javanet_create_localfd (env, this, stream); if ((*env)->ExceptionOccurred (env)) { /* We don't care whether this succeeds. close() will cleanup later. */ @@ -622,8 +626,13 @@ _javanet_connect (JNIEnv * env, jobject this, jobject addr, jint port) } DBG ("_javanet_connect(): Created fd\n"); - _javanet_set_int_field (env, this, "java/net/SocketImpl", "localport", - local_port); + if (stream) + _javanet_set_int_field (env, this, "java/net/SocketImpl", "localport", + local_port); + else + _javanet_set_int_field (env, this, "java/net/DatagramSocketImpl", + "localPort", local_port); + if ((*env)->ExceptionOccurred (env)) { /* We don't care whether this succeeds. close() will cleanup later. */ @@ -643,31 +652,36 @@ _javanet_connect (JNIEnv * env, jobject this, jobject addr, jint port) return; } - if (remote_address == netaddr) - { - _javanet_set_remhost_addr (env, this, addr); - } - else - { - _javanet_set_remhost (env, this, remote_address); - } - if ((*env)->ExceptionOccurred (env)) + if (stream) { - /* We don't care whether this succeeds. close() will cleanup later. */ - TARGET_NATIVE_NETWORK_SOCKET_CLOSE (fd, result); - return; - } - DBG ("_javanet_connect(): Set the remote host\n"); + if (remote_address == netaddr) + { + _javanet_set_remhost_addr (env, this, addr); + } + else + { + _javanet_set_remhost (env, this, remote_address); + } + if ((*env)->ExceptionOccurred (env)) + { + /* We don't care whether this succeeds. close() will cleanup later. + */ + TARGET_NATIVE_NETWORK_SOCKET_CLOSE (fd, result); + return; + } + DBG ("_javanet_connect(): Set the remote host\n"); - _javanet_set_int_field (env, this, "java/net/SocketImpl", "port", - remote_port); - if ((*env)->ExceptionOccurred (env)) - { - /* We don't care whether this succeeds. close() will cleanup later. */ - TARGET_NATIVE_NETWORK_SOCKET_CLOSE (fd, result); - return; + _javanet_set_int_field (env, this, "java/net/SocketImpl", "port", + remote_port); + if ((*env)->ExceptionOccurred (env)) + { + /* We don't care whether this succeeds. close() will cleanup later. + */ + TARGET_NATIVE_NETWORK_SOCKET_CLOSE (fd, result); + return; + } + DBG ("_javanet_connect(): Set the remote port\n"); } - DBG ("_javanet_connect(): Set the remote port\n"); #else /* not WITHOUT_NETWORK */ #endif /* not WITHOUT_NETWORK */ } @@ -897,7 +911,7 @@ _javanet_accept (JNIEnv * env, jobject this, jobject impl) return; } - _javanet_create_localfd (env, impl); + _javanet_create_localfd (env, impl, 1); if ((*env)->ExceptionOccurred (env)) { /* We don't care whether this succeeds. close() will cleanup later. */ diff --git a/native/jni/java-net/javanet.h b/native/jni/java-net/javanet.h index 7c77ea77f..c173b1059 100644 --- a/native/jni/java-net/javanet.h +++ b/native/jni/java-net/javanet.h @@ -92,7 +92,7 @@ extern int _javanet_get_int_field(JNIEnv *, jobject, const char *); extern int _javanet_get_netaddr(JNIEnv *, jobject); extern void _javanet_create(JNIEnv *, jobject, jboolean); extern void _javanet_close(JNIEnv *, jobject, int); -extern void _javanet_connect(JNIEnv *, jobject, jobject, jint); +extern void _javanet_connect(JNIEnv *, jobject, jobject, jint, jboolean); extern void _javanet_bind(JNIEnv *, jobject, jobject, jint, int); extern void _javanet_listen(JNIEnv *, jobject, jint); extern void _javanet_accept(JNIEnv *, jobject, jobject); |