67 |
* Creates a new datagram socket |
* Creates a new datagram socket |
68 |
*/ |
*/ |
69 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
70 |
Java_gnu_java_net_PlainDatagramSocketImpl_create(JNIEnv *env, jobject this) |
Java_gnu_java_net_PlainDatagramSocketImpl_create(JNIEnv *env, jobject obj) |
71 |
{ |
{ |
72 |
assert(env!=NULL); |
assert(env!=NULL); |
73 |
assert((*env)!=NULL); |
assert((*env)!=NULL); |
74 |
|
|
75 |
#ifndef WITHOUT_NETWORK |
#ifndef WITHOUT_NETWORK |
76 |
_javanet_create(env, this, 0); |
_javanet_create(env, obj, 0); |
77 |
#else /* not WITHOUT_NETWORK */ |
#else /* not WITHOUT_NETWORK */ |
78 |
#endif /* not WITHOUT_NETWORK */ |
#endif /* not WITHOUT_NETWORK */ |
79 |
} |
} |
84 |
* Close the socket. |
* Close the socket. |
85 |
*/ |
*/ |
86 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
87 |
Java_gnu_java_net_PlainDatagramSocketImpl_close(JNIEnv *env, jobject this) |
Java_gnu_java_net_PlainDatagramSocketImpl_close(JNIEnv *env, jobject obj) |
88 |
{ |
{ |
89 |
assert(env!=NULL); |
assert(env!=NULL); |
90 |
assert((*env)!=NULL); |
assert((*env)!=NULL); |
91 |
|
|
92 |
#ifndef WITHOUT_NETWORK |
#ifndef WITHOUT_NETWORK |
93 |
_javanet_close(env, this, 0); |
_javanet_close(env, obj, 0); |
94 |
#else /* not WITHOUT_NETWORK */ |
#else /* not WITHOUT_NETWORK */ |
95 |
#endif /* not WITHOUT_NETWORK */ |
#endif /* not WITHOUT_NETWORK */ |
96 |
} |
} |
103 |
* variables. |
* variables. |
104 |
*/ |
*/ |
105 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
106 |
Java_gnu_java_net_PlainDatagramSocketImpl_bind(JNIEnv *env, jobject this, |
Java_gnu_java_net_PlainDatagramSocketImpl_bind(JNIEnv *env, jobject obj, |
107 |
jint port, jobject addr) |
jint port, jobject addr) |
108 |
{ |
{ |
109 |
assert(env!=NULL); |
assert(env!=NULL); |
110 |
assert((*env)!=NULL); |
assert((*env)!=NULL); |
111 |
|
|
112 |
#ifndef WITHOUT_NETWORK |
#ifndef WITHOUT_NETWORK |
113 |
_javanet_bind(env, this, addr, port, 0); |
_javanet_bind(env, obj, addr, port, 0); |
114 |
#else /* not WITHOUT_NETWORK */ |
#else /* not WITHOUT_NETWORK */ |
115 |
#endif /* not WITHOUT_NETWORK */ |
#endif /* not WITHOUT_NETWORK */ |
116 |
} |
} |
121 |
* This method sets the specified option for a socket |
* This method sets the specified option for a socket |
122 |
*/ |
*/ |
123 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
124 |
Java_gnu_java_net_PlainDatagramSocketImpl_setOption(JNIEnv *env, jobject this, |
Java_gnu_java_net_PlainDatagramSocketImpl_setOption(JNIEnv *env, jobject obj, |
125 |
jint option_id, jobject val) |
jint option_id, jobject val) |
126 |
{ |
{ |
127 |
assert(env!=NULL); |
assert(env!=NULL); |
128 |
assert((*env)!=NULL); |
assert((*env)!=NULL); |
129 |
|
|
130 |
#ifndef WITHOUT_NETWORK |
#ifndef WITHOUT_NETWORK |
131 |
_javanet_set_option(env, this, option_id, val); |
_javanet_set_option(env, obj, option_id, val); |
132 |
#else /* not WITHOUT_NETWORK */ |
#else /* not WITHOUT_NETWORK */ |
133 |
#endif /* not WITHOUT_NETWORK */ |
#endif /* not WITHOUT_NETWORK */ |
134 |
} |
} |
139 |
* This method sets the specified option for a socket |
* This method sets the specified option for a socket |
140 |
*/ |
*/ |
141 |
JNIEXPORT jobject JNICALL |
JNIEXPORT jobject JNICALL |
142 |
Java_gnu_java_net_PlainDatagramSocketImpl_getOption(JNIEnv *env, jobject this, |
Java_gnu_java_net_PlainDatagramSocketImpl_getOption(JNIEnv *env, jobject obj, |
143 |
jint option_id) |
jint option_id) |
144 |
{ |
{ |
145 |
assert(env!=NULL); |
assert(env!=NULL); |
146 |
assert((*env)!=NULL); |
assert((*env)!=NULL); |
147 |
|
|
148 |
#ifndef WITHOUT_NETWORK |
#ifndef WITHOUT_NETWORK |
149 |
return(_javanet_get_option(env, this, option_id)); |
return(_javanet_get_option(env, obj, option_id)); |
150 |
#else /* not WITHOUT_NETWORK */ |
#else /* not WITHOUT_NETWORK */ |
151 |
return NULL; |
return NULL; |
152 |
#endif /* not WITHOUT_NETWORK */ |
#endif /* not WITHOUT_NETWORK */ |
158 |
* Reads a buffer from a remote host |
* Reads a buffer from a remote host |
159 |
*/ |
*/ |
160 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
161 |
Java_gnu_java_net_PlainDatagramSocketImpl_receive0(JNIEnv *env, jobject this, |
Java_gnu_java_net_PlainDatagramSocketImpl_receive0(JNIEnv *env, jobject obj, |
162 |
jobject packet) |
jobject packet) |
163 |
{ |
{ |
164 |
#ifndef WITHOUT_NETWORK |
#ifndef WITHOUT_NETWORK |
165 |
int addr, port, bytes_read; |
int addr, port, bytes_read; |
166 |
unsigned int maxlen, offset; |
unsigned int maxlen, offset; |
167 |
jclass cls, addr_cls; |
jclass cls, addr_cls; |
168 |
jfieldID fid; |
jfieldID fid; |
169 |
jmethodID mid; |
jmethodID mid; |
243 |
|
|
244 |
/* Receive the packet */ |
/* Receive the packet */ |
245 |
/* should we try some sort of validation on the length? */ |
/* should we try some sort of validation on the length? */ |
246 |
bytes_read = _javanet_recvfrom(env, this, arr, offset, maxlen, &addr, &port); |
bytes_read = _javanet_recvfrom(env, obj, arr, offset, maxlen, &addr, &port); |
247 |
if ((bytes_read == -1) || (*env)->ExceptionOccurred(env)) |
if ((bytes_read == -1) || (*env)->ExceptionOccurred(env)) |
248 |
{ |
{ |
249 |
JCL_ThrowException(env, IO_EXCEPTION, "Internal error: receive"); |
JCL_ThrowException(env, IO_EXCEPTION, "Internal error: receive"); |
356 |
* Writes a buffer to the remote host |
* Writes a buffer to the remote host |
357 |
*/ |
*/ |
358 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
359 |
Java_gnu_java_net_PlainDatagramSocketImpl_sendto(JNIEnv *env, jobject this, |
Java_gnu_java_net_PlainDatagramSocketImpl_sendto(JNIEnv *env, jobject obj, |
360 |
jobject addr, jint port, jarray buf, |
jobject addr, jint port, jarray buf, |
361 |
jint offset, jint len) |
jint offset, jint len) |
362 |
{ |
{ |
372 |
|
|
373 |
DBG("PlainDatagramSocketImpl.sendto(): have addr\n"); |
DBG("PlainDatagramSocketImpl.sendto(): have addr\n"); |
374 |
|
|
375 |
_javanet_sendto(env, this, buf, offset, len, netAddress, port); |
_javanet_sendto(env, obj, buf, offset, len, netAddress, port); |
376 |
if ((*env)->ExceptionOccurred(env)) |
if ((*env)->ExceptionOccurred(env)) |
377 |
{ JCL_ThrowException(env, IO_EXCEPTION, "Internal error: send data"); return; } |
{ JCL_ThrowException(env, IO_EXCEPTION, "Internal error: send data"); return; } |
378 |
|
|
387 |
* Joins a multicast group |
* Joins a multicast group |
388 |
*/ |
*/ |
389 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
390 |
Java_gnu_java_net_PlainDatagramSocketImpl_join(JNIEnv *env, jobject this, |
Java_gnu_java_net_PlainDatagramSocketImpl_join(JNIEnv *env, jobject obj, |
391 |
jobject addr) |
jobject addr) |
392 |
{ |
{ |
393 |
#ifndef WITHOUT_NETWORK |
#ifndef WITHOUT_NETWORK |
405 |
return; |
return; |
406 |
} |
} |
407 |
|
|
408 |
fd = _javanet_get_int_field(env, this, "native_fd"); |
fd = _javanet_get_int_field(env, obj, "native_fd"); |
409 |
if ((*env)->ExceptionOccurred(env)) |
if ((*env)->ExceptionOccurred(env)) |
410 |
{ |
{ |
411 |
JCL_ThrowException(env, IO_EXCEPTION, "Internal error"); |
JCL_ThrowException(env, IO_EXCEPTION, "Internal error"); |
433 |
* Leaves a multicast group |
* Leaves a multicast group |
434 |
*/ |
*/ |
435 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
436 |
Java_gnu_java_net_PlainDatagramSocketImpl_leave(JNIEnv *env, jobject this, |
Java_gnu_java_net_PlainDatagramSocketImpl_leave(JNIEnv *env, jobject obj, |
437 |
jobject addr) |
jobject addr) |
438 |
{ |
{ |
439 |
#ifndef WITHOUT_NETWORK |
#ifndef WITHOUT_NETWORK |
451 |
return; |
return; |
452 |
} |
} |
453 |
|
|
454 |
fd = _javanet_get_int_field(env, this, "native_fd"); |
fd = _javanet_get_int_field(env, obj, "native_fd"); |
455 |
if ((*env)->ExceptionOccurred(env)) |
if ((*env)->ExceptionOccurred(env)) |
456 |
{ JCL_ThrowException(env, IO_EXCEPTION, "Internal error"); return; } |
{ JCL_ThrowException(env, IO_EXCEPTION, "Internal error"); return; } |
457 |
|
|
468 |
#else /* not WITHOUT_NETWORK */ |
#else /* not WITHOUT_NETWORK */ |
469 |
#endif /* not WITHOUT_NETWORK */ |
#endif /* not WITHOUT_NETWORK */ |
470 |
} |
} |
471 |
|
|