* configure.ac: Added check for sys/utsname.h header.
[cacao.git] / src / native / vm / cldc1.1 / com_sun_cldc_io_j2me_socket_Protocol.cpp
index 9373b6b92f9650ab7300af230bbde22ab5f4e27e..b03e49c2d4e7eca95492b8603b7d6200a1a6f33b 100644 (file)
 #include <netdb.h>
 #include <unistd.h>
 #include <sys/types.h>
-#include <sys/socket.h>
 
 #include "vm/types.h"
 
-#include "mm/memory.h"
+#include "mm/memory.hpp"
 
-#include "native/jni.h"
-#include "native/llni.h"
-#include "native/native.h"
+#include "native/jni.hpp"
+#include "native/native.hpp"
 
 #if defined(ENABLE_JNI_HEADERS)
 # include "native/include/com_sun_cldc_io_j2me_socket_Protocol.h"
 #endif
 
+#include "vm/array.hpp"
 #include "vm/global.h"
+#include "vm/os.hpp"
 #include "vm/vm.hpp" /* REMOVE ME: temporarily */
 
 
@@ -63,7 +63,8 @@ JNIEXPORT jint JNICALL Java_com_sun_cldc_io_j2me_socket_Protocol_open0(JNIEnv *e
 
        // The hostname byte-array is a NULL terminated C-string.
        // XXX Not GC safe.
-       char* name = (char*) &(LLNI_array_data((java_handle_bytearray_t*) hostname));
+       ByteArray ba(hostname);
+       char* name = (char*) ba.get_raw_data_ptr();
 
        /* get the host */
 
@@ -106,7 +107,8 @@ JNIEXPORT jint JNICALL Java_com_sun_cldc_io_j2me_socket_Protocol_readBuf(JNIEnv
 {
        // Get pointer to the buffer.
        // XXX Not GC safe.
-       void* buf = &(LLNI_array_direct((java_handle_bytearray_t*) b, off));
+       ByteArray ba(b);
+       void* buf = (void*) (((int8_t*) ba.get_raw_data_ptr()) + off);
 
        // Receive from the socket.
        ssize_t result = recv(handle, buf, len, 0);
@@ -116,7 +118,7 @@ JNIEXPORT jint JNICALL Java_com_sun_cldc_io_j2me_socket_Protocol_readBuf(JNIEnv
                return -1;
        }
        else if (result < 0) {
-               vm_abort_errno("Java_com_sun_cldc_io_j2me_socket_Protocol_readBuf: recv failed");
+               os::abort_errno("Java_com_sun_cldc_io_j2me_socket_Protocol_readBuf: recv failed");
        }
 
        return result;
@@ -141,7 +143,7 @@ JNIEXPORT jint JNICALL Java_com_sun_cldc_io_j2me_socket_Protocol_readByte(JNIEnv
        }
        else if (result < 0) {
                // TODO Should throw an IOException.
-               vm_abort_errno("Java_com_sun_cldc_io_j2me_socket_Protocol_readByte: recv failed");
+               os::abort_errno("Java_com_sun_cldc_io_j2me_socket_Protocol_readByte: recv failed");
        }
 
        return byte;
@@ -157,14 +159,15 @@ JNIEXPORT jint JNICALL Java_com_sun_cldc_io_j2me_socket_Protocol_writeBuf(JNIEnv
 {
        // Get pointer to the buffer.
        // XXX Not GC safe.
-       void* buf = &(LLNI_array_direct((java_handle_bytearray_t*) b, off));
+       ByteArray ba(b);
+       void* buf = (void*) (((int8_t*) ba.get_raw_data_ptr()) + off);
        
        // Send the given byte to the socket.
        ssize_t result = send(handle, buf, len, 0);
 
        if (result < 0) {
                // TODO Should throw an IOException.
-               vm_abort_errno("Java_com_sun_cldc_io_j2me_socket_Protocol_writeBuf: send failed");
+               os::abort_errno("Java_com_sun_cldc_io_j2me_socket_Protocol_writeBuf: send failed");
        }
 
        return result;
@@ -184,7 +187,7 @@ JNIEXPORT jint JNICALL Java_com_sun_cldc_io_j2me_socket_Protocol_writeByte(JNIEn
        ssize_t result = send(handle, &byte, 1, 0);
 
        if (result < 0)
-               vm_abort_errno("Java_com_sun_cldc_io_j2me_socket_Protocol_writeByte: send failed");
+               os::abort_errno("Java_com_sun_cldc_io_j2me_socket_Protocol_writeByte: send failed");
 
        return result;
 }
@@ -213,7 +216,7 @@ JNIEXPORT void JNICALL Java_com_sun_cldc_io_j2me_socket_Protocol_close0(JNIEnv *
        int result = close(handle);
 
        if (result < 0)
-               vm_abort_errno("Java_com_sun_cldc_io_j2me_socket_Protocol_close0: close failed");
+               os::abort_errno("Java_com_sun_cldc_io_j2me_socket_Protocol_close0: close failed");
 }
 
 } // extern "C"
@@ -238,16 +241,12 @@ static JNINativeMethod methods[] = {
  
 *******************************************************************************/
  
-// FIXME
-extern "C" {
 void _Jv_com_sun_cldc_io_j2me_socket_Protocol_init(void)
 {
-       utf *u;
-       u = utf_new_char("com/sun/cldc/io/j2me/socket/Protocol");
+       utf* u = utf_new_char("com/sun/cldc/io/j2me/socket/Protocol");
  
-       native_method_register(u, methods, NATIVE_METHODS_COUNT);
-}
+       NativeMethods& nm = VM::get_current()->get_nativemethods();
+       nm.register_methods(u, methods, NATIVE_METHODS_COUNT);
 }