summaryrefslogtreecommitdiff
path: root/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c
diff options
context:
space:
mode:
Diffstat (limited to 'native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c')
-rw-r--r--native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c406
1 files changed, 0 insertions, 406 deletions
diff --git a/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c b/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c
deleted file mode 100644
index 3a451c763..000000000
--- a/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c
+++ /dev/null
@@ -1,406 +0,0 @@
-/* VMPlainDatagramSocketImpl.c - Native methods for PlainDatagramSocketImpl
- Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-/* do not move; needed here because of some macro definitions */
-#include <config.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <jni.h>
-#include <jcl.h>
-
-#include "cpnative.h"
-#include "cpnet.h"
-
-#include "javanet.h"
-
-#include "gnu_java_net_VMPlainDatagramSocketImpl.h"
-
-/*
- * Note that most of the functions in this module simply redirect to another
- * internal function. Why? Because many of these functions are shared
- * with PlainSocketImpl.
- */
-
-/*************************************************************************/
-
-/*
- * Creates a new datagram socket
- */
-JNIEXPORT void JNICALL
-Java_gnu_java_net_VMPlainDatagramSocketImpl_create(JNIEnv *env,
- jclass klass __attribute__ ((__unused__))
- , jobject obj)
-{
-
-#ifndef WITHOUT_NETWORK
- _javanet_create(env, obj, 0);
-#else /* not WITHOUT_NETWORK */
-#endif /* not WITHOUT_NETWORK */
-}
-
-/*************************************************************************/
-
-/*
- * Close the socket.
- */
-JNIEXPORT void JNICALL
-Java_gnu_java_net_VMPlainDatagramSocketImpl_close(JNIEnv *env,
- jclass klass __attribute__ ((__unused__)),
- jobject obj)
-{
-
-#ifndef WITHOUT_NETWORK
- _javanet_close(env, obj, 0);
-#else /* not WITHOUT_NETWORK */
-#endif /* not WITHOUT_NETWORK */
-}
-
-/*************************************************************************/
-
-/*
- * Connects to the specified destination.
- */
-JNIEXPORT void JNICALL
-Java_gnu_java_net_VMPlainDatagramSocketImpl_connect(JNIEnv *env,
- jclass klass __attribute__ ((__unused__)),
- jobject obj,
- jobject addr, jint port)
-{
-#ifndef WITHOUT_NETWORK
-
- _javanet_connect(env, obj, addr, port, 0);
-#else /* not WITHOUT_NETWORK */
-#endif /* not WITHOUT_NETWORK */
-}
-
-/*************************************************************************/
-
-/*
- * This method binds the specified address to the specified local port.
- * Note that we have to set the local address and local port public instance
- * variables.
- */
-JNIEXPORT void JNICALL
-Java_gnu_java_net_VMPlainDatagramSocketImpl_bind(JNIEnv *env,
- jclass klass __attribute__ ((__unused__)),
- jobject obj,
- jint port, jobject addr)
-{
-
-#ifndef WITHOUT_NETWORK
- _javanet_bind(env, obj, addr, port, 0);
-#else /* not WITHOUT_NETWORK */
-#endif /* not WITHOUT_NETWORK */
-}
-
-/*************************************************************************/
-
-/*
- * This method sets the specified option for a socket
- */
-JNIEXPORT void JNICALL
-Java_gnu_java_net_VMPlainDatagramSocketImpl_setOption(JNIEnv *env,
- jclass klass __attribute__ ((__unused__)),
- jobject obj,
- jint option_id,
- jobject val)
-{
-
-#ifndef WITHOUT_NETWORK
- _javanet_set_option(env, obj, option_id, val);
-#else /* not WITHOUT_NETWORK */
-#endif /* not WITHOUT_NETWORK */
-}
-
-/*************************************************************************/
-
-/*
- * This method sets the specified option for a socket
- */
-JNIEXPORT jobject JNICALL
-Java_gnu_java_net_VMPlainDatagramSocketImpl_getOption(JNIEnv *env,
- jclass klass __attribute__ ((__unused__)),
- jobject obj,
- jint option_id)
-{
-
-#ifndef WITHOUT_NETWORK
- return(_javanet_get_option(env, obj, option_id));
-#else /* not WITHOUT_NETWORK */
- return NULL;
-#endif /* not WITHOUT_NETWORK */
-}
-
-/*************************************************************************/
-
-/*
- * Reads a buffer from a remote host
- */
-JNIEXPORT void JNICALL
-Java_gnu_java_net_VMPlainDatagramSocketImpl_nativeReceive(JNIEnv *env,
- jclass klass __attribute__ ((__unused__)),
- jobject obj,
- jbyteArray arr,
- jint offset,
- jint length,
- jbyteArray receivedFromAddress,
- jintArray receivedFromPort,
- jintArray receivedLength)
-{
-#ifndef WITHOUT_NETWORK
- jint *port, *bytes_read;
- cpnet_address *addr;
- jbyte *addressBytes;
-
- addr = 0;
-
- port = (jint*)(*env)->GetIntArrayElements(env, receivedFromPort, NULL);
- if (port == NULL)
- {
- JCL_ThrowException(env, IO_EXCEPTION, "Internal error: could not access receivedFromPort array");
- return;
- }
-
- bytes_read = (jint*)(*env)->GetIntArrayElements(env, receivedLength, NULL);
- if (bytes_read == NULL)
- {
- (*env)->ReleaseIntArrayElements(env, receivedFromPort, (jint*)port, 0);
- JCL_ThrowException(env, IO_EXCEPTION, "Internal error: could not access receivedLength array");
- return;
- }
-
- /* Receive the packet */
- /* should we try some sort of validation on the length? */
- (*bytes_read) = _javanet_recvfrom(env, obj, arr, offset, length, &addr);
-
- /* Special case the strange situation where the receiver didn't want any
- bytes. */
- if (length == 0 && (*bytes_read) == -1)
- *bytes_read = 0;
-
- if ((*bytes_read) == -1)
- {
- (*env)->ReleaseIntArrayElements(env, receivedFromPort, (jint*)port, 0);
- (*env)->ReleaseIntArrayElements(env, receivedLength, (jint*)bytes_read, 0);
- JCL_ThrowException(env, IO_EXCEPTION, "Internal error: receive");
- return;
- }
-
- if ((*env)->ExceptionOccurred(env))
- return;
-
- *port = cpnet_addressGetPort (addr);
-
- /* Store the address */
- addressBytes = (jbyte*)(*env)->GetPrimitiveArrayCritical(env, receivedFromAddress, NULL);
- cpnet_IPV4AddressToBytes (addr, addressBytes);
- (*env)->ReleasePrimitiveArrayCritical(env, receivedFromAddress, addressBytes, 0);
-
- cpnet_freeAddress (env, addr);
-
- (*env)->ReleaseIntArrayElements(env, receivedFromPort, (jint*)port, 0);
- (*env)->ReleaseIntArrayElements(env, receivedLength, (jint*)bytes_read, 0);
-
- DBG("PlainDatagramSocketImpl.receive(): Received packet\n");
-
-#else /* not WITHOUT_NETWORK */
-#endif /* not WITHOUT_NETWORK */
-}
-
-/*************************************************************************/
-
-/*
- * Writes a buffer to the remote host
- */
-JNIEXPORT void JNICALL
-Java_gnu_java_net_VMPlainDatagramSocketImpl_nativeSendTo(JNIEnv *env,
- jclass klass __attribute__ ((__unused__)),
- jobject obj,
- jobject addr,
- jint port,
- jarray buf,
- jint offset,
- jint len)
-{
-#ifndef WITHOUT_NETWORK
- cpnet_address *netAddress;
-
- /* check if address given, tr 7.3.2005 */
- if (addr != NULL )
- {
- netAddress = _javanet_get_ip_netaddr(env, addr);
- if ((*env)->ExceptionOccurred(env))
- {
- return;
- }
- if (port == 0)
- {
- JCL_ThrowException(env, IO_EXCEPTION,
- "Invalid port number");
- cpnet_freeAddress(env, netAddress);
- return;
- }
- cpnet_addressSetPort (netAddress, port);
- }
- else
- {
- netAddress = NULL;
- }
-
- DBG("PlainDatagramSocketImpl.sendto(): have addr\n");
-
- _javanet_sendto(env, obj, buf, offset, len, netAddress);
- if (netAddress != NULL)
- cpnet_freeAddress(env, netAddress);
- if ((*env)->ExceptionOccurred(env))
- {
- return;
- }
-
- DBG("PlainDatagramSocketImpl.sendto(): finished\n");
-#else /* not WITHOUT_NETWORK */
-#endif /* not WITHOUT_NETWORK */
-}
-
-/*************************************************************************/
-
-/*
- * Joins a multicast group
- */
-JNIEXPORT void JNICALL
-Java_gnu_java_net_VMPlainDatagramSocketImpl_join(JNIEnv *env,
- jclass klass __attribute__ ((__unused__)),
- jobject obj,
- jobject addr)
-{
-#ifndef WITHOUT_NETWORK
- cpnet_address *netAddress;
- int fd;
- int result;
-
- /* check if address given, tr 7.3.2005 */
- if (addr != NULL)
- {
- netAddress = _javanet_get_ip_netaddr(env, addr);
- if ((*env)->ExceptionOccurred(env))
- {
- JCL_ThrowException(env, IO_EXCEPTION, "Internal error");
- return;
- }
- }
- else
- {
- netAddress = NULL;
- }
-
- fd = _javanet_get_int_field(env, obj, "native_fd");
- if ((*env)->ExceptionOccurred(env))
- {
- JCL_ThrowException(env, IO_EXCEPTION, "Internal error");
- return;
- }
-
- DBG("PlainDatagramSocketImpl.join(): have native fd\n");
-
- result = cpnet_addMembership (env, fd, netAddress);
- if (result != CPNATIVE_OK)
- {
- JCL_ThrowException(env, IO_EXCEPTION,
- cpnative_getErrorString (result));
- return;
- }
-
- DBG("PlainDatagramSocketImpl.join(): finished\n");
-#else /* not WITHOUT_NETWORK */
-#endif /* not WITHOUT_NETWORK */
-}
-
-/*************************************************************************/
-
-/*
- * Leaves a multicast group
- */
-JNIEXPORT void JNICALL
-Java_gnu_java_net_VMPlainDatagramSocketImpl_leave(JNIEnv *env,
- jclass klass __attribute__ ((__unused__)),
- jobject obj,
- jobject addr)
-{
-#ifndef WITHOUT_NETWORK
- cpnet_address *netAddress;
- int fd;
- int result;
-
- /* check if address given, tr 7.3.2005 */
- if (addr != NULL)
- {
- netAddress = _javanet_get_ip_netaddr(env, addr);
- if ((*env)->ExceptionOccurred(env))
- {
- JCL_ThrowException(env, IO_EXCEPTION, "Internal error");
- return;
- }
- }
- else
- {
- netAddress = 0;
- }
-
- fd = _javanet_get_int_field(env, obj, "native_fd");
- if ((*env)->ExceptionOccurred(env))
- {
- JCL_ThrowException(env, IO_EXCEPTION, "Internal error");
- return;
- }
-
- DBG("PlainDatagramSocketImpl.leave(): have native fd\n");
-
- result = cpnet_dropMembership (env, fd, netAddress);
- if (result != CPNATIVE_OK)
- {
- JCL_ThrowException(env, IO_EXCEPTION, cpnative_getErrorString (result));
- return;
- }
-
- DBG("PlainDatagramSocketImpl.leave(): finished\n");
-#else /* not WITHOUT_NETWORK */
-#endif /* not WITHOUT_NETWORK */
-}
-