From 4212cc43b8e44d3fe3168ced0aea7d366e9d46ad Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 12 Dec 2013 11:23:01 +0100 Subject: [PATCH] add jni for contact parameters --- coreapi/linphonecore_jni.cc | 19 ++++++++++-- .../linphone/core/LinphoneProxyConfig.java | 30 +++++++++++++++++-- .../core/LinphoneProxyConfigImpl.java | 18 +++++++++++ 3 files changed, 62 insertions(+), 5 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 9840cc6b1..9773da678 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -1397,10 +1397,25 @@ extern "C" jstring Java_org_linphone_core_LinphoneProxyConfigImpl_getProxy(JNIEn } } extern "C" void Java_org_linphone_core_LinphoneProxyConfigImpl_setContactParameters(JNIEnv* env,jobject thiz,jlong proxyCfg,jstring jparams) { - const char* params = env->GetStringUTFChars(jparams, NULL); + const char* params = jparams ? env->GetStringUTFChars(jparams, NULL) : NULL; linphone_proxy_config_set_contact_parameters((LinphoneProxyConfig*)proxyCfg, params); - env->ReleaseStringUTFChars(jparams, params); + if (jparams) env->ReleaseStringUTFChars(jparams, params); } +extern "C" void Java_org_linphone_core_LinphoneProxyConfigImpl_setContactUriParameters(JNIEnv* env,jobject thiz,jlong proxyCfg,jstring jparams) { + const char* params = jparams ? env->GetStringUTFChars(jparams, NULL) : NULL; + linphone_proxy_config_set_contact_uri_parameters((LinphoneProxyConfig*)proxyCfg, params); + if (jparams) env->ReleaseStringUTFChars(jparams, params); +} +extern "C" jstring Java_org_linphone_core_LinphoneProxyConfigImpl_getContactParameters(JNIEnv* env,jobject thiz,jlong proxyCfg) { + const char* params = linphone_proxy_config_get_contact_parameters((LinphoneProxyConfig*)proxyCfg); + return params ? env->NewStringUTF(params) : NULL; +} +extern "C" jstring Java_org_linphone_core_LinphoneProxyConfigImpl_getContactUriParameters(JNIEnv* env,jobject thiz,jlong proxyCfg) { + const char* params = linphone_proxy_config_get_contact_uri_parameters((LinphoneProxyConfig*)proxyCfg); + return params ? env->NewStringUTF(params) : NULL; +} + + extern "C" jint Java_org_linphone_core_LinphoneProxyConfigImpl_setRoute(JNIEnv* env,jobject thiz,jlong proxyCfg,jstring jroute) { if (jroute != NULL) { const char* route = env->GetStringUTFChars(jroute, NULL); diff --git a/java/common/org/linphone/core/LinphoneProxyConfig.java b/java/common/org/linphone/core/LinphoneProxyConfig.java index 8a5da47a8..90d91e73a 100644 --- a/java/common/org/linphone/core/LinphoneProxyConfig.java +++ b/java/common/org/linphone/core/LinphoneProxyConfig.java @@ -166,10 +166,34 @@ public interface LinphoneProxyConfig { /** - * Sets parameters for the contact - * @param parameters to add + * Set optional contact parameters that will be added to the contact information sent in the registration. + * @param contact_params a string contaning the additional parameters in text form, like "myparam=something;myparam2=something_else" + * + * The main use case for this function is provide the proxy additional information regarding the user agent, like for example unique identifier or android push id. + * As an example, the contact address in the SIP register sent will look like ;android-push-id=43143-DFE23F-2323-FA2232. + **/ + public void setContactParameters(String contact_params); + + /** + * Get the contact's parameters. + * @return */ - public void setContactParameters(String params); + public String getContactParameters(); + + /** + * Set optional contact parameters that will be added to the contact information sent in the registration, inside the URI. + * @param params a string contaning the additional parameters in text form, like "myparam=something;myparam2=something_else" + * + * The main use case for this function is provide the proxy additional information regarding the user agent, like for example unique identifier or apple push id. + * As an example, the contact address in the SIP register sent will look like . + **/ + public void setContactUriParameters(String params); + + /** + * Get the contact's uri parameters. + * @return + */ + public String getContactUriParameters(); /** * Return the international prefix for the given country diff --git a/java/impl/org/linphone/core/LinphoneProxyConfigImpl.java b/java/impl/org/linphone/core/LinphoneProxyConfigImpl.java index 2b304c8c1..9f24dcbe8 100644 --- a/java/impl/org/linphone/core/LinphoneProxyConfigImpl.java +++ b/java/impl/org/linphone/core/LinphoneProxyConfigImpl.java @@ -187,4 +187,22 @@ class LinphoneProxyConfigImpl implements LinphoneProxyConfig { public int getPrivacy() { return getPrivacy(nativePtr); } + + private native String getContactParameters(long ptr); + @Override + public String getContactParameters() { + return getContactParameters(nativePtr); + } + + private native void setContactUriParameters(long ptr, String params); + @Override + public void setContactUriParameters(String params) { + setContactUriParameters(nativePtr,params); + } + + private native String getContactUriParameters(long ptr); + @Override + public String getContactUriParameters() { + return getContactUriParameters(nativePtr); + } }