summaryrefslogtreecommitdiff
path: root/native/jni/java-net
diff options
context:
space:
mode:
authorRoman Kennke <roman@kennke.org>2006-01-09 21:30:15 +0000
committerRoman Kennke <roman@kennke.org>2006-01-09 21:30:15 +0000
commit634dfa3aa4cffb1cc0c3d635634709efadff1043 (patch)
tree18c9c0d232b7e7b7021eb43651842c7197a09d85 /native/jni/java-net
parentaa587e38afc3e4dd8fe3ad8fe4c0d8fe8bea38c5 (diff)
downloadclasspath-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.c2
-rw-r--r--native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c2
-rw-r--r--native/jni/java-net/javanet.c72
-rw-r--r--native/jni/java-net/javanet.h2
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);