< prev index next >
src/java.base/unix/native/libnio/ch/InheritedChannel.c
Print this page
rev 55750 : UDS support, temporary commit
*** 55,89 ****
socklen_t len = sizeof(SOCKETADDRESS);
jobject remote_ia = NULL;
jint remote_port;
if (getpeername(fd, &sa.sa, &len) == 0) {
if (matchFamily(&sa)) {
! remote_ia = NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port);
}
}
return remote_ia;
}
JNIEXPORT jint JNICALL
- Java_sun_nio_ch_InheritedChannel_peerPort0(JNIEnv *env, jclass cla, jint fd)
- {
- SOCKETADDRESS sa;
- socklen_t len = sizeof(SOCKETADDRESS);
- jint remote_port = -1;
-
- if (getpeername(fd, &sa.sa, &len) == 0) {
- if (matchFamily(&sa)) {
- NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port);
- }
- }
-
- return remote_port;
- }
-
- JNIEXPORT jint JNICALL
Java_sun_nio_ch_InheritedChannel_soType0(JNIEnv *env, jclass cla, jint fd)
{
int sotype;
socklen_t arglen = sizeof(sotype);
if (getsockopt(fd, SOL_SOCKET, SO_TYPE, (void *)&sotype, &arglen) == 0) {
--- 55,83 ----
socklen_t len = sizeof(SOCKETADDRESS);
jobject remote_ia = NULL;
jint remote_port;
if (getpeername(fd, &sa.sa, &len) == 0) {
+ // TODO: rename remote_ia variable and matchFamily method
if (matchFamily(&sa)) {
! // TODO: move to some common function
! jobject inetAddress = NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port);
! jclass isa_class = (*env)->FindClass(env, "java/net/InetSocketAddress");
! jmethodID isa_ctor = (*env)->GetMethodID(env, isa_class, "<init>", "(Ljava/net/InetAddress;I)V");
! remote_ia = (*env)->NewObject(env, isa_class, isa_ctor, inetAddress, remote_port);
! } else if (sa.sa.sa_family == AF_UNIX) {
! // TODO: move to some common function
! jclass usa_class = (*env)->FindClass(env, "java/net/UnixSocketAddress");
! jmethodID usa_ctor = (*env)->GetMethodID(env, usa_class, "<init>", "()V");
! remote_ia = (*env)->NewObject(env, usa_class, usa_ctor);
}
}
return remote_ia;
}
JNIEXPORT jint JNICALL
Java_sun_nio_ch_InheritedChannel_soType0(JNIEnv *env, jclass cla, jint fd)
{
int sotype;
socklen_t arglen = sizeof(sotype);
if (getsockopt(fd, SOL_SOCKET, SO_TYPE, (void *)&sotype, &arglen) == 0) {
< prev index next >