#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 */
// 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 */
{
// 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);
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;
}
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;
{
// 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;
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;
}
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"
*******************************************************************************/
-// 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);
}