diff --git a/p2pproxy/.classpath b/p2pproxy/.classpath
index 49212745e..d4307deff 100644
--- a/p2pproxy/.classpath
+++ b/p2pproxy/.classpath
@@ -11,6 +11,7 @@
+
diff --git a/p2pproxy/.project b/p2pproxy/.project
index 67cec9a6f..fbea50776 100644
--- a/p2pproxy/.project
+++ b/p2pproxy/.project
@@ -14,4 +14,11 @@
org.eclipse.jdt.core.javanature
+
+
+ jni_src
+ 2
+ jni_src
+
+
diff --git a/p2pproxy/build.xml b/p2pproxy/build.xml
index 530f12192..3baab9453 100644
--- a/p2pproxy/build.xml
+++ b/p2pproxy/build.xml
@@ -17,6 +17,7 @@
+
@@ -44,7 +45,16 @@
-
+
+
+
+
+
+
+
+
+
+
diff --git a/p2pproxy/launcher/Debug/src/p2pproxy_wrap.d b/p2pproxy/launcher/Debug/src/p2pproxy_wrap.d
new file mode 100644
index 000000000..d37522418
--- /dev/null
+++ b/p2pproxy/launcher/Debug/src/p2pproxy_wrap.d
@@ -0,0 +1,7 @@
+src/p2pproxy_wrap.d src/p2pproxy_wrap.o: ../src/p2pproxy_wrap.c \
+ /usr/lib/jvm/java-6-openjdk/include/jni.h \
+ /usr/lib/jvm/java-6-openjdk/include/jni_md.h
+
+/usr/lib/jvm/java-6-openjdk/include/jni.h:
+
+/usr/lib/jvm/java-6-openjdk/include/jni_md.h:
diff --git a/p2pproxy/launcher/Debug/src/subdir.mk b/p2pproxy/launcher/Debug/src/subdir.mk
index 839cd1d90..6246aeb1d 100644
--- a/p2pproxy/launcher/Debug/src/subdir.mk
+++ b/p2pproxy/launcher/Debug/src/subdir.mk
@@ -5,15 +5,18 @@
# Add inputs and outputs from these tool invocations to the build variables
C_SRCS += \
../src/launcher-tester.c \
-../src/p2pproxy.c
+../src/p2pproxy.c \
+../src/p2pproxy_wrap.c
OBJS += \
./src/launcher-tester.o \
-./src/p2pproxy.o
+./src/p2pproxy.o \
+./src/p2pproxy_wrap.o
C_DEPS += \
./src/launcher-tester.d \
-./src/p2pproxy.d
+./src/p2pproxy.d \
+./src/p2pproxy_wrap.d
# Each subdirectory must supply rules for building sources it contributes
diff --git a/p2pproxy/launcher/src/p2pproxy.c b/p2pproxy/launcher/src/p2pproxy.c
index eacba8d21..eca006137 100644
--- a/p2pproxy/launcher/src/p2pproxy.c
+++ b/p2pproxy/launcher/src/p2pproxy.c
@@ -13,13 +13,14 @@
#endif
JNIEnv* p2pproxy_application_jnienv = 0;
JavaVM* p2pproxy_application_jvm = 0;
+jclass p2pproxy_proxy_main_class = 0;
int p2pproxy_application_start(int argc, char **argv) {
JavaVMInitArgs args;
JavaVMOption options[7];
jint res=-1;
- jclass lP2pProxyMainClass;
+ jclass lP2pProxyMainClass=0;
jmethodID mainMethod;
jobjectArray applicationArgsList;
jstring applicationArg;
@@ -56,13 +57,13 @@ int p2pproxy_application_start(int argc, char **argv) {
return P2PPROXY_ERROR;
}
- lP2pProxyMainClass = (*p2pproxy_application_jnienv)->FindClass(p2pproxy_application_jnienv, "org/linphone/p2pproxy/core/P2pProxyMain");
+ p2pproxy_proxy_main_class = (*p2pproxy_application_jnienv)->FindClass(p2pproxy_application_jnienv, "org/linphone/p2pproxy/core/P2pProxyMain");
if (lP2pProxyMainClass == 0) {
fprintf(stderr,"cannot find class org/linphone/p2pproxy/core/P2pProxyMain");
return P2PPROXY_ERROR;
}
- mainMethod = (*p2pproxy_application_jnienv)->GetStaticMethodID(p2pproxy_application_jnienv, lP2pProxyMainClass, "main", "([Ljava/lang/String;)V");
+ mainMethod = (*p2pproxy_application_jnienv)->GetStaticMethodID(p2pproxy_application_jnienv, p2pproxy_proxy_main_class, "main", "([Ljava/lang/String;)V");
applicationArgsList = (*p2pproxy_application_jnienv)->NewObjectArray(p2pproxy_application_jnienv, argc, (*p2pproxy_application_jnienv)->FindClass(p2pproxy_application_jnienv, "java/lang/String"), NULL);
@@ -72,7 +73,7 @@ int p2pproxy_application_start(int argc, char **argv) {
}
- (*p2pproxy_application_jnienv)->CallStaticVoidMethod(p2pproxy_application_jnienv, lP2pProxyMainClass, mainMethod, applicationArgsList);
+ (*p2pproxy_application_jnienv)->CallStaticVoidMethod(p2pproxy_application_jnienv, p2pproxy_proxy_main_class, mainMethod, applicationArgsList);
return P2PPROXY_NO_ERROR;
}
@@ -84,27 +85,34 @@ const char* p2pproxy_status_string(int status_code) {
int p2pproxy_accountmgt_createAccount(const char* user_name) {
- return P2PPROXY_ERROR;
+ jmethodID createAccountMethod;
+ jstring applicationArg;
+
+ createAccountMethod = (*p2pproxy_application_jnienv)->GetStaticMethodID(p2pproxy_application_jnienv, p2pproxy_proxy_main_class, "createAccount", "([java/lang/String;)I");
+ applicationArg = (*p2pproxy_application_jnienv)->NewStringUTF(p2pproxy_application_jnienv, user_name);
+ return (*p2pproxy_application_jnienv)->CallStaticIntMethod(p2pproxy_application_jnienv, p2pproxy_proxy_main_class, createAccountMethod, applicationArg);
}
int p2pproxy_accountmgt_isValidAccount(const char* user_name) {
- return P2PPROXY_ERROR;
+ jmethodID isValidAccountMethod;
+ jstring applicationArg;
+
+ isValidAccountMethod = (*p2pproxy_application_jnienv)->GetStaticMethodID(p2pproxy_application_jnienv, p2pproxy_proxy_main_class, "isValidAccount", "([java/lang/String;)I");
+ applicationArg = (*p2pproxy_application_jnienv)->NewStringUTF(p2pproxy_application_jnienv, user_name);
+ return (*p2pproxy_application_jnienv)->CallStaticIntMethod(p2pproxy_application_jnienv, p2pproxy_proxy_main_class, isValidAccountMethod, applicationArg);
}
int p2pproxy_accountmgt_deleteAccount(const char* user_name) {
- return P2PPROXY_ERROR;
-}
-
-jobject p2pproxy_get_accountmgt() {
- jclass lP2pProxyMainClass;
- jmethodID getAccountMgtMethod;
-
- lP2pProxyMainClass = (*p2pproxy_application_jnienv)->FindClass(p2pproxy_application_jnienv, "org/linphone/p2pproxy/core/P2pProxyMain");
- getAccountMgtMethod = (*p2pproxy_application_jnienv)->GetStaticMethodID(p2pproxy_application_jnienv, lP2pProxyMainClass, "getAccountManager", "(V)Lorg/linphone/p2pproxy/core/P2pProxyAccountManagementMBean");
-
+ jmethodID deleteAccountMethod;
+ jstring applicationArg;
+ deleteAccountMethod = (*p2pproxy_application_jnienv)->GetStaticMethodID(p2pproxy_application_jnienv, p2pproxy_proxy_main_class, "deleteAccount", "([java/lang/String;)I");
+ applicationArg = (*p2pproxy_application_jnienv)->NewStringUTF(p2pproxy_application_jnienv, user_name);
+ return (*p2pproxy_application_jnienv)->CallStaticIntMethod(p2pproxy_application_jnienv, p2pproxy_proxy_main_class, deleteAccountMethod, applicationArg);
}
+
+
diff --git a/p2pproxy/launcher/src/p2pproxy.h b/p2pproxy/launcher/src/p2pproxy.h
index 2aeb8ea9a..509d7c80f 100644
--- a/p2pproxy/launcher/src/p2pproxy.h
+++ b/p2pproxy/launcher/src/p2pproxy.h
@@ -20,6 +20,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef P2PPROXY_LAUNCHER_H_
#define P2PPROXY_LAUNCHER_H_
+#ifdef SWIG
+%module P2pProxylauncher
+%javaconst(1);
+%include "p2pproxy.h"
+#endif /*SWIG*/
+
#define P2PPROXY_ACCOUNTMGT_USER_EXIST 1
#define P2PPROXY_ACCOUNTMGT_USER_NOT_EXIST 0
@@ -33,6 +39,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define P2PPROXY_ERROR_ACCOUNTMGT_USER_ALREADY_EXIST -4
#define P2PPROXY_ERROR_ACCOUNTMGT_BAD_SIP_URI -5
+#ifndef SWIG
/**
* start p2pproxy application
* blocking call
@@ -46,7 +53,7 @@ int p2pproxy_application_start(int argc, char **argv);
/**
* return the status string corresponding to the status code
*/
-const char* p2pproxy_status_string(int status_code);
+/*const char* p2pproxy_status_string(int status_code);*/
/************************/
/***account management***/
@@ -72,5 +79,7 @@ int p2pproxy_accountmgt_isValidAccount(const char* user_name);
* @return P2PPROXY_NO_ERROR, P2PPROXY_ERROR_APPLICATIONNOTSTARTED
*/
int p2pproxy_accountmgt_deleteAccount(const char* user_name);
-
+
+#endif /*SWIG*/
+
#endif /*P2PPROXY_LAUNCHER_H_*/
diff --git a/p2pproxy/src/org/linphone/p2pproxy/core/P2pProxyMain.java b/p2pproxy/src/org/linphone/p2pproxy/core/P2pProxyMain.java
index 6f404893d..ecb143992 100644
--- a/p2pproxy/src/org/linphone/p2pproxy/core/P2pProxyMain.java
+++ b/p2pproxy/src/org/linphone/p2pproxy/core/P2pProxyMain.java
@@ -38,9 +38,11 @@ import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.linphone.p2pproxy.api.P2pProxyException;
import org.linphone.p2pproxy.api.P2pProxyManagement;
+import org.linphone.p2pproxy.api.P2pProxyUserAlreadyExistException;
import org.linphone.p2pproxy.core.media.rtprelay.RtpRelayService;
import org.linphone.p2pproxy.core.sipproxy.SipProxyRegistrar;
import org.zoolu.sip.provider.SipStack;
+import org.linphone.p2pproxy.launcher.P2pProxylauncherConstants;
public class P2pProxyMain implements P2pProxyMainMBean {
private final static Logger mLog = Logger.getLogger(P2pProxyMain.class);
@@ -366,7 +368,37 @@ public static void staticLoadTraceConfigFile() throws P2pProxyException {
throw new P2pProxyException("enable to load traces",e);
}
}
-public static P2pProxyAccountManagementMBean getAccountManager() {
- return mP2pProxyAccountManagement;
+
+/* p2pproxy.h implementation*/
+
+public static int createAccount(String aUserName) {
+ try {
+ mP2pProxyAccountManagement.createAccount(aUserName);
+ } catch (P2pProxyUserAlreadyExistException e) {
+ return P2pProxylauncherConstants.P2PPROXY_ACCOUNTMGT_USER_EXIST;
+ } catch (P2pProxyException e) {
+ return P2pProxylauncherConstants.P2PPROXY_ERROR;
+ }
+ return P2pProxylauncherConstants.P2PPROXY_NO_ERROR;
+}
+public static int deleteAccount(String aUserName) {
+ try {
+ mP2pProxyAccountManagement.deleteAccount(aUserName);
+ } catch (P2pProxyException e) {
+ return P2pProxylauncherConstants.P2PPROXY_ERROR;
+ }
+ return P2pProxylauncherConstants.P2PPROXY_NO_ERROR;
+
+}
+public static int isValidAccount(String aUserName){
+ try {
+ if (mP2pProxyAccountManagement.isValidAccount(aUserName)) {
+ return P2pProxylauncherConstants.P2PPROXY_ACCOUNTMGT_USER_EXIST;
+ } else {
+ return P2pProxylauncherConstants.P2PPROXY_ACCOUNTMGT_USER_NOT_EXIST;
+ }
+ } catch (P2pProxyException e) {
+ return P2pProxylauncherConstants.P2PPROXY_ERROR;
+ }
}
}
\ No newline at end of file