From 90dd9fe885ba840d1a2b6e39a6259cd6a82143d1 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 17 Sep 2013 19:26:14 +0200 Subject: [PATCH] wrap new publishStateChanged callback to Java --- .../core/tutorials/TutorialBuddyStatus.java | 8 +++++ .../core/tutorials/TutorialChatRoom.java | 8 +++++ .../core/tutorials/TutorialHelloWorld.java | 8 +++++ .../core/tutorials/TutorialRegistration.java | 8 +++++ coreapi/linphonecore_jni.cc | 29 +++++++++++++++++++ .../linphone/core/LinphoneCoreListener.java | 7 +++++ 6 files changed, 68 insertions(+) diff --git a/coreapi/help/java/org/linphone/core/tutorials/TutorialBuddyStatus.java b/coreapi/help/java/org/linphone/core/tutorials/TutorialBuddyStatus.java index af3c7c187..221867898 100644 --- a/coreapi/help/java/org/linphone/core/tutorials/TutorialBuddyStatus.java +++ b/coreapi/help/java/org/linphone/core/tutorials/TutorialBuddyStatus.java @@ -38,6 +38,7 @@ import org.linphone.core.LinphoneCall.State; import org.linphone.core.LinphoneCore.GlobalState; import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.LinphoneFriend.SubscribePolicy; +import org.linphone.core.PublishState; import org.linphone.core.SubscriptionState; /** @@ -272,5 +273,12 @@ public class TutorialBuddyStatus implements LinphoneCoreListener { } + @Override + public void publishStateChanged(LinphoneCore lc, LinphoneEvent ev, + PublishState state) { + // TODO Auto-generated method stub + + } + } diff --git a/coreapi/help/java/org/linphone/core/tutorials/TutorialChatRoom.java b/coreapi/help/java/org/linphone/core/tutorials/TutorialChatRoom.java index e3594970b..371b9af8e 100644 --- a/coreapi/help/java/org/linphone/core/tutorials/TutorialChatRoom.java +++ b/coreapi/help/java/org/linphone/core/tutorials/TutorialChatRoom.java @@ -36,6 +36,7 @@ import org.linphone.core.LinphoneEvent; import org.linphone.core.LinphoneFriend; import org.linphone.core.LinphoneInfoMessage; import org.linphone.core.LinphoneProxyConfig; +import org.linphone.core.PublishState; import org.linphone.core.SubscriptionState; @@ -194,5 +195,12 @@ public class TutorialChatRoom implements LinphoneCoreListener, LinphoneChatMessa } + @Override + public void publishStateChanged(LinphoneCore lc, LinphoneEvent ev, + PublishState state) { + // TODO Auto-generated method stub + + } + } diff --git a/coreapi/help/java/org/linphone/core/tutorials/TutorialHelloWorld.java b/coreapi/help/java/org/linphone/core/tutorials/TutorialHelloWorld.java index c624a9e83..e8ba341ad 100644 --- a/coreapi/help/java/org/linphone/core/tutorials/TutorialHelloWorld.java +++ b/coreapi/help/java/org/linphone/core/tutorials/TutorialHelloWorld.java @@ -36,6 +36,7 @@ import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.LinphoneCall.State; import org.linphone.core.LinphoneCore.GlobalState; import org.linphone.core.LinphoneCore.RegistrationState; +import org.linphone.core.PublishState; import org.linphone.core.SubscriptionState; @@ -198,5 +199,12 @@ public class TutorialHelloWorld implements LinphoneCoreListener { } + @Override + public void publishStateChanged(LinphoneCore lc, LinphoneEvent ev, + PublishState state) { + // TODO Auto-generated method stub + + } + } diff --git a/coreapi/help/java/org/linphone/core/tutorials/TutorialRegistration.java b/coreapi/help/java/org/linphone/core/tutorials/TutorialRegistration.java index 685997f11..98b74656c 100644 --- a/coreapi/help/java/org/linphone/core/tutorials/TutorialRegistration.java +++ b/coreapi/help/java/org/linphone/core/tutorials/TutorialRegistration.java @@ -36,6 +36,7 @@ import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.LinphoneCall.State; import org.linphone.core.LinphoneCore.GlobalState; import org.linphone.core.LinphoneCore.RegistrationState; +import org.linphone.core.PublishState; import org.linphone.core.SubscriptionState; @@ -229,6 +230,13 @@ public class TutorialRegistration implements LinphoneCoreListener { } + @Override + public void publishStateChanged(LinphoneCore lc, LinphoneEvent ev, + PublishState state) { + // TODO Auto-generated method stub + + } + } diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 3b61d7438..0361809a1 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -175,6 +175,7 @@ public: vTable.info_received = infoReceived; vTable.subscription_state_changed=subscriptionStateChanged; vTable.notify_received=notifyReceived; + vTable.publish_state_changed=publishStateChanged; listenerClass = (jclass)env->NewGlobalRef(env->GetObjectClass( alistener)); @@ -227,6 +228,8 @@ public: subscriptionStateId = env->GetMethodID(listenerClass,"subscriptionStateChanged", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Lorg/linphone/core/SubscriptionState;)V"); + publishStateId = env->GetMethodID(listenerClass,"publishStateChanged", + "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Lorg/linphone/core/PublishState;)V"); notifyRecvId = env->GetMethodID(listenerClass,"notifyReceived", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Ljava/lang/String;Lorg/linphone/core/LinphoneContent;)V"); @@ -263,6 +266,9 @@ public: subscriptionStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/SubscriptionState")); subscriptionStateFromIntId = env->GetStaticMethodID(subscriptionStateClass,"fromInt","(I)Lorg/linphone/core/SubscriptionState;"); + publishStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/PublishState")); + publishStateFromIntId = env->GetStaticMethodID(subscriptionStateClass,"fromInt","(I)Lorg/linphone/core/PublishState;"); + subscriptionDirClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/SubscriptionDir")); subscriptionDirFromIntId = env->GetStaticMethodID(subscriptionDirClass,"fromInt","(I)Lorg/linphone/core/SubscriptionDir;"); } @@ -303,6 +309,7 @@ public: jmethodID transferStateId; jmethodID infoReceivedId; jmethodID subscriptionStateId; + jmethodID publishStateId; jmethodID notifyRecvId; jclass globalStateClass; @@ -358,6 +365,9 @@ public: jclass subscriptionStateClass; jmethodID subscriptionStateFromIntId; + jclass publishStateClass; + jmethodID publishStateFromIntId; + jclass subscriptionDirClass; jmethodID subscriptionDirFromIntId; @@ -642,6 +652,25 @@ public: env->DeleteGlobalRef(jevent); } } + static void publishStateChanged(LinphoneCore *lc, LinphoneEvent *ev, LinphonePublishState state){ + JNIEnv *env = 0; + jint result = jvm->AttachCurrentThread(&env,NULL); + jobject jevent; + jobject jstate; + if (result != 0) { + ms_error("cannot attach VM"); + return; + } + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + jevent=lcData->getEvent(env,ev); + jstate=env->CallStaticObjectMethod(lcData->publishStateClass,lcData->publishStateFromIntId,(jint)state); + env->CallVoidMethod(lcData->listener + ,lcData->publishStateId + ,lcData->core + ,jevent + ,jstate + ); + } static void notifyReceived(LinphoneCore *lc, LinphoneEvent *ev, const char *evname, const LinphoneContent *content){ JNIEnv *env = 0; jint result = jvm->AttachCurrentThread(&env,NULL); diff --git a/java/common/org/linphone/core/LinphoneCoreListener.java b/java/common/org/linphone/core/LinphoneCoreListener.java index af5b07b84..60e9e3d59 100644 --- a/java/common/org/linphone/core/LinphoneCoreListener.java +++ b/java/common/org/linphone/core/LinphoneCoreListener.java @@ -148,6 +148,13 @@ public interface LinphoneCoreListener { * @param content content of the NOTIFY request. */ void notifyReceived(LinphoneCore lc, LinphoneEvent ev, String eventName, LinphoneContent content); + /** + * Notifies about outgoing generic publish states. + * @param lc the LinphoneCore + * @param ev a LinphoneEvent representing the publish, typically created by {@link LinphoneCore#publish} + * @param state the publish state + */ + void publishStateChanged(LinphoneCore lc, LinphoneEvent ev, PublishState state); /**< @Deprecated Notifies the application that it should show up * @return */