emunetmon.c
来自「This is a resource based on j2me embedde」· C语言 代码 · 共 2,245 行 · 第 1/4 页
C
2,245 行
/* * * * Copyright 1990-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program 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 version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. *//* * This file implements the native method of the classes that are related * to the network monitor utility. * The classes are: * com.sun.kvem.netmon.NetMonProxy; * com.sun.kvem.netmon.HttpAgent * com.sun.kvem.netmon.HttpsAgent * com.sun.kvem.io.socket.Protocol * com.sun.kvem.io.datagram.Protocol * com.sun.kvem.io.comm.Protocol * com.sun.kvem.io.ssl.Protocol * com.sun.kvem.io.j2me.sms.DatagramImpl * * See the classes javadoc for more info. */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <kni.h>#include <lime.h>#include <stdlib.h>#include <stdio.h>#include <midpMalloc.h>#define BOOL_DEFINED#if 0#define DEBUG_PRINT(s) puts(s); fflush(stdout)#else#define DEBUG_PRINT(s)#endif#define FIELDOFFSET(cl, n, t) \(lookupField((cl), getNameAndTypeKey((n), (t)))->u.offset)#define NETMON_HTTP_PACKAGE "com.sun.kvem.netmon.http"#define HTTP_RECEIVER "HttpMsgReceiver"#define HTTPS_RECEIVER "HttpsMsgReceiver"#define NETMON_SOCKET_PACKAGE "com.sun.kvem.netmon.socket"#define SOCKET_RECEIVER "SocketMsgReceiver"#define NETMON_SSL_PACKAGE "com.sun.kvem.netmon.ssl"#define SSL_RECEIVER "SSLMsgReceiver"#define NETMON_DATAGRAM_PACKAGE "com.sun.kvem.netmon.datagram"#define DATAGRAM_RECEIVER "DatagramMsgReceiver"#define NETMON_COMM_PACKAGE "com.sun.kvem.netmon.comm"#define COMM_RECEIVER "CommMsgReceiver"#define NETMON_SMS_PACKAGE "com.sun.kvem.netmon.sms"#define SMS_RECEIVER "SMSMsgReceiver"#define NETMON_MMS_PACKAGE "com.sun.kvem.netmon.mms"#define MMS_RECEIVER "MMSMsgReceiver"#define NETMON_OBEX_PACKAGE "com.sun.kvem.netmon.obex"#define OBEX_RECEIVER "ObexMsgReceiver"#define NETMON_BLUETOOTH_PACKAGE "com.sun.kvem.netmon.bluetooth"#define BLUETOOTH_RECEIVER "BluetoothMsgReceiver"#define NETMON_APDU_PACKAGE "com.sun.kvem.netmon.apdu"#define APDU_RECEIVER "APDUMsgReceiver"#define NETMON_JCRMI_PACKAGE "com.sun.kvem.netmon.jcrmi"#define JCRMI_RECEIVER "JCRMIMsgReceiver"#define NETMON_SIP_PACKAGE "com.sun.kvem.netmon.sip"#define SIP_RECEIVER "SipMsgReceiver"#define LIME_PACKAGE "com.sun.kvem.midp"#define LIME_GRAPHICS_CLASS "GraphicsBridge"#define LIME_MEDIA_CLASS "MediaBridge"#define LIME_NETWORK_CLASS "NetworkBridge"#define LIME_HTTP_CLASS "NetworkBridge"#define LIME_HTTPS_CLASS "SSLNetworkBridge"#define LIME_EVENT_CLASS "EventBridge"#define LIME_COMMAND_CLASS "CommandManager"#define LIME_DEBUG_CLASS "DebugBridge"#define LIME_TEXT_CLASS "TextManager"#define LIME_WIDGET_CLASS "WidgetManager"#define LIME_API_CLASS "APIManager"#define LIME_DEVICE_CLASS "DeviceBridge"#define LIME_POPUP_CLASS "PopupChoiceGroupManager"#define LIME_RESOURCE_CLASS "ResourceBridge"/* * boolean isNetworkMonitorActive(); */KNIEXPORT KNI_RETURNTYPE_BOOLEANJava_javax_microedition_io_Connector_isNetworkMonitorActive() { KNI_ReturnBoolean(isNetworkMonitorActive());}KNIEXPORT KNI_RETURNTYPE_BOOLEANJava_com_sun_kvem_netmon_NetMonProxy_isNetworkMonitorActive0() { KNI_ReturnBoolean(isNetworkMonitorActive());}/* HTTP Agent Methods ----------------------------------------------------*//* * int newStream(String url, int direction, long groupid) */KNIEXPORT KNI_RETURNTYPE_INTJava_com_sun_kvem_netmon_HttpAgent_newStream0() { jlong groupid; jint direction; jint md; jchar* urlData; int urlLength; KNI_StartHandles(1); KNI_DeclareHandle(url); static LimeFunction *f = NULL; KNI_GetParameterAsObject(1, url); direction = KNI_GetParameterAsInt(2); groupid = KNI_GetParameterAsLong(3); DEBUG_PRINT("in HttpAgent_newStream\n"); urlLength = KNI_GetStringLength(url); urlData = (jchar*)midpMalloc(urlLength * sizeof(jchar)); if (urlData == NULL) { KNI_ThrowNew("java/lang/OutOfMemoryError", ""); } else { KNI_GetStringRegion(url, 0, urlLength, urlData); if(f == NULL) { /* int newStream(String url, int direction, int groupid) */ f = NewLimeFunction(NETMON_HTTP_PACKAGE, HTTP_RECEIVER, "newStream"); } f->call(f, &md, urlData , urlLength, direction, groupid); midpFree(urlData); } KNI_EndHandles(); KNI_ReturnInt(md);}/** * void write(int md, int _byte) */KNIEXPORT KNI_RETURNTYPE_VOIDJava_com_sun_kvem_netmon_HttpAgent_write() { int byte, md; static LimeFunction *f = NULL; md = KNI_GetParameterAsInt(1); byte = KNI_GetParameterAsInt(2); DEBUG_PRINT("in HttpAgent_write\n"); if(f == NULL) { /* void updateMsgOneByte(int md, int b) */ f = NewLimeFunction(NETMON_HTTP_PACKAGE, HTTP_RECEIVER, "updateMsgOneByte"); } f->call(f,NULL,md,byte); KNI_ReturnVoid();}/** * void write(int md, byte[] buff, int off, int len) */KNIEXPORT KNI_RETURNTYPE_VOIDJava_com_sun_kvem_netmon_HttpAgent_writeBuff() { int md, off, len; KNI_StartHandles(1); KNI_DeclareHandle(buffer); static LimeFunction *f = NULL; jbyte* bufferData = NULL; int bufferLength = 0; md = KNI_GetParameterAsInt(1); KNI_GetParameterAsObject(2, buffer); off = KNI_GetParameterAsInt(3); len = KNI_GetParameterAsInt(4); DEBUG_PRINT("in HttpAgent_writeBuff\n"); bufferLength = KNI_GetArrayLength(buffer); bufferData = (jbyte*) midpMalloc(bufferLength * sizeof(jbyte)); if (bufferData == NULL) { KNI_ThrowNew("java/lang/OutOfMemoryError", ""); } else { KNI_GetRawArrayRegion(buffer, 0, bufferLength * sizeof(jbyte), bufferData); if(f == NULL) { /* void updateMsgBuff(int md , byte[] buffer, int off, int len) */ f = NewLimeFunction(NETMON_HTTP_PACKAGE, HTTP_RECEIVER, "updateMsgBuff"); } f->call(f, NULL, md, bufferData, bufferLength, off, len); midpFree(bufferData); } KNI_EndHandles(); KNI_ReturnVoid();}/** * void close(int md) */KNIEXPORT KNI_RETURNTYPE_VOIDJava_com_sun_kvem_netmon_HttpAgent_close() { int md = KNI_GetParameterAsInt(1); static LimeFunction *f = NULL; DEBUG_PRINT("in HttpAgent_close\n"); if(f == NULL) { f = NewLimeFunction(NETMON_HTTP_PACKAGE, HTTP_RECEIVER, "close"); } f->call(f, NULL, md); KNI_ReturnVoid();}/* HTTPS Agent Methods ---------------------------------------------------*//** * int newStream(String url, int direction, long groupid) */KNIEXPORT KNI_RETURNTYPE_INTJava_com_sun_kvem_netmon_HttpsAgent_newStream() { int direction; jlong groupid; jchar* urlData; int urlLength; int md; KNI_StartHandles(1); KNI_DeclareHandle(url); static LimeFunction *f = NULL; KNI_GetParameterAsObject(1, url); direction = KNI_GetParameterAsInt(2); groupid = KNI_GetParameterAsLong(3); DEBUG_PRINT("in HttpsAgent_newStream\n"); urlLength = KNI_GetStringLength(url); urlData = (jchar*)midpMalloc(urlLength * sizeof(jchar)); if (urlData == NULL) { KNI_ThrowNew("java/lang/OutOfMemoryError", ""); } else { KNI_GetStringRegion(url, 0, urlLength, urlData); if(f == NULL) { /* int newStream( String url, int direction, long groupid) */ f = NewLimeFunction(NETMON_HTTP_PACKAGE, HTTPS_RECEIVER, "newStream"); } f->call(f, &md, urlData , urlLength, direction, groupid); midpFree(urlData); } KNI_EndHandles(); KNI_ReturnInt(md);}/** * void write(int md, int _byte) */KNIEXPORT KNI_RETURNTYPE_VOIDJava_com_sun_kvem_netmon_HttpsAgent_write() { int md, byte; static LimeFunction *f = NULL; md = KNI_GetParameterAsInt(1); byte = KNI_GetParameterAsInt(2); DEBUG_PRINT("in HttpsAgent_write\n"); if(f == NULL) { /* void updateOneByte( int md, int b) */ f = NewLimeFunction(NETMON_HTTP_PACKAGE, HTTPS_RECEIVER, "updateMsgOneByte"); } f->call( f, NULL, md, byte); KNI_ReturnVoid();}/** * void writeBuff(int md, byte[] buff, int off, int len) */KNIEXPORT KNI_RETURNTYPE_VOIDJava_com_sun_kvem_netmon_HttpsAgent_writeBuff() { int md, off, len; KNI_StartHandles(1); KNI_DeclareHandle(buffer); static LimeFunction *f = NULL; jbyte* bufferData; int bufferLength; md = KNI_GetParameterAsInt(1); KNI_GetParameterAsObject(2, buffer); off = KNI_GetParameterAsInt(3); len = KNI_GetParameterAsInt(4); DEBUG_PRINT("in HttpsAgent_write\n"); bufferLength = KNI_GetArrayLength(buffer); bufferData = (jbyte*) midpMalloc(bufferLength * sizeof(jbyte)); if (bufferData == NULL) { KNI_ThrowNew("java/lang/OutOfMemoryError", ""); } else { KNI_GetRawArrayRegion(buffer, 0, bufferLength * sizeof(jbyte), bufferData); if(f == NULL) { /* void updateMsgBuff(int md,byte[] buff, int off, int len) */ f = NewLimeFunction(NETMON_HTTP_PACKAGE, HTTPS_RECEIVER, "updateMsgBuff"); } f->call(f, NULL, md, bufferData, bufferLength, off, len); midpFree(bufferData); } KNI_EndHandles(); KNI_ReturnVoid();}/** * void close(int md) */KNIEXPORT KNI_RETURNTYPE_VOIDJava_com_sun_kvem_netmon_HttpsAgent_close() { int md; static LimeFunction *f = NULL; md = KNI_GetParameterAsInt(1); DEBUG_PRINT("in HttpsAgent_close\n"); if(f == NULL) { /* void close(int md) */ f = NewLimeFunction(NETMON_HTTP_PACKAGE, HTTPS_RECEIVER, "close"); } f->call(f,NULL,md); KNI_ReturnVoid();}/* Socket Agent Methods ---------------------------------------------------*//** * int connect0(String url, int mode, long groupid) */KNIEXPORT KNI_RETURNTYPE_INTJava_com_sun_kvem_io_j2me_socket_Protocol_connect0() { int md; jint mode; jlong groupid; jchar* urlData; int urlLength; KNI_StartHandles(1); KNI_DeclareHandle(url); static LimeFunction *f = NULL; KNI_GetParameterAsObject(1, url); mode = KNI_GetParameterAsInt(2); groupid = KNI_GetParameterAsLong(3); DEBUG_PRINT("in socket_Protocol_connect0\n"); urlLength = KNI_GetStringLength(url); urlData = (jchar*)midpMalloc(urlLength * sizeof(jchar)); if (urlData == NULL) { KNI_ThrowNew("java/lang/OutOfMemoryError", ""); } else { KNI_GetStringRegion(url, 0, urlLength, urlData); if(f == NULL) { /* int connect(String name, int mode, long groupid) */ f = NewLimeFunction(NETMON_SOCKET_PACKAGE, SOCKET_RECEIVER, "connect"); } f->call(f, &md, urlData, urlLength, mode, groupid); midpFree(urlData); } KNI_EndHandles(); KNI_ReturnInt(md);}/** * void disconnect0(int md) */KNIEXPORT KNI_RETURNTYPE_VOIDJava_com_sun_kvem_io_j2me_socket_Protocol_disconnect0() { int md; static LimeFunction *f = NULL; md = KNI_GetParameterAsInt(1); DEBUG_PRINT("in socket_Protocol_disconnect0\n"); if(f == NULL) { f = NewLimeFunction(NETMON_SOCKET_PACKAGE, SOCKET_RECEIVER, "disconnect"); } f->call(f, NULL, md); KNI_ReturnVoid();}/** * void read0(int md, byte b[], int off, int len) */KNIEXPORT KNI_RETURNTYPE_VOIDJava_com_sun_kvem_io_j2me_socket_Protocol_read0() { int md, off, len; jbyte* data; int length; KNI_StartHandles(1); KNI_DeclareHandle(b); md = KNI_GetParameterAsInt(1); KNI_GetParameterAsObject(2, b); off = KNI_GetParameterAsInt(3); len = KNI_GetParameterAsInt(4); DEBUG_PRINT("in socket_Protocol_read0\n"); length = KNI_GetArrayLength(b); data = (jbyte*) midpMalloc(length * sizeof(jbyte)); if (data == NULL) { KNI_ThrowNew("java/lang/OutOfMemoryError", ""); } else { static LimeFunction *f = NULL; KNI_GetRawArrayRegion(b, 0, length * sizeof(jbyte), data); if(f == NULL) { f = NewLimeFunction(NETMON_SOCKET_PACKAGE, SOCKET_RECEIVER, "read"); } f->call(f,NULL, md, data, length, off, len); midpFree(data); } KNI_EndHandles(); KNI_ReturnVoid();}/** * void write0(int md, byte b[], int off, int len) */KNIEXPORT KNI_RETURNTYPE_VOIDJava_com_sun_kvem_io_j2me_socket_Protocol_write0() { int md, off, len; jbyte* data; int length; KNI_StartHandles(1); KNI_DeclareHandle(b); md = KNI_GetParameterAsInt(1); KNI_GetParameterAsObject(2, b); off = KNI_GetParameterAsInt(3); len = KNI_GetParameterAsInt(4); DEBUG_PRINT("in socket_Protocol_write0\n"); length = KNI_GetArrayLength(b); data = (jbyte*) midpMalloc(length * sizeof(jbyte)); if (data == NULL) { KNI_ThrowNew("java/lang/OutOfMemoryError", ""); } else { static LimeFunction *f = NULL; KNI_GetRawArrayRegion(b, 0, length * sizeof(jbyte), data); if(f == NULL) { f = NewLimeFunction(NETMON_SOCKET_PACKAGE, SOCKET_RECEIVER, "write"); } f->call(f, NULL, md, data, length, off, len); midpFree(data); } KNI_EndHandles(); KNI_ReturnVoid();}/** * void setSocketOption(int md, byte option, int value) */KNIEXPORT KNI_RETURNTYPE_VOIDJava_com_sun_kvem_io_j2me_socket_Protocol_setSocketOption0() { jint md, value; jbyte option; static LimeFunction *f = NULL; md = KNI_GetParameterAsInt(1); option = KNI_GetParameterAsByte(2); value = KNI_GetParameterAsInt(3); DEBUG_PRINT("in socket_Protocol_setSocketOption0\n");
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?