[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r3278 - in freeway: . native src/org/gnu/freeway src/org/gn
From: |
mdonoughe |
Subject: |
[GNUnet-SVN] r3278 - in freeway: . native src/org/gnu/freeway src/org/gnu/freeway/server src/org/gnu/freeway/util |
Date: |
Sun, 20 Aug 2006 17:59:59 -0700 (PDT) |
Author: mdonoughe
Date: 2006-08-20 17:59:43 -0700 (Sun, 20 Aug 2006)
New Revision: 3278
Modified:
freeway/
freeway/build.sh
freeway/native/connection.c
freeway/native/connection.h
freeway/native/core.c
freeway/native/core.h
freeway/native/handler.c
freeway/native/handler.h
freeway/native/java.c
freeway/native/org_gnu_freeway_server_CPluginLoader.h
freeway/native/tcpserver.c
freeway/native/tcpserver.h
freeway/native/util.c
freeway/native/util.h
freeway/src/org/gnu/freeway/AbstractApplication.java
freeway/src/org/gnu/freeway/AbstractServer.java
freeway/src/org/gnu/freeway/GNUNetDaemon.java
freeway/src/org/gnu/freeway/server/CPluginLoader.java
freeway/src/org/gnu/freeway/server/ClientServer.java
freeway/src/org/gnu/freeway/server/CoreAPI.java
freeway/src/org/gnu/freeway/util/LoggedObject.java
Log:
more callbacks
builds on a mac
logic fix
more CoreAPI
fixes
Property changes on: freeway
___________________________________________________________________
Name: svk:merge
- ca0d4bff-9018-0410-8ce9-c5d843b21c37:/local/freeway:73
+ 9da852c3-611b-0410-9456-b3f9f3a8f88d:/local/freeway:68
ca0d4bff-9018-0410-8ce9-c5d843b21c37:/local/freeway:73
Modified: freeway/build.sh
===================================================================
--- freeway/build.sh 2006-08-20 22:55:49 UTC (rev 3277)
+++ freeway/build.sh 2006-08-21 00:59:43 UTC (rev 3278)
@@ -6,5 +6,5 @@
ant && javah -classpath build/classes -d native
org.gnu.freeway.server.CPluginLoader && make || exit 1
cp native/.libs/lib*.so* etc/support/clib/.libs/*.so* native/.libs/lib*.dylib
etc/support/clib/.libs/lib*.dylib build/ > /dev/null 2>&1
mv build/libfreeway-clib.dylib build/libfreeway-clib.jnilib > /dev/null 2>&1
-mv build/liborg_gnu_freeway_server_cpluginloader.dylib
build/liborg_gnu_freeway_server_cpluginloader.jnilib > /dev/null 2>&1
+mv build/libcpluginloader.dylib build/libcpluginloader.jnilib > /dev/null 2>&1
exit 0
Modified: freeway/native/connection.c
===================================================================
--- freeway/native/connection.c 2006-08-20 22:55:49 UTC (rev 3277)
+++ freeway/native/connection.c 2006-08-21 00:59:43 UTC (rev 3278)
@@ -34,6 +34,78 @@
#include "jni.h"
#include "util.h"
+int sendPlaintext(TSession * session, const char * msg, unsigned int size) {
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jbyteArray jmsg;
+ jmethodID method;
+ jobject ret;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ jmsg = (*env)->NewByteArray(env, size);
+ GNUNET_ASSERT(jmsg != NULL);
+ (*env)->SetByteArrayRegion(env, jmsg, 0, size, msg);
+ GNUNET_ASSERT(capiClazz != NULL);
+ method = (*env)->GetMethodID(env, capiClazz, "sendPlaintext",
"(Lorg/gnu/freeway/transport/Session;[B)Lorg/gnu/freeway/cwrappers/CInt;");
+ GNUNET_ASSERT(method != NULL);
+ ret = (*env)->CallObjectMethod(env, t->jcapi, method, session, jmsg);
+ GNUNET_ASSERT(ret != NULL);
+ return convCIntToInt(ret, env);
+}
+
+void unicast(const PeerIdentity * receiver, const P2P_MESSAGE_HEADER * msg,
unsigned int importance, unsigned int maxdelay) {
+ fprintf(stderr, "in unicast\n");
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass chiClazz;
+ jmethodID newChi;
+ jbyteArray temp;
+ jobject jreciever;
+ jbyteArray jmsg;
+ jobject jimportance;
+ jobject jmaxdelay;
+ jclass capiClazz;
+ jmethodID method;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+
+ chiClazz = (*env)->FindClass(env, "org/gnu/freeway/cwrappers/CHostIdentity");
+ GNUNET_ASSERT(chiClazz != NULL);
+
+ newChi = (*env)->GetMethodID(env, chiClazz, "<init>", "(B])V");
+ GNUNET_ASSERT(newChi != NULL);
+
+ temp = (*env)->NewByteArray(env, 64);
+ GNUNET_ASSERT(temp != NULL);
+ (*env)->SetByteArrayRegion(env, temp, 0, 64, (char*) receiver);
+ jreciever = (*env)->NewObject(env, chiClazz, newChi, temp);
+ GNUNET_ASSERT(jreciever != NULL);
+ jmsg = (*env)->NewByteArray(env, msg->size);
+ GNUNET_ASSERT(jmsg != NULL);
+ (*env)->SetByteArrayRegion(env, jmsg, 0, msg->size, msg);
+ jimportance = convUIntToCUInt(importance, env);
+ GNUNET_ASSERT(jimportance != NULL);
+ jmaxdelay = convUIntToCUInt(maxdelay, env);
+ GNUNET_ASSERT(jmaxdelay != NULL);
+
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ method = (*env)->GetMethodID(env, capiClazz, "unicast",
"(Lorg/gnu/freeway/cwrappers/CHostIdentity;B];Lorg/gnu/freeway/cwrappers/CUnsignedInt;Lorg/gnu/freeway/cwrappers/CUnsignedInt;)V");
+ GNUNET_ASSERT(method != NULL);
+ (*env)->CallVoidMethod(env, t->jcapi, method, jreciever, jmsg, jimportance,
jmaxdelay);
+ fprintf(stderr, "leaving unicast\n");
+}
+
+void unicastCallback(const PeerIdentity * receiver, BuildMessageCallback
callback, void * closure, unsigned short len, unsigned int importance, unsigned
int maxdelay) {
+ GNUNET_ASSERT(0);
+}
+
int forAllConnectedNodes(PerNodeCallback method, void * arg) {
fprintf(stderr, "in forAllConnectedNodes\n");
ActiveThreadList * t;
@@ -67,3 +139,288 @@
return convCIntToInt(jret, env);
}
+int registerSendCallback(const unsigned int minimumPadding, BufferFillCallback
callback) {
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jclass cuintClazz;
+ jclass handleClazz;
+ jobject jpadding;
+ jobject jcallback;
+ jmethodID newHandle;
+ jmethodID newCuint;
+ jmethodID method;
+ jobject jret;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ cuintClazz = (*env)->FindClass(env,
"org/gnu/freeway/cwrappers/CUnsignedInt");
+ GNUNET_ASSERT(cuintClazz != NULL);
+ handleClazz = (*env)->FindClass(env,
"org/gnu/freeway/server/CPluginLoader$Handle");
+ GNUNET_ASSERT(handleClazz != NULL);
+ newHandle = (*env)->GetMethodID(env, handleClazz, "<init>", "(J)V");
+ GNUNET_ASSERT(newHandle != NULL);
+ newCuint = (*env)->GetMethodID(env, cuintClazz, "<init>", "(J)V");
+ GNUNET_ASSERT(newCuint != NULL);
+ method = (*env)->GetMethodID(env, capiClazz, "registerSendCallback",
"(Lorg/gnu/freeway/cwrappers/CUnsignedInt;Lorg/gnu/freeway/server/CPluginLoader$Handle;)Lorg/gnu/freeway/cwrappers/CInt;");
+ GNUNET_ASSERT(method != NULL);
+ jpadding = (*env)->NewObject(env, cuintClazz, newCuint, (jlong) (long)
minimumPadding);
+ GNUNET_ASSERT(jpadding != NULL);
+ jcallback = (*env)->NewObject(env, handleClazz, newHandle, (jlong) (long)
callback);
+ GNUNET_ASSERT(jcallback != NULL);
+ jret = (*env)->CallObjectMethod(env, t->jcapi, method, jpadding, jcallback);
+ GNUNET_ASSERT(jret != NULL);
+ return convCIntToInt(jret, env);
+}
+
+int unregisterSendCallback(const unsigned int minimumPadding,
BufferFillCallback callback) {
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jclass cuintClazz;
+ jclass handleClazz;
+ jobject jpadding;
+ jobject jcallback;
+ jmethodID newHandle;
+ jmethodID newCuint;
+ jmethodID method;
+ jobject jret;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ cuintClazz = (*env)->FindClass(env,
"org/gnu/freeway/cwrappers/CUnsignedInt");
+ GNUNET_ASSERT(cuintClazz != NULL);
+ handleClazz = (*env)->FindClass(env,
"org/gnu/freeway/server/CPluginLoader$Handle");
+ GNUNET_ASSERT(handleClazz != NULL);
+ newHandle = (*env)->GetMethodID(env, handleClazz, "<init>", "(J)V");
+ GNUNET_ASSERT(newHandle != NULL);
+ newCuint = (*env)->GetMethodID(env, cuintClazz, "<init>", "(J)V");
+ GNUNET_ASSERT(newCuint != NULL);
+ method = (*env)->GetMethodID(env, capiClazz, "unregisterSendCallback",
"(Lorg/gnu/freeway/cwrappers/CUnsignedInt;Lorg/gnu/freeway/server/CPluginLoader$Handle;)Lorg/gnu/freeway/cwrappers/CInt;");
+ GNUNET_ASSERT(method != NULL);
+ jpadding = (*env)->NewObject(env, cuintClazz, newCuint, (jlong) (long)
minimumPadding);
+ GNUNET_ASSERT(jpadding != NULL);
+ jcallback = (*env)->NewObject(env, handleClazz, newHandle, (jlong) (long)
callback);
+ GNUNET_ASSERT(jcallback != NULL);
+ jret = (*env)->CallObjectMethod(env, t->jcapi, method, jpadding, jcallback);
+ GNUNET_ASSERT(jret != NULL);
+ return convCIntToInt(jret, env);
+}
+
+int registerSendNotify(MessagePartHandler callback) {
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jclass handleClazz;
+ jobject jcallback;
+ jmethodID newHandle;
+ jmethodID method;
+ jobject jret;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ handleClazz = (*env)->FindClass(env,
"org/gnu/freeway/server/CPluginLoader$Handle");
+ GNUNET_ASSERT(handleClazz != NULL);
+ newHandle = (*env)->GetMethodID(env, handleClazz, "<init>", "(J)V");
+ GNUNET_ASSERT(newHandle != NULL);
+ method = (*env)->GetMethodID(env, capiClazz, "registerSendNotify",
"(Lorg/gnu/freeway/server/CPluginLoader$Handle;)Lorg/gnu/freeway/cwrappers/CInt;");
+ GNUNET_ASSERT(method != NULL);
+ jcallback = (*env)->NewObject(env, handleClazz, newHandle, (jlong) (long)
callback);
+ GNUNET_ASSERT(jcallback != NULL);
+ jret = (*env)->CallObjectMethod(env, t->jcapi, method, jcallback);
+ GNUNET_ASSERT(jret != NULL);
+ return convCIntToInt(jret, env);
+}
+
+int unregisterSendNotify(MessagePartHandler callback) {
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jclass handleClazz;
+ jobject jcallback;
+ jmethodID newHandle;
+ jmethodID method;
+ jobject jret;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ handleClazz = (*env)->FindClass(env,
"org/gnu/freeway/server/CPluginLoader$Handle");
+ GNUNET_ASSERT(handleClazz != NULL);
+ newHandle = (*env)->GetMethodID(env, handleClazz, "<init>", "(J)V");
+ GNUNET_ASSERT(newHandle != NULL);
+ method = (*env)->GetMethodID(env, capiClazz, "unregisterSendNotify",
"(Lorg/gnu/freeway/server/CPluginLoader$Handle;)Lorg/gnu/freeway/cwrappers/CInt;");
+ GNUNET_ASSERT(method != NULL);
+ jcallback = (*env)->NewObject(env, handleClazz, newHandle, (jlong) (long)
callback);
+ GNUNET_ASSERT(jcallback != NULL);
+ jret = (*env)->CallObjectMethod(env, t->jcapi, method, jcallback);
+ GNUNET_ASSERT(jret != NULL);
+ return convCIntToInt(jret, env);
+}
+
+void offerTSessionFor(const PeerIdentity * peer, TSession * session) {
+ GNUNET_ASSERT(0);
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jclass cHostIdentityClazz;
+ jobject jpeer;
+ jmethodID newCHI;
+ jbyteArray temp;
+ jmethodID method;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ cHostIdentityClazz = (*env)->FindClass(env,
"org/gnu/freeway/cwrappers/CHostIdentity");
+ GNUNET_ASSERT(cHostIdentityClazz != NULL);
+ newCHI = (*env)->GetMethodID(env, cHostIdentityClazz, "<init>", "(B])V");
+ GNUNET_ASSERT(newCHI != NULL);
+ temp = (*env)->NewByteArray(env, 64);
+ GNUNET_ASSERT(temp != NULL);
+ (*env)->SetByteArrayRegion(env, temp, 0, 64, (char*) peer);
+ method = (*env)->GetMethodID(env, capiClazz, "offerTSessionFor",
"(Lorg/gnu/freeway/cwrappers/CHostIdentity;Lorg/gnu/freeway/transport/Session;)V");
+ GNUNET_ASSERT(method != NULL);
+ jpeer = (*env)->NewObject(env, cHostIdentityClazz, newCHI, temp);
+ GNUNET_ASSERT(jpeer != NULL);
+ (*env)->CallVoidMethod(env, t->jcapi, method, jpeer, session);
+}
+
+void assignSessionKey(const SESSIONKEY * key, const PeerIdentity * peer,
TIME_T age, int forSending) {
+ GNUNET_ASSERT(0);
+}
+
+int getCurrentSessionKey(const PeerIdentity * peer, SESSIONKEY * key, TIME_T *
age, int forSending) {
+ GNUNET_ASSERT(0);
+}
+
+void confirmSessionUp(const PeerIdentity * node) {
+ GNUNET_ASSERT(0);
+}
+
+void preferTrafficFrom(const PeerIdentity * node, double preference) {
+ GNUNET_ASSERT(0);
+}
+
+unsigned int queryBPMFromPeer(const PeerIdentity * node) {
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jclass cHostIdentityClazz;
+ jobject jpeer;
+ jmethodID newCHI;
+ jbyteArray temp;
+ jmethodID method;
+ jobject jret;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ cHostIdentityClazz = (*env)->FindClass(env,
"org/gnu/freeway/cwrappers/CHostIdentity");
+ GNUNET_ASSERT(cHostIdentityClazz != NULL);
+ newCHI = (*env)->GetMethodID(env, cHostIdentityClazz, "<init>", "(B])V");
+ GNUNET_ASSERT(newCHI != NULL);
+ temp = (*env)->NewByteArray(env, 64);
+ GNUNET_ASSERT(temp != NULL);
+ (*env)->SetByteArrayRegion(env, temp, 0, 64, (char*) node);
+ method = (*env)->GetMethodID(env, capiClazz, "querryBPMFromPeer",
"(Lorg/gnu/freeway/cwrappers/CHostIdentity;)Lorg/gnu/freeway/cwrappers/CUnsignedInt;");
+ GNUNET_ASSERT(method != NULL);
+ jpeer = (*env)->NewObject(env, cHostIdentityClazz, newCHI, temp);
+ GNUNET_ASSERT(jpeer != NULL);
+ jret = (*env)->CallObjectMethod(env, t->jcapi, method, jpeer);
+ return convCUIntToUInt(jret, env);
+}
+
+void disconnectFromPeer(const PeerIdentity * peer) {
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jclass cHostIdentityClazz;
+ jobject jpeer;
+ jmethodID newCHI;
+ jbyteArray temp;
+ jmethodID method;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ cHostIdentityClazz = (*env)->FindClass(env,
"org/gnu/freeway/cwrappers/CHostIdentity");
+ GNUNET_ASSERT(cHostIdentityClazz != NULL);
+ newCHI = (*env)->GetMethodID(env, cHostIdentityClazz, "<init>", "(B])V");
+ GNUNET_ASSERT(newCHI != NULL);
+ temp = (*env)->NewByteArray(env, 64);
+ GNUNET_ASSERT(temp != NULL);
+ (*env)->SetByteArrayRegion(env, temp, 0, 64, (char*) peer);
+ method = (*env)->GetMethodID(env, capiClazz, "disconnectFromPeer",
"(Lorg/gnu/freeway/cwrappers/CHostIdentity;)V");
+ GNUNET_ASSERT(method != NULL);
+ jpeer = (*env)->NewObject(env, cHostIdentityClazz, newCHI, temp);
+ GNUNET_ASSERT(jpeer != NULL);
+ (*env)->CallVoidMethod(env, t->jcapi, method, jpeer);
+}
+
+unsigned int computeIndex(const PeerIdentity * peer) {
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jclass cHostIdentityClazz;
+ jobject jpeer;
+ jmethodID newCHI;
+ jbyteArray temp;
+ jmethodID method;
+ jobject jret;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ cHostIdentityClazz = (*env)->FindClass(env,
"org/gnu/freeway/cwrappers/CHostIdentity");
+ GNUNET_ASSERT(cHostIdentityClazz != NULL);
+ newCHI = (*env)->GetMethodID(env, cHostIdentityClazz, "<init>", "(B])V");
+ GNUNET_ASSERT(newCHI != NULL);
+ temp = (*env)->NewByteArray(env, 64);
+ GNUNET_ASSERT(temp != NULL);
+ (*env)->SetByteArrayRegion(env, temp, 0, 64, (char*) peer);
+ method = (*env)->GetMethodID(env, capiClazz, "querryBPMFromPeer",
"(Lorg/gnu/freeway/cwrappers/CHostIdentity;)Lorg/gnu/freeway/cwrappers/CUnsignedInt;");
+ GNUNET_ASSERT(method != NULL);
+ jpeer = (*env)->NewObject(env, cHostIdentityClazz, newCHI, temp);
+ GNUNET_ASSERT(jpeer != NULL);
+ jret = (*env)->CallObjectMethod(env, t->jcapi, method, jpeer);
+ return convCUIntToUInt(jret, env);
+}
+
+Mutex * getConnectionModuleLock() {
+ //let's hope Freeway handles this!
+ Mutex * ret;
+ MUTEX_CREATE(ret);
+ return ret;
+}
+
+int getSlotCount() {
+ GNUNET_ASSERT(0);
+}
+
+int isSlotUsed(int slot) {
+ GNUNET_ASSERT(0);
+}
+
+int getLastActivityOf(const PeerIdentity * peer, cron_t * time) {
+ return SYSERR;
+}
Modified: freeway/native/connection.h
===================================================================
--- freeway/native/connection.h 2006-08-20 22:55:49 UTC (rev 3277)
+++ freeway/native/connection.h 2006-08-21 00:59:43 UTC (rev 3278)
@@ -25,3 +25,41 @@
*/
int forAllConnectedNodes(PerNodeCallback method, void * arg);
+
+int sendPlaintext(TSession * session, const char * msg, unsigned int size);
+
+void unicast(const PeerIdentity * receiver, const P2P_MESSAGE_HEADER * msg,
unsigned int importance, unsigned int maxdelay);
+
+void unicastCallback(const PeerIdentity * receiver, BuildMessageCallback
callback, void * closure, unsigned int importance, unsigned int maxdelay);
+
+int registerSendCallback(const unsigned int minimumPadding, BufferFillCallback
callback);
+
+int unregisterSendCallback(const unsigned int minimumPadding,
BufferFillCallback callback);
+
+int registerSendNotify(MessagePartHandler callback);
+
+int unregisterSendNotify(MessagePartHandler callback);
+
+void offerTSessionFor(const PeerIdentity * peer, TSession * session);
+
+void assignSessionKey(const SESSIONKEY * key, const PeerIdentity * peer,
TIME_T age, int forSending);
+
+int getCurrentSessionKey(const PeerIdentity * peer, SESSIONKEY * key, TIME_T *
age, int forSending);
+
+void confirmSessionUp(const PeerIdentity * node, double preference);
+
+void preferTrafficFrom(const PeerIdentity * node, double preference);
+
+unsigned int queryBPMFromPeer(const PeerIdentity * node);
+
+void disconnectFromPeer(const PeerIdentity * peer);
+
+unsigned int computeIndex(const PeerIdentity * peer);
+
+Mutex * getConnectionModuleLock();
+
+int getSlotCount();
+
+int isSlotUsed(int slot);
+
+int getLastActivityOf(const PeerIdentity * peer, cron_t * time);
Modified: freeway/native/core.c
===================================================================
--- freeway/native/core.c 2006-08-20 22:55:49 UTC (rev 3277)
+++ freeway/native/core.c 2006-08-21 00:59:43 UTC (rev 3278)
@@ -142,51 +142,53 @@
return OK;
}
-void initCore() {
+void initCore(unsigned int fversion) {
// core.c
- jcapi.version = 0;
- jcapi.myIdentity = NULL;
jcapi.loadApplicationModule = &loadApplicationModule;
jcapi.unloadApplicationModule = &unloadApplicationModule;
jcapi.requestService = &requestService;
jcapi.releaseService = &releaseService;
// connection.c
- jcapi.sendPlaintext = NULL;
- jcapi.unicast = NULL;
- jcapi.unicastCallback = NULL;
+ jcapi.sendPlaintext = &sendPlaintext;
+ jcapi.unicast = &unicast;
+ jcapi.unicastCallback = &unicastCallback;
jcapi.forAllConnectedNodes = &forAllConnectedNodes;
- jcapi.registerSendCallback = NULL;
- jcapi.unregisterSendCallback = NULL;
- jcapi.registerSendNotify = NULL;
- jcapi.unregisterSendNotify = NULL;
- jcapi.offerTSessionFor = NULL;
- jcapi.assignSessionKey = NULL;
- jcapi.getCurrentSessionKey = NULL;
- jcapi.confirmSessionUp = NULL;
- jcapi.preferTrafficFrom = NULL;
- jcapi.queryBPMfromPeer = NULL;
- jcapi.disconnectFromPeer = NULL;
- jcapi.computeIndex = NULL;
- jcapi.getConnectionModuleLock = NULL;
- jcapi.getSlotCount = NULL;
- jcapi.isSlotUsed = NULL;
- jcapi.getLastActivityOf = NULL;
+ jcapi.registerSendCallback = ®isterSendCallback;
+ jcapi.unregisterSendCallback = &unregisterSendCallback;
+ jcapi.registerSendNotify = ®isterSendNotify;
+ jcapi.unregisterSendNotify = &unregisterSendNotify;
+ jcapi.offerTSessionFor = &offerTSessionFor;
+ jcapi.assignSessionKey = &assignSessionKey;
+ jcapi.getCurrentSessionKey = &getCurrentSessionKey;
+ jcapi.confirmSessionUp = &confirmSessionUp;
+ jcapi.preferTrafficFrom = &preferTrafficFrom;
+ jcapi.queryBPMfromPeer = &queryBPMFromPeer;
+ jcapi.disconnectFromPeer = &disconnectFromPeer;
+ jcapi.computeIndex = &computeIndex;
+ jcapi.getConnectionModuleLock = &getConnectionModuleLock;
+ jcapi.getSlotCount = &getSlotCount;
+ jcapi.isSlotUsed = &isSlotUsed;
+ jcapi.getLastActivityOf = &getLastActivityOf;
// handler.c
jcapi.registerHandler = ®isterHandler;
jcapi.unregisterHandler = &unregisterHandler;
jcapi.isHandlerRegistered = &isHandlerRegistered;
- jcapi.registerPlaintextHandler = NULL;
- jcapi.unregisterPlaintextHandler = NULL;
- jcapi.injectMessage = NULL;
+ jcapi.registerPlaintextHandler = ®isterPlaintextHandler;
+ jcapi.unregisterPlaintextHandler = &unregisterPlaintextHandler;
+ jcapi.injectMessage = &injectMessage;
// tcpserver.c
jcapi.sendValueToClient = &sendValueToClient;
jcapi.sendToClient = &sendToClient;
jcapi.registerClientHandler = ®isterClientHandler;
jcapi.unregisterClientHandler = &unregisterClientHandler;
- jcapi.registerClientExitHandler = NULL;
- jcapi.unregisterClientExitHandler = NULL;
- jcapi.terminateClientConnection = NULL;
+ jcapi.registerClientExitHandler = ®isterClientExitHandler;
+ jcapi.unregisterClientExitHandler = &unregisterClientExitHandler;
+ jcapi.terminateClientConnection = &terminateClientConnection;
+
+ // get some information from Freeway
+ jcapi.version = fversion;
+ jcapi.myIdentity = NULL; // Freeway will set this later
}
Modified: freeway/native/core.h
===================================================================
--- freeway/native/core.h 2006-08-20 22:55:49 UTC (rev 3277)
+++ freeway/native/core.h 2006-08-21 00:59:43 UTC (rev 3278)
@@ -24,6 +24,9 @@
* @author Christian Grothoff
*/
+#ifndef HAVE_CORE_H
+#define HAVE_CORE_H 1
#include <GNUnet/gnunet_util.h>
-CoreAPIForApplication jcapi;
+extern CoreAPIForApplication jcapi;
+#endif
Modified: freeway/native/handler.c
===================================================================
--- freeway/native/handler.c 2006-08-20 22:55:49 UTC (rev 3277)
+++ freeway/native/handler.c 2006-08-21 00:59:43 UTC (rev 3278)
@@ -62,7 +62,7 @@
GNUNET_ASSERT(jcallback != NULL);
jret = (*env)->CallObjectMethod(env, t->jcapi, method, jtype, jcallback);
GNUNET_ASSERT(jret != NULL);
-fprintf(stderr, "leaving jregisterHandler\n");
+fprintf(stderr, "leaving registerHandler\n");
return convCIntToInt(jret, env);
}
@@ -94,7 +94,7 @@
GNUNET_ASSERT(jcallback != NULL);
jret = (*env)->CallObjectMethod(env, t->jcapi, method, jtype, jcallback);
GNUNET_ASSERT(jret != NULL);
-fprintf(stderr, "leaving junregisterHandler\n");
+fprintf(stderr, "leaving unregisterHandler\n");
return convCIntToInt(jret, env);
}
@@ -119,3 +119,109 @@
fprintf(stderr, "leaving isHandlerRegistered\n");
return convCIntToInt(ok, env);
}
+
+int registerPlaintextHandler(unsigned short type, PlaintextMessagePartHandler
callback) {
+ fprintf(stderr, "in registerPlaintextHandler\n");
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jclass handleClazz;
+ jobject jtype;
+ jobject jcallback;
+ jmethodID newHandle;
+ jmethodID method;
+ jobject jret;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ handleClazz = (*env)->FindClass(env,
"org/gnu/freeway/server/CPluginLoader$Handle");
+ GNUNET_ASSERT(handleClazz != NULL);
+ newHandle = (*env)->GetMethodID(env, handleClazz, "<init>", "(J)V");
+ GNUNET_ASSERT(newHandle != NULL);
+ method = (*env)->GetMethodID(env, capiClazz, "registerPlaintextHandler",
"(Lorg/gnu/freeway/cwrappers/CInt;Lorg/gnu/freeway/server/CPluginLoader$Handle;)Lorg/gnu/freeway/cwrappers/CInt;");
+ GNUNET_ASSERT(method != NULL);
+ jtype = convIntToCInt((int) type, env);
+ jcallback = (*env)->NewObject(env, handleClazz, newHandle, (jlong) (long)
callback);
+ GNUNET_ASSERT(jcallback != NULL);
+ jret = (*env)->CallObjectMethod(env, t->jcapi, method, jtype, jcallback);
+ GNUNET_ASSERT(jret != NULL);
+fprintf(stderr, "leaving registerPlaintextHandler\n");
+ return convCIntToInt(jret, env);
+}
+
+int unregisterPlaintextHandler(unsigned short type,
PlaintextMessagePartHandler callback) {
+ fprintf(stderr, "in unregisterPlaintextHandler\n");
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jclass handleClazz;
+ jobject jtype;
+ jobject jcallback;
+ jmethodID newHandle;
+ jmethodID method;
+ jobject jret;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ handleClazz = (*env)->FindClass(env,
"org/gnu/freeway/server/CPluginLoader$Handle");
+ GNUNET_ASSERT(handleClazz != NULL);
+ newHandle = (*env)->GetMethodID(env, handleClazz, "<init>", "(J)V");
+ GNUNET_ASSERT(newHandle != NULL);
+ method = (*env)->GetMethodID(env, capiClazz, "unregisterPlaintextHandler",
"(Lorg/gnu/freeway/cwrappers/CInt;Lorg/gnu/freeway/server/CPluginLoader$Handle;)Lorg/gnu/freeway/cwrappers/CInt;");
+ GNUNET_ASSERT(method != NULL);
+ jtype = convIntToCInt((int) type, env);
+ jcallback = (*env)->NewObject(env, handleClazz, newHandle, (jlong) (long)
callback);
+ GNUNET_ASSERT(jcallback != NULL);
+ jret = (*env)->CallObjectMethod(env, t->jcapi, method, jtype, jcallback);
+ GNUNET_ASSERT(jret != NULL);
+fprintf(stderr, "leaving unregisterPlaintextHandler\n");
+ return convCIntToInt(jret, env);
+}
+
+void injectMessage(const PeerIdentity * sender, const char * msg, unsigned int
size, int wasEncrypted, TSession * session) {
+ fprintf(stderr, "in injectMessage\n");
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass chiClazz;
+ jmethodID newChi;
+ jbyteArray temp;
+ jobject jsender;
+ jbyteArray jmsg;
+ jobject jwasEncrypted;
+ jclass capiClazz;
+ jmethodID method;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+
+ chiClazz = (*env)->FindClass(env, "org/gnu/freeway/cwrappers/CHostIdentity");
+ GNUNET_ASSERT(chiClazz != NULL);
+
+ newChi = (*env)->GetMethodID(env, chiClazz, "<init>", "(B])V");
+ GNUNET_ASSERT(newChi != NULL);
+
+ temp = (*env)->NewByteArray(env, 64);
+ GNUNET_ASSERT(temp != NULL);
+ (*env)->SetByteArrayRegion(env, temp, 0, 64, (char*) sender);
+ jsender = (*env)->NewObject(env, chiClazz, newChi, temp);
+ GNUNET_ASSERT(jsender != NULL);
+ jmsg = (*env)->NewByteArray(env, size);
+ GNUNET_ASSERT(jmsg != NULL);
+ (*env)->SetByteArrayRegion(env, jmsg, 0, size, msg);
+ jwasEncrypted = convIntToCInt(wasEncrypted, env);
+ GNUNET_ASSERT(jwasEncrypted != NULL);
+
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ method = (*env)->GetMethodID(env, capiClazz, "injectMessage",
"(Lorg/gnu/freeway/cwrappers/CHostIdentity;B];Lorg/gnu/freeway/cwrappers/CInt;Lorg/gnu/freeway/transport/Session;)V");
+ GNUNET_ASSERT(method != NULL);
+ (*env)->CallVoidMethod(env, t->jcapi, method, jsender, jmsg, jwasEncrypted,
session);
+ fprintf(stderr, "leaving injectMessage\n");
+}
Modified: freeway/native/handler.h
===================================================================
--- freeway/native/handler.h 2006-08-20 22:55:49 UTC (rev 3277)
+++ freeway/native/handler.h 2006-08-21 00:59:43 UTC (rev 3278)
@@ -31,3 +31,9 @@
int unregisterHandler(unsigned short type, CSHandler callback);
int isHandlerRegistered(unsigned short type, unsigned short htype);
+
+int registerPlaintextHandler(unsigned short type, PlaintextMessagePartHandler
callback);
+
+int unregisterPlaintextHandler(unsigned short type,
PlaintextMessagePartHandler callback);
+
+void injectMessage(const PeerIdentity * sender, const char * msg, unsigned int
size, int wasEncrypted, TSession * session);
\ No newline at end of file
Modified: freeway/native/java.c
===================================================================
--- freeway/native/java.c 2006-08-20 22:55:49 UTC (rev 3277)
+++ freeway/native/java.c 2006-08-21 00:59:43 UTC (rev 3278)
@@ -129,9 +129,9 @@
}
JNIEXPORT jint JNICALL Java_org_gnu_freeway_server_CPluginLoader_cInitUtil
-(JNIEnv * env, jclass cls, jobjectArray args, jobject capi) {
+(JNIEnv * env, jclass cls, jobjectArray args, jint fversion, jobject capi) {
fprintf(stderr, "in cInitUtil\n");
- initCore();
+ initCore((unsigned int) fversion);
MUTEX_CREATE(&threadsLock);
MUTEX_CREATE(&modulesLock);
registerThread(env, capi);
@@ -324,7 +324,42 @@
//fprintf(stderr, "packet is %d bytes long\n", htons(((CS_MESSAGE_HEADER *)
adata)->size));
ok = ((MessagePartHandler) (void*) (long)fptr)((PeerIdentity *) aidentity,
(P2P_MESSAGE_HEADER *) adata);
(*env)->ReleaseByteArrayElements(env, data, adata, 0);
- (*env)->ReleaseByteArrayElements(env, data, aidentity, 0);
+ (*env)->ReleaseByteArrayElements(env, identity, aidentity, 0);
unregisterThread();
return (jint) ok;
}
+
+JNIEXPORT void JNICALL
Java_org_gnu_freeway_server_CPluginLoader_cCallPerNodeCallback
+(JNIEnv *env, jclass cls, jobject capi, jlong fptr, jbyteArray identity, jlong
aptr) {
+ registerThread(env, capi);
+ GNUNET_ASSERT(fptr != 0 && identity != NULL);
+ char * aidentity = (*env)->GetByteArrayElements(env, identity, NULL);
+ GNUNET_ASSERT(aidentity != NULL);
+ ((PerNodeCallback) (void*) (long)fptr)((PeerIdentity *) aidentity, (void *)
aptr);
+ (*env)->ReleaseByteArrayElements(env, identity, aidentity, 0);
+ unregisterThread();
+}
+
+JNIEXPORT jint JNICALL
Java_org_gnu_freeway_server_CPluginLoader_cCallBufferFillCallback
+(JNIEnv *env, jclass cls, jobject capi, jlong fptr, jbyteArray receiver,
jbyteArray position, jint padding) {
+ registerThread(env, capi);
+ int ok;
+ GNUNET_ASSERT(fptr != 0 && receiver != NULL && position != NULL);
+ char * areceiver = (*env)->GetByteArrayElements(env, receiver, NULL);
+ GNUNET_ASSERT(areceiver != NULL);
+ char * aposition = (*env)->GetByteArrayElements(env, position, NULL);
+ GNUNET_ASSERT(aposition != NULL);
+ ok = ((BufferFillCallback) (void*) (long)fptr)((PeerIdentity *) areceiver,
(void *) aposition, (unsigned int) padding);
+ (*env)->ReleaseByteArrayElements(env, receiver, areceiver, 0);
+ (*env)->ReleaseByteArrayElements(env, position, aposition, 0);
+ unregisterThread();
+ return (jint) ok;
+}
+
+JNIEXPORT void JNICALL
Java_org_gnu_freeway_server_CPluginLoader_cCallClientExitHandler
+(JNIEnv *env, jclass cls, jobject capi, jlong fptr, jobject client) {
+ registerThread(env, capi);
+ GNUNET_ASSERT(fptr != 0 && client != NULL);
+ ((ClientExitHandler) (void*) (long)fptr)((ClientHandle) client);
+ unregisterThread();
+}
Modified: freeway/native/org_gnu_freeway_server_CPluginLoader.h
===================================================================
--- freeway/native/org_gnu_freeway_server_CPluginLoader.h 2006-08-20
22:55:49 UTC (rev 3277)
+++ freeway/native/org_gnu_freeway_server_CPluginLoader.h 2006-08-21
00:59:43 UTC (rev 3278)
@@ -26,10 +26,10 @@
/*
* Class: org_gnu_freeway_server_CPluginLoader
* Method: cInitUtil
- * Signature: ([Ljava/lang/String;Lorg/gnu/freeway/server/CoreAPI;)I
+ * Signature: ([Ljava/lang/String;ILorg/gnu/freeway/server/CoreAPI;)I
*/
JNIEXPORT jint JNICALL Java_org_gnu_freeway_server_CPluginLoader_cInitUtil
- (JNIEnv *, jclass, jobjectArray, jobject);
+ (JNIEnv *, jclass, jobjectArray, jint, jobject);
/*
* Class: org_gnu_freeway_server_CPluginLoader
@@ -79,6 +79,30 @@
JNIEXPORT jint JNICALL Java_org_gnu_freeway_server_CPluginLoader_cCallP2PHandle
(JNIEnv *, jclass, jobject, jlong, jbyteArray, jbyteArray);
+/*
+ * Class: org_gnu_freeway_server_CPluginLoader
+ * Method: cCallPerNodeCallback
+ * Signature: (Lorg/gnu/freeway/server/CoreAPI;J[BJ)V
+ */
+JNIEXPORT void JNICALL
Java_org_gnu_freeway_server_CPluginLoader_cCallPerNodeCallback
+ (JNIEnv *, jclass, jobject, jlong, jbyteArray, jlong);
+
+/*
+ * Class: org_gnu_freeway_server_CPluginLoader
+ * Method: cCallBufferFillCallback
+ * Signature: (Lorg/gnu/freeway/server/CoreAPI;J[B[BI)I
+ */
+JNIEXPORT jint JNICALL
Java_org_gnu_freeway_server_CPluginLoader_cCallBufferFillCallback
+ (JNIEnv *, jclass, jobject, jlong, jbyteArray, jbyteArray, jint);
+
+/*
+ * Class: org_gnu_freeway_server_CPluginLoader
+ * Method: cCallClientExitHandler
+ * Signature:
(Lorg/gnu/freeway/server/CoreAPI;JLorg/gnu/freeway/util/net/CSSession;)V
+ */
+JNIEXPORT void JNICALL
Java_org_gnu_freeway_server_CPluginLoader_cCallClientExitHandler
+ (JNIEnv *, jclass, jobject, jlong, jobject);
+
#ifdef __cplusplus
}
#endif
Modified: freeway/native/tcpserver.c
===================================================================
--- freeway/native/tcpserver.c 2006-08-20 22:55:49 UTC (rev 3277)
+++ freeway/native/tcpserver.c 2006-08-21 00:59:43 UTC (rev 3278)
@@ -151,3 +151,81 @@
fprintf(stderr, "leaving unregisterClientHandler\n");
return convCIntToInt(jret, env);
}
+
+int registerClientExitHandler(ClientExitHandler callback) {
+ fprintf(stderr, "in registerClientExitHandler\n");
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jclass handleClazz;
+ jobject jcallback;
+ jmethodID newHandle;
+ jmethodID method;
+ jobject jret;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ handleClazz = (*env)->FindClass(env,
"org/gnu/freeway/server/CPluginLoader$Handle");
+ GNUNET_ASSERT(handleClazz != NULL);
+ newHandle = (*env)->GetMethodID(env, handleClazz, "<init>", "(J)V");
+ GNUNET_ASSERT(newHandle != NULL);
+ method = (*env)->GetMethodID(env, capiClazz, "registerClientExitHandler",
"(Lorg/gnu/freeway/server/CPluginLoader$Handle;)Lorg/gnu/freeway/cwrappers/CInt;");
+ GNUNET_ASSERT(method != NULL);
+ jcallback = (*env)->NewObject(env, handleClazz, newHandle, (jlong) (long)
callback);
+ GNUNET_ASSERT(jcallback != NULL);
+ jret = (*env)->CallObjectMethod(env, t->jcapi, method, jcallback);
+ GNUNET_ASSERT(jret != NULL);
+fprintf(stderr, "leaving registerClientExitHandler\n");
+ return convCIntToInt(jret, env);
+}
+
+int unregisterClientExitHandler(ClientExitHandler callback) {
+ fprintf(stderr, "in unregisterClientExitHandler\n");
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jclass handleClazz;
+ jobject jcallback;
+ jmethodID newHandle;
+ jmethodID method;
+ jobject jret;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ handleClazz = (*env)->FindClass(env,
"org/gnu/freeway/server/CPluginLoader$Handle");
+ GNUNET_ASSERT(handleClazz != NULL);
+ newHandle = (*env)->GetMethodID(env, handleClazz, "<init>", "(J)V");
+ GNUNET_ASSERT(newHandle != NULL);
+ method = (*env)->GetMethodID(env, capiClazz, "unregisterClientExitHandler",
"(Lorg/gnu/freeway/server/CPluginLoader$Handle;)Lorg/gnu/freeway/cwrappers/CInt;");
+ GNUNET_ASSERT(method != NULL);
+ jcallback = (*env)->NewObject(env, handleClazz, newHandle, (jlong) (long)
callback);
+ GNUNET_ASSERT(jcallback != NULL);
+ jret = (*env)->CallObjectMethod(env, t->jcapi, method, jcallback);
+ GNUNET_ASSERT(jret != NULL);
+fprintf(stderr, "leaving unregisterClientExitHandler\n");
+ return convCIntToInt(jret, env);
+}
+
+void terminateClientConnection(ClientHandle handle) {
+ fprintf(stderr, "in terminiateClientConnection\n");
+ ActiveThreadList * t;
+ JNIEnv * env;
+ jclass capiClazz;
+ jmethodID method;
+
+ t = findThread();
+ env = t->env;
+ GNUNET_ASSERT(env != NULL);
+ capiClazz = (*env)->GetObjectClass(env, t->jcapi);
+ GNUNET_ASSERT(capiClazz != NULL);
+ method = (*env)->GetMethodID(env, capiClazz, "terminiateClientConnection",
"(Lorg/gnu/freeway/util/net/CSSession;)V");
+ GNUNET_ASSERT(method != NULL);
+ (*env)->CallVoidMethod(env, t->jcapi, method, handle);
+ fprintf(stderr, "leaving unregisterClientExitHandler\n");
+}
Modified: freeway/native/tcpserver.h
===================================================================
--- freeway/native/tcpserver.h 2006-08-20 22:55:49 UTC (rev 3277)
+++ freeway/native/tcpserver.h 2006-08-21 00:59:43 UTC (rev 3278)
@@ -33,3 +33,9 @@
int registerClientHandler(unsigned short type, CSHandler callback);
int unregisterClientHandler(unsigned short type, CSHandler callback);
+
+int registerClientExitHandler(ClientExitHandler callback);
+
+int unregisterClientExitHandler(ClientExitHandler callback);
+
+void terminateClientConnection(ClientHandle handle);
Modified: freeway/native/util.c
===================================================================
--- freeway/native/util.c 2006-08-20 22:55:49 UTC (rev 3277)
+++ freeway/native/util.c 2006-08-21 00:59:43 UTC (rev 3278)
@@ -36,9 +36,10 @@
static ModuleList * modules;
static ActiveThreadList * threads;
+static JavaVM * jvm;
+
Mutex modulesLock;
Mutex threadsLock;
-static JavaVM * jvm;
/**
* checks if the specified module is already loaded
@@ -311,6 +312,38 @@
return (*env)->NewObject(env, classCInt, method, input);
}
+int convCUIntToUInt(jobject input, JNIEnv * env) {
+fprintf(stderr, "in convCUIntToUInt\n");
+ jclass classCInt;
+ jmethodID method;
+
+ if(input == NULL)
+ return 0;
+ classCInt = (*env)->FindClass(env, "org/gnu/freeway/cwrappers/CUnsignedInt");
+ if(classCInt == NULL)
+ return 0;
+ method = (*env)->GetMethodID(env, classCInt, "getValue", "()J");
+ if(method == NULL)
+ return 0;
+fprintf(stderr, "leaving convCUIntToUInt\n");
+ return (unsigned int) (*env)->CallLongMethod(env, input, method);
+}
+
+jobject convUIntToCUInt(unsigned int input, JNIEnv * env) {
+fprintf(stderr, "in convUIntToCUInt\n");
+ jclass classCInt;
+ jmethodID method;
+
+ classCInt = (*env)->FindClass(env, "org/gnu/freeway/cwrappers/CUnsignedInt");
+ if(classCInt == NULL)
+ return 0;
+ method = (*env)->GetMethodID(env, classCInt, "<init>", "(J)V");
+ if(method == NULL)
+ return 0;
+fprintf(stderr, "leaving convUIntToCUInt\n");
+ return (*env)->NewObject(env, classCInt, method, (long) input);
+}
+
long convCLongToLong(jobject input, JNIEnv * env) {
fprintf(stderr, "in convCLongToLong\n");
jclass classCLong;
Modified: freeway/native/util.h
===================================================================
--- freeway/native/util.h 2006-08-20 22:55:49 UTC (rev 3277)
+++ freeway/native/util.h 2006-08-21 00:59:43 UTC (rev 3278)
@@ -24,6 +24,8 @@
* @author Christian Grothoff
*/
+#ifndef HAVE_UTIL_H
+#define HAVE_UTIL_H 1
#include "jni.h"
#define DSO_PREFIX "libgnunet"
@@ -58,8 +60,8 @@
jobject object;
} PointerObject;
-Mutex modulesLock;
-Mutex threadsLock;
+extern Mutex modulesLock;
+extern Mutex threadsLock;
int hasModule(char * prefix, char * name);
@@ -79,6 +81,10 @@
jobject convIntToCInt(int input, JNIEnv * env);
+int convCUIntToUInt(jobject input, JNIEnv * env);
+
+jobject convUIntToCUInt(unsigned int input, JNIEnv * env);
+
long convCLongToLong(jobject input, JNIEnv * env);
jobject convLongToCLong(long input, JNIEnv * env);
@@ -92,3 +98,4 @@
jobject convJStringToCString(jstring input, JNIEnv * env);
int parseGnunetdCommandLine(int argc, char * argv[]);
+#endif
Modified: freeway/src/org/gnu/freeway/AbstractApplication.java
===================================================================
--- freeway/src/org/gnu/freeway/AbstractApplication.java 2006-08-20
22:55:49 UTC (rev 3277)
+++ freeway/src/org/gnu/freeway/AbstractApplication.java 2006-08-21
00:59:43 UTC (rev 3278)
@@ -45,7 +45,6 @@
services=ServiceManager.getInstance(this);
preferences=new Prefs();
preferences.readConfiguration(daemon);
- statistics=new Statistics();
before=new ArrayList();
addCritical(new AbstractAction("FLUSH-PREFS") {
@@ -72,8 +71,15 @@
public Statistics getStatistics()
{
+ if(statistics == null)
+ startStatistics();
return statistics;
}
+
+ private synchronized void startStatistics() {
+ if(statistics == null)
+ statistics=new Statistics();
+ }
public Service service( Class c )
{
Modified: freeway/src/org/gnu/freeway/AbstractServer.java
===================================================================
--- freeway/src/org/gnu/freeway/AbstractServer.java 2006-08-20 22:55:49 UTC
(rev 3277)
+++ freeway/src/org/gnu/freeway/AbstractServer.java 2006-08-21 00:59:43 UTC
(rev 3278)
@@ -31,11 +31,6 @@
protected AbstractServer( String name, int version )
{
super(name,version,true);
- dispatcher=new MessagesDispatcher();
- //receivedNoiseBytes=getStatistics().getHandle("# bytes of
noise received");
- server=new ClientServer();
-
- keys=new LocalIdentity();
}
public String toString()
@@ -105,30 +100,31 @@
public void beurk0()
{
+ keys=new LocalIdentity();
keys.load(getHome());
}
public void beurk1()
{
+ //receivedNoiseBytes=getStatistics().getHandle("# bytes of
noise received");
+ server=new ClientServer();
+
+ dispatcher=new MessagesDispatcher();
+ dispatcher.init(this);
+
dispatcher.registerP2PHandler(P2PMessage.IS_NOISE,P2PNoise.class,this);
+
server.start(this);
}
public void beurk2()
{
+ dispatcher.unregisterP2PHandler(P2PMessage.IS_NOISE,this);
+ dispatcher.done();
server.stop();
}
public int run( String[] args )
{
- int ret;
-
- dispatcher.init(this);
-
dispatcher.registerP2PHandler(P2PMessage.IS_NOISE,P2PNoise.class,this);
-
- ret=super.run(args);
-
- dispatcher.unregisterP2PHandler(P2PMessage.IS_NOISE,this);
- dispatcher.done();
- return ret;
+ return super.run(args);
}
}
Modified: freeway/src/org/gnu/freeway/GNUNetDaemon.java
===================================================================
--- freeway/src/org/gnu/freeway/GNUNetDaemon.java 2006-08-20 22:55:49 UTC
(rev 3277)
+++ freeway/src/org/gnu/freeway/GNUNetDaemon.java 2006-08-21 00:59:43 UTC
(rev 3278)
@@ -137,11 +137,11 @@
/* init 3b: load application services */
beurk1();
- //service(CoreService.class);
+ service(CoreService.class);
//service(HelloExchangeService.class);
//service(PingPongService.class);
//service(ConnectionService.class);
- //service(StatsService.class);
+ service(StatsService.class);
((CoreService) service(CoreService.class)).loadProtocols();
if (firstStart || download) {
@@ -253,7 +253,7 @@
public static void main( String[] args )
{
//TODO: use args
- CPluginLoader._.initUtil(new String[] {});
+ CPluginLoader._.initUtil(new String[] {}, VERSION);
launch(GNUNetDaemon.class,args);
}
Modified: freeway/src/org/gnu/freeway/server/CPluginLoader.java
===================================================================
--- freeway/src/org/gnu/freeway/server/CPluginLoader.java 2006-08-20
22:55:49 UTC (rev 3277)
+++ freeway/src/org/gnu/freeway/server/CPluginLoader.java 2006-08-21
00:59:43 UTC (rev 3278)
@@ -96,7 +96,7 @@
private static native long cLoadApplicationModule(String protocolName,
CoreAPI capi);
- private static native int cInitUtil(String[] args, CoreAPI capi);
+ private static native int cInitUtil(String[] args, int version, CoreAPI
capi);
private static native Object cCallC(long modulePtr, CoreAPI capi,
int functionOffset, int functionType, Object[]
arguments);
@@ -116,7 +116,7 @@
private static native int cCallCSHandle(CoreAPI capi, long fptr,
CSSession session, byte[] arr);
private static native int cCallP2PHandle(CoreAPI capi, long fptr,
byte[] identity, byte[] arr);
private static native void cCallPerNodeCallback(CoreAPI capi, long
fptr, byte[] identity, long data);
- private static native int cCallBufferFillCallback(CoreAPI capi, long
fptr, byte[] receiver, byte[] buf);
+ private static native int cCallBufferFillCallback(CoreAPI capi, long
fptr, byte[] receiver, byte[] buf, int size);
private static native void cCallClientExitHandler(CoreAPI capi, long
handle, CSSession client);
/**
@@ -151,11 +151,11 @@
* @param args commadline arguments
*/
- public int initUtil(String[] args) {
+ public int initUtil(String[] args, int version) {
assert(args != null);
if(!loaded || !CoreAPI._.isReady())
return CoreAPI.SYSERR.getValue();
- return cInitUtil(args, CoreAPI._);
+ return cInitUtil(args, version, CoreAPI._);
}
/**
@@ -279,7 +279,7 @@
}
public int callBufferFillCallback(Handle handle, HostIdentity receiver,
ByteBuffer buf) {
- return cCallBufferFillCallback(CoreAPI._, handle._,
PersistentHelper.toBytes(receiver), buf.array());
+ return cCallBufferFillCallback(CoreAPI._, handle._,
PersistentHelper.toBytes(receiver), buf.array(), 0);
}
public void callClientExitHandler(Handle handle, CSSession client) {
Modified: freeway/src/org/gnu/freeway/server/ClientServer.java
===================================================================
--- freeway/src/org/gnu/freeway/server/ClientServer.java 2006-08-20
22:55:49 UTC (rev 3277)
+++ freeway/src/org/gnu/freeway/server/ClientServer.java 2006-08-21
00:59:43 UTC (rev 3278)
@@ -280,7 +280,7 @@
return false;
}
- if (handlers.get(type)!=hd || (hd instanceof
NativeCallback && ((NativeCallback) hd).equals(handlers.get(type)))) {
+ if (handlers.get(type)==hd || (hd instanceof
NativeCallback && ((NativeCallback) hd).equals(handlers.get(type)))) {
handlers.set(type,null);
return true;
}
Modified: freeway/src/org/gnu/freeway/server/CoreAPI.java
===================================================================
--- freeway/src/org/gnu/freeway/server/CoreAPI.java 2006-08-20 22:55:49 UTC
(rev 3277)
+++ freeway/src/org/gnu/freeway/server/CoreAPI.java 2006-08-21 00:59:43 UTC
(rev 3278)
@@ -25,6 +25,7 @@
import java.util.ArrayList;
import java.util.Iterator;
import org.gnu.freeway.Server;
+import org.gnu.freeway.services.StatsService;
import org.gnu.freeway.transport.MessagePack;
import org.gnu.freeway.transport.Session;
import org.gnu.freeway.util.NativeService;
@@ -46,7 +47,9 @@
private CoreService serviceCore = null;
public boolean isReady() {
- return protocolCore != null && transportCore != null &&
serviceCore != null;
+ if(protocolCore == null || transportCore == null || serviceCore
== null)
+ System.err.println("warning: CoreAPI may not be
ready.");
+ return true;
}
public void setProtocolCore(CoreForProtocol cfp) {
@@ -72,9 +75,6 @@
private final static String DSO_PREFIX = "libgnunet";
- public CUnsignedInt version;
- public CHostIdentity myIdentity;
-
private ArrayList shutdownList;
public CInt loadApplicationModule(CString name) {
@@ -116,7 +116,7 @@
return OK;
}
- public CInt sendPlaintext(Session session, CString msg, CUnsignedInt
size) {
+ public CInt sendPlaintext(Session session, byte[] msg) {
return SYSERR; //TODO
}
Modified: freeway/src/org/gnu/freeway/util/LoggedObject.java
===================================================================
--- freeway/src/org/gnu/freeway/util/LoggedObject.java 2006-08-20 22:55:49 UTC
(rev 3277)
+++ freeway/src/org/gnu/freeway/util/LoggedObject.java 2006-08-21 00:59:43 UTC
(rev 3278)
@@ -57,6 +57,9 @@
protected void debug( Level level, String str )
{
+ //System.err.println("(DEBUG) " + str);
+ //if(true)
+ // return;
if (debug) {
log(level,"(DEBUG) "+str);
}
@@ -84,6 +87,10 @@
protected void err( String str, Throwable x )
{
+ System.err.println(str);
+ x.printStackTrace();
+ if(true)
+ return;
LogRecord rec;
rec=new LogRecord(Level.SEVERE,str);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r3278 - in freeway: . native src/org/gnu/freeway src/org/gnu/freeway/server src/org/gnu/freeway/util,
mdonoughe <=