diff --git a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/StreamApiLow.hpp b/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/StreamApiLow.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h b/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h deleted file mode 100644 index 372d1b8c..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include - - -#ifndef PRIVMXENDPOINT_STREAMSETTINGSJNI_H -#define PRIVMXENDPOINT_STREAMSETTINGSJNI_H - -namespace privmx::wrapper::streams { - struct StreamSettingsJNI : privmx::endpoint::stream::StreamSettings { - public: - StreamSettingsJNI(JNIEnv *env, jobject jstreamSettings); - -// StreamSettingsJNI(JNIEnv *env); - ~StreamSettingsJNI(); - - void onFrame2(JNIEnv *env, jobject a, jobject b, jobject c, jstring d); - - std::optional> OnVideo; -// void OnVideo(JNIEnv *env, jobject a) override; - - void onVideoRemove2(JNIEnv *env, jobject a); - - private: - jobject jstreamSettings; - JavaVM *javaVM; - jclass cls; - }; -}; -#endif //PRIVMXENDPOINT_STREAMSETTINGSJNI_H diff --git a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h b/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h deleted file mode 100644 index 494d90ee..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h +++ /dev/null @@ -1,66 +0,0 @@ -// -// Created by Dawid Jenczewski on 13/02/2025. -// - -#ifndef PRIVMXENDPOINT_WEBRTCINTERFACEJNI_H -#define PRIVMXENDPOINT_WEBRTCINTERFACEJNI_H - -#include "jni.h" -#include - -using namespace privmx::endpoint::stream; - -class WebRTCInterfaceJNI : public WebRTCInterface { -public: - WebRTCInterfaceJNI(JNIEnv *env, jobject jwebRTCInterface); - -// std::string createOfferAndSetLocalDescription() override; -// -// std::string -// createAnswerAndSetDescriptions(const std::string &sdp, const std::string &type) override; -// -// void setAnswerAndSetRemoteDescription(const std::string &sdp, const std::string &type) override; -// -// void close() override; -// -// void updateKeys(const std::vector &keys) override; - - std::string createOfferAndSetLocalDescription(const std::string &streamRoomId) override; - - std::string createAnswerAndSetDescriptions( - const std::string &streamRoomId, - const std::string &sdp, - const std::string &type - ) override; - - void setAnswerAndSetRemoteDescription( - const std::string &streamRoomId, - const std::string &sdp, - const std::string &type - ) override; - - void updateSessionId( - const std::string &streamRoomId, - const int64_t sessionId, - const std::string &connectionType - ) override; - - void close(const std::string &streamRoomId) override; - - void updateKeys( - const std::string &streamRoomId, - const std::vector &keys - ) override; - -//protected: - ~WebRTCInterfaceJNI() override = default; - -private: - jobject jwebRTCInterface; - JavaVM *javaVM; - - JNIEnv *AttachCurrentThreadIfNeeded(); -}; - - -#endif //PRIVMXENDPOINT_WEBRTCINTERFACEJNI_H diff --git a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h b/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h deleted file mode 100644 index 772c19dc..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h +++ /dev/null @@ -1,70 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -//#ifndef PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H -//#define PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H - -#include -#include "privmx/endpoint/wrapper/utils/utils.hpp" -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/stream/Types.hpp" -#include "privmx/endpoint/stream/webrtc/Types.hpp" -#include "privmx/endpoint/stream/StreamApi.hpp" -#include "privmx/endpoint/stream/StreamApiLow.hpp" -#include "privmx/endpoint/stream/WebRTCInterface.hpp" -#include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" - -namespace privmx { - namespace wrapper { - namespace streams { - //Stream - jobject streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c); - - jobject stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c); - - jobject deviceType2Java(JniContextUtils &ctx, privmx::endpoint::stream::DeviceType deviceType_c); - - jobject mediaDevice2Java(JniContextUtils &ctx, privmx::endpoint::stream::MediaDevice mediaDevice_c); - - jobject streamHandle2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamHandle streamHandle_c); - - jobject streamTrackInfo2Java(JniContextUtils &ctx,privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c); - - jobject streamInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamInfo streamInfo_c); - - jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c); - - jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c); - - jobject remoteStreamId2Java(JniContextUtils &ctx, privmx::endpoint::stream::RemoteStreamId remoteStreamId_c); - - jobject frame2Java(JniContextUtils &ctx, privmx::endpoint::stream::Frame &frame_c); - - jobject keyType2Java(JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c); - - jobject key2Java(JniContextUtils &ctx, privmx::endpoint::stream::Key key_c); - - jobject - streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c); - - jobject - stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c); - - jobject - turnCredentials2Java(JniContextUtils &ctx, privmx::endpoint::stream::TurnCredentials turnCredentials_c); - - jobject - sdpWithTypeModel2Java(JniContextUtils &ctx, privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c); - } // streams - } // wrapper -} // privmx - -//#endif //PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H diff --git a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/parser.h b/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/parser.h deleted file mode 100644 index f9421230..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/parser.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -//#ifndef PRIVMX_POCKET_LIB_PARSER_H -//#define PRIVMX_POCKET_LIB_PARSER_H - -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/wrapper/utils/utils.hpp" -#include "privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h" -#include -#include "model_native_initializers.h" - -// streams -privmx::endpoint::stream::DeviceType parseDeviceType(JniContextUtils &ctx, jobject type); - -privmx::endpoint::stream::MediaDevice parseMediaDevice(JniContextUtils &ctx, jobject mediaDevice); - -privmx::endpoint::stream::StreamHandle parseStreamHandle(JniContextUtils &ctx, jobject streamHandle); - -privmx::endpoint::stream::Settings parseSettings(JniContextUtils &ctx, jobject settings); - -privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env, jobject streamSettings); - -privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription); - -//#endif //PRIVMX_POCKET_LIB_PARSER_H diff --git a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp deleted file mode 100644 index 23e1ccd8..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp +++ /dev/null @@ -1,868 +0,0 @@ -#include - -// -// Created by Dawid Jenczewski on 14/02/2025. -// -#include "privmx/endpoint/wrapper/utils/utils.hpp" -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" -#include "privmx/endpoint/wrapper/modules/Connection.h" -#include "privmx/endpoint/wrapper/modules/EventApi.h" - -#include "privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h" -#include -#include "privmx/endpoint/wrapper/streams/parsers/parser.h" - -//#include - -using namespace privmx::endpoint::stream; -using namespace privmx::endpoint; -//using namespace privmx::wrapper; - -StreamApiLow *getStreamApi(JniContextUtils &ctx, jobject streamApiInstance) { - jclass cls = ctx->GetObjectClass(streamApiInstance); - jfieldID apiFID = ctx->GetFieldID(cls, "api", "Ljava/lang/Long;"); - jobject apiLong = ctx->GetObjectField(streamApiInstance, apiFID); - if (apiLong == nullptr) { - throw IllegalStateException("ThreadApi cannot be used"); - } - return (stream::StreamApiLow *) ctx.getObject(apiLong).getLongValue(); -} - -//extern "C" -//JNIEXPORT jobject JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_init( -// JNIEnv *env, -// jobject thiz, -// jobject connection, -// jobject eventApi -//) { -// JniContextUtils ctx(env); -// jobject result; -// -// if (ctx.nullCheck(connection, "Connection") || -// ctx.nullCheck(eventApi, "EventApi")) { -// return nullptr; -// } -// -//// ctx.callResultEndpointApi(&result, [&ctx, &env, &thiz, &connection, &eventApi] { -// auto connection_c = getConnection(env, connection); -// auto eventApi_c = getEventApi(ctx, eventApi); -// auto streamApiLow = stream::StreamApiLow::create( -// *connection_c, -// *eventApi_c -// ); -// auto streamApiLow_ptr = new stream::StreamApiLow(); -// *streamApiLow_ptr = streamApiLow; -// return ctx.long2jLong((jlong) streamApiLow_ptr); -//// }); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_create( - JNIEnv *env, - jclass clazz, - jobject connection, - jobject eventApi -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(connection, "Connection")) { - return nullptr; - } - -// jobject result; -// ctx.callResultEndpointApi(&result, [&ctx, &env, &clazz, &connection, &eventApi] { - jmethodID initMID = ctx->GetMethodID(clazz, "", - "(Ljava/lang/Long;)V"); - auto connection_c = getConnection(env, connection); - auto eventApi_c = getEventApi(env, eventApi); - auto streamApiLow = StreamApiLow::create( - *connection_c, - *eventApi_c - ); - auto *api = new StreamApiLow(); - *api = streamApiLow; - - jobject result = ctx->NewObject( - clazz, - initMID, - ctx.long2jLong((jlong) api) - ); - return result; - -// }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deinit( - JNIEnv *env, - jobject thiz -) { - try { - JniContextUtils ctx(env); - //if null go to catch - auto api = getStreamApi(ctx, thiz); - delete api; - jclass cls = env->GetObjectClass(thiz); - jfieldID apiFID = env->GetFieldID(cls, "api", "Ljava/lang/Long;"); - env->SetObjectField(thiz, apiFID, (jobject) nullptr); - } catch (const IllegalStateException &e) { - env->ThrowNew( - env->FindClass("java/lang/IllegalStateException"), - e.what() - ); - } -} - -extern "C" -JNIEXPORT jstring JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStreamRoom( - JNIEnv *env, - jobject thiz, - jstring context_id, - jobject users, - jobject managers, - jbyteArray public_meta, - jbyteArray private_meta, - jobject policies -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(context_id, "Context ID") || - ctx.nullCheck(users, "Users list") || - ctx.nullCheck(managers, "Managers list") || - ctx.nullCheck(public_meta, "Public meta") || - ctx.nullCheck(private_meta, "Private meta")) { - return nullptr; - } - - jstring result; - ctx.callResultEndpointApi( - &result, - [ - &ctx, - &thiz, - context_id, - &users, - &managers, - &public_meta, - &private_meta, - &policies - ]() { - std::vector users_c = usersToVector( - ctx, - ctx.jObject2jArray(users)); - std::vector managers_c = usersToVector( - ctx, - ctx.jObject2jArray(managers)); - auto container_policies_c = std::optional( - parseContainerPolicy(ctx, policies)); - return ctx->NewStringUTF( - getStreamApi(ctx, thiz)->createStreamRoom( - ctx.jString2string(context_id), - users_c, - managers_c, - core::Buffer::from(ctx.jByteArray2String(public_meta)), - core::Buffer::from(ctx.jByteArray2String(private_meta)), - container_policies_c - ).c_str()); - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_updateStreamRoom( - JNIEnv *env, - jobject thiz, - jstring stream_room_id, - jobject users, - jobject managers, - jbyteArray public_meta, - jbyteArray private_meta, - jlong version, - jboolean force, - jboolean force_generate_new_key, - jobject policies -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream room ID") || - ctx.nullCheck(users, "Users list") || - ctx.nullCheck(managers, "Managers list") || - ctx.nullCheck(public_meta, "Public meta") || - ctx.nullCheck(private_meta, "Private meta")) { - return; - } - ctx.callVoidEndpointApi( - [ - &ctx, - &thiz, - &stream_room_id, - &users, - &managers, - &public_meta, - &private_meta, - &version, - force, - &force_generate_new_key, - &policies - ]() { - std::vector users_c = usersToVector( - ctx, - ctx.jObject2jArray(users)); - std::vector managers_c = usersToVector( - ctx, - ctx.jObject2jArray(managers)); - auto container_policies_c = std::optional( - parseContainerPolicy(ctx, policies)); - getStreamApi(ctx, thiz)->updateStreamRoom( - ctx.jString2string(stream_room_id), - users_c, - managers_c, - core::Buffer::from(ctx.jByteArray2String(public_meta)), - core::Buffer::from(ctx.jByteArray2String(private_meta)), - version, - force == JNI_TRUE, - force_generate_new_key == JNI_TRUE, - container_policies_c - ); - } - ); -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreamRooms( - JNIEnv *env, - jobject thiz, - jstring context_id, - jlong skip, - jlong limit, - jstring sort_order, - jstring last_id, - jstring sort_by // todo - use in this impl. -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(context_id, "Context ID") || - ctx.nullCheck(sort_order, "Sort order")) { - return nullptr; - } - - jobject result; - ctx.callResultEndpointApi( - &result, - [ - &ctx, - &env, - &thiz, - &context_id, - &skip, - &limit, - &sort_order, - &last_id, - &sort_by - ]() { - jclass pagingListCls = env->FindClass( - "com/simplito/java/privmx_endpoint/model/PagingList"); - jmethodID pagingListInitMID = env->GetMethodID( - pagingListCls, "", - "(Ljava/lang/Long;Ljava/util/List;)V"); - jclass arrayCls = env->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = env->GetMethodID(arrayCls, - "", - "()V"); - jmethodID addToArrayMID = env->GetMethodID(arrayCls, - "add", - "(Ljava/lang/Object;)Z"); - auto query = core::PagingQuery(); - query.skip = skip; - query.limit = limit; - query.sortOrder = ctx.jString2string(sort_order); - if (last_id != nullptr) { - query.lastId = ctx.jString2string(last_id); - } - if (sort_by != nullptr) { - query.sortBy = ctx.jString2string(sort_by); - } - - auto streamRooms_c( - getStreamApi(ctx, thiz)->listStreamRooms( - ctx.jString2string(context_id), - query - ) - ); - jobject array = env->NewObject(arrayCls, initArrayMID); - for (auto &streamRoom_c: streamRooms_c.readItems) { - env->CallBooleanMethod(array, - addToArrayMID, - privmx::wrapper::streams::streamRoom2Java( - ctx, streamRoom_c) - ); - } - return ctx->NewObject( - pagingListCls, - pagingListInitMID, - ctx.long2jLong(streamRooms_c.totalAvailable), - array - ); - } - ); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getStreamRoom( - JNIEnv *env, - jobject thiz, - jstring stream_room_id -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { - return nullptr; - } - jobject result; - ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_room_id] { - - return privmx::wrapper::streams::streamRoom2Java( - ctx, - getStreamApi(ctx, thiz)->getStreamRoom( - ctx.jString2string(stream_room_id) - ) - ); - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deleteStreamRoom( - JNIEnv *env, - jobject thiz, - jstring stream_room_id -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { - return; - } - ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id]() { - getStreamApi(ctx, thiz)->deleteStreamRoom( - ctx.jString2string(stream_room_id) - ); - }); -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStream( - JNIEnv *env, - jobject thiz, - jstring stream_room_id - // todo - made changes in arguments -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream room ID")) - return {}; - - jobject result; - ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_room_id] { - - return privmx::wrapper::streams::streamHandle2Java( - ctx, - getStreamApi(ctx, thiz)->createStream( - ctx.jString2string(stream_room_id) - ) - ); - - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_publishStream( - JNIEnv *env, - jobject thiz, - jobject stream_handle - // todo - made changes in arguments -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_handle, "Stream Handle")) - return {}; - - jobject result; - ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_handle] { - - auto result = getStreamApi(ctx, thiz)->publishStream( - parseStreamHandle(ctx, stream_handle) - ); - - return privmx::wrapper::streams::streamPublishResult2Java( - ctx, - result - ); - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_joinStreamRoom( - JNIEnv *env, - jobject thiz, - jstring stream_room_id, - jobject web_rtc - // todo - made changes in arguments -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream room ID") || - ctx.nullCheck(web_rtc, "webRtc")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &env, &thiz, &stream_room_id, &web_rtc]() { - auto webrtc = std::make_shared( - WebRTCInterfaceJNI(env, web_rtc) - ); // todo - protected destructor commented - std::vector streams_id_c; - - getStreamApi(ctx, thiz)->joinStreamRoom( - ctx.jString2string(stream_room_id), - webrtc - ); - }); -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreams( - JNIEnv *env, - jobject thiz, - jstring stream_room_id -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream room ID")) { - return nullptr; - } - - jobject result; - ctx.callResultEndpointApi(&result, [&ctx, &thiz, &env, &stream_room_id] { - jclass arrayCls = env->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = env->GetMethodID(arrayCls, "", "()V"); - jmethodID addToArrayMID = env->GetMethodID(arrayCls, "add", "(Ljava/lang/Object;)Z"); - - auto stream_infos_c = getStreamApi(ctx, thiz)->listStreams( - ctx.jString2string(stream_room_id) - ); - jobject array = env->NewObject(arrayCls, initArrayMID); - for (auto &info_c: stream_infos_c) { - env->CallBooleanMethod( - array, - addToArrayMID, - privmx::wrapper::streams::streamInfo2Java(ctx, info_c) - ); - } - return array; - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unpublishStream( - JNIEnv *env, - jobject thiz, - jobject stream_handle - // todo - made changes in arguments -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_handle, "Stream Handle")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &stream_handle]() { - getStreamApi(ctx, thiz)->unpublishStream( - parseStreamHandle(ctx, stream_handle) - ); - }); -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_leaveStreamRoom( - JNIEnv *env, - jobject thiz, - jstring stream_room_id - // todo - made changes in arguments -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id]() { - getStreamApi(ctx, thiz)->leaveStreamRoom( - ctx.jString2string(stream_room_id) - ); - }); -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getTurnCredentials( - JNIEnv *env, - jobject thiz -) { - JniContextUtils ctx(env); - jobject result; - ctx.callResultEndpointApi(&result, [&ctx, &env, &thiz] { - jclass arrayCls = env->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = env->GetMethodID(arrayCls, "", "()V"); - jmethodID addToArrayMID = env->GetMethodID(arrayCls, "add", "(Ljava/lang/Object;)Z"); - - auto turnCredentialsVector = getStreamApi(ctx, thiz)->getTurnCredentials(); - jobject array = env->NewObject(arrayCls, initArrayMID); - for ( - auto &turnCredentials_c: turnCredentialsVector) { - env->CallBooleanMethod( - array, - addToArrayMID, - privmx::wrapper::streams::turnCredentials2Java(ctx, turnCredentials_c) - ); - } - - return array; - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeFor( - JNIEnv *env, - jobject thiz, - jobject subscription_queries - // todo - made changes in arguments -) { - JniContextUtils ctx(env); - jobject result; - ctx.callResultEndpointApi(&result, [&ctx, &env, &thiz, &subscription_queries] { - jclass arrayListCls = env->FindClass("java/util/ArrayList"); - jmethodID initMID = env->GetMethodID(arrayListCls, "", "()V"); - jmethodID addToListMID = env->GetMethodID(arrayListCls, "add", "(Ljava/lang/Object;)Z"); - - auto subscription_queries_arr = ctx.jObject2jArray(subscription_queries); - auto subscription_queries_c = std::vector(); - - int length = ctx->GetArrayLength(subscription_queries_arr); - for (int i = 0; i < length; i++) { - jobject arrayElement = ctx->GetObjectArrayElement(subscription_queries_arr, i); - subscription_queries_c.push_back(ctx.jString2string((jstring) arrayElement)); - } - - jobject arrayList = env->NewObject(arrayListCls, initMID); - auto subscription_ids_c = getStreamApi(ctx, thiz)->subscribeFor( - subscription_queries_c - ); - - for (auto &id_str: subscription_ids_c) { - jstring java_id_str = ctx->NewStringUTF(id_str.c_str()); - env->CallBooleanMethod( - arrayList, - addToListMID, - java_id_str - ); - } - return arrayList; - - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeFrom( - JNIEnv *env, - jobject thiz, - jobject subscription_ids - // todo - made changes in arguments -) { -//TODO: Add nullchecks - JniContextUtils ctx(env); - if (ctx.nullCheck(subscription_ids, "Subscription ids")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &subscription_ids]() { - auto subscription_ids_arr = ctx.jObject2jArray(subscription_ids); - auto subscription_ids_c = std::vector(); - - int length = ctx->GetArrayLength(subscription_ids_arr); - for (int i = 0; i < length; i++) { - jobject arrayElement = ctx->GetObjectArrayElement(subscription_ids_arr, i); - if (ctx.nullCheck(arrayElement, "Subscription ids array elements")) { - return; - } - subscription_ids_c.push_back(ctx.jString2string((jstring) arrayElement)); - } - - getStreamApi(ctx, thiz)->unsubscribeFrom(subscription_ids_c); - }); -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_keyManagement( - JNIEnv *env, - jobject thiz, - jstring stream_room_id, - jboolean disable - // todo - made changes in arguments - -) { -//TODO: Add nullchecks - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id, &disable]() { - getStreamApi(ctx, thiz)->keyManagement( - ctx.jString2string(stream_room_id), - disable == JNI_TRUE - ); - - }); -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_trickle( - JNIEnv *env, - jobject thiz, - jlong session_id, - jstring candidate_as_json -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(candidate_as_json, "Candidate as JSON")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &session_id, &candidate_as_json]() { - getStreamApi(ctx, thiz)->trickle( - session_id, - ctx.jString2string(candidate_as_json) - ); - }); -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeFromRemoteStreams( - JNIEnv *env, - jobject thiz, - jstring stream_room_id, - jobject subscriptions_to_remove -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID") || - ctx.nullCheck(subscriptions_to_remove, "Subscriptions to remove")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id, &subscriptions_to_remove]() { - auto subscriptions_to_remove_arr = ctx.jObject2jArray(subscriptions_to_remove); - auto subscriptions_to_remove_c = std::vector(); - - int length = ctx->GetArrayLength(subscriptions_to_remove_arr); - for (int i = 0; i < length; i++) { - jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_to_remove_arr, i); - if (ctx.nullCheck(arrayElement, "Subscriptions to remove array elements")) { - return; - } - subscriptions_to_remove_c.push_back( - parseStreamSubscription( - ctx, - arrayElement - ) - ); - } - - getStreamApi(ctx, thiz)->unsubscribeFromRemoteStreams( - ctx.jString2string(stream_room_id), - subscriptions_to_remove_c - ); - }); -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_modifyRemoteStreamsSubscriptions( - JNIEnv *env, - jobject thiz, - jstring stream_room_id, - jobject subscriptions_to_add, - jobject subscriptions_to_remove, - jobject options -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID") || - ctx.nullCheck(subscriptions_to_add, "Subscriptions to add") || - ctx.nullCheck(subscriptions_to_add, "Subscriptions to remove") || - ctx.nullCheck(options, "Options")) { - return; - } - - ctx.callVoidEndpointApi( - [&ctx, &thiz, &stream_room_id, &subscriptions_to_add, &subscriptions_to_remove, &options]() { - auto subscriptions_to_add_arr = ctx.jObject2jArray(subscriptions_to_remove); - auto subscriptions_to_remove_arr = ctx.jObject2jArray(subscriptions_to_remove); - auto subscriptions_to_add_c = std::vector(); - auto subscriptions_to_remove_c = std::vector(); - - int subscriptions_to_add_length = ctx->GetArrayLength(subscriptions_to_add_arr); - int subscriptions_to_remove_length = ctx->GetArrayLength( - subscriptions_to_remove_arr); - - for (int i = 0; i < subscriptions_to_add_length; i++) { - jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_to_add_arr, i); - if (ctx.nullCheck(arrayElement, "Subscriptions to add array elements")) { - return; - } - subscriptions_to_add_c.push_back( - parseStreamSubscription( - ctx, - arrayElement - ) - ); - } - for (int i = 0; i < subscriptions_to_remove_length; i++) { - jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_to_remove_arr, - i); - if (ctx.nullCheck(arrayElement, "Subscriptions to remove array elements")) { - return; - } - subscriptions_to_remove_c.push_back( - parseStreamSubscription( - ctx, - arrayElement - ) - ); - } - - getStreamApi(ctx, thiz)->modifyRemoteStreamsSubscriptions( - ctx.jString2string(stream_room_id), - subscriptions_to_add_c, - subscriptions_to_remove_c, - parseSettings(ctx, options) - ); - }); -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeToRemoteStreams( - JNIEnv *env, - jobject thiz, - jstring stream_room_id, - jobject subscriptions, - jobject options -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID") || - ctx.nullCheck(subscriptions, "Subscriptions") || - ctx.nullCheck(options, "Options")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id, &subscriptions, &options]() { - auto subscriptions_arr = ctx.jObject2jArray(subscriptions); - auto subscriptions_c = std::vector(); - - int length = ctx->GetArrayLength(subscriptions_arr); - for (int i = 0; i < length; i++) { - jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_arr, i); - if (ctx.nullCheck(arrayElement, "Subscriptions array elements")) { - return; - } - subscriptions_c.push_back( - parseStreamSubscription( - ctx, - arrayElement - ) - ); - } - getStreamApi(ctx, thiz)->subscribeToRemoteStreams( - ctx.jString2string(stream_room_id), - subscriptions_c, - parseSettings(ctx, options) - ); - }); -} -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_updateStream( - JNIEnv *env, - jobject thiz, - jobject stream_handle -) { - JniContextUtils ctx(env); - jobject result; - - ctx.callResultEndpointApi( - &result, [ - &ctx, - &env, - &thiz, - &stream_handle - ] { - - auto stream_handle_c = parseStreamHandle(ctx, stream_handle); - auto stream_result = getStreamApi(ctx, thiz)->updateStream( - stream_handle_c - ); - - return privmx::wrapper::streams::streamPublishResult2Java( - ctx, - stream_result - ); - - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.cpp b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.cpp deleted file mode 100644 index e9685892..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.cpp +++ /dev/null @@ -1,166 +0,0 @@ -#include "privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h" -#include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" -#include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h" -#include "privmx/endpoint/wrapper/utils/jniUtils.h" -//#include "../utils.hpp" -//#include "StreamApi.h" -//#include "../jniUtils.h" - -namespace privmx::wrapper::streams { - - StreamSettingsJNI::StreamSettingsJNI( - JNIEnv *env, - jobject jstreamSettings - ) { - jclass jstreamJoinSettingsClass = env->FindClass("java/lang/IllegalArgumentException"); - javaVM = nullptr; - this->jstreamSettings = nullptr; - if (!env->IsInstanceOf(jstreamSettings, jstreamJoinSettingsClass)) { - env->ThrowNew( - env->FindClass("java/lang/IllegalArgumentException"), - "ERROR"); - return; - } - env->GetJavaVM(&this->javaVM); - this->jstreamSettings = env->NewGlobalRef(jstreamSettings); - - - this->OnFrame = [this]( - int64_t a, - int64_t b, - const std::shared_ptr &frame, - const std::string &c - ) { - JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( - javaVM, - privmx::wrapper::jni::getPrivmxCallbackThreadName()); - JniContextUtils ctx(env); - }; - - this->OnVideo = [this](const std::string &a) { - JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( - javaVM, - privmx::wrapper::jni::getPrivmxCallbackThreadName()); - JniContextUtils ctx(env); - }; - - this->OnVideoRemove = [this](const std::string &a) { - JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( - javaVM, - privmx::wrapper::jni::getPrivmxCallbackThreadName()); - JniContextUtils ctx(env); - }; - } - -// void StreamSettingsJNI::StreamSettingsJNI::onVideo2( -// JNIEnv *env, -// jobject a -// ) { -// jclass jstreamSettingsClass = env->GetObjectClass(jstreamSettings); -// jmethodID jverifyMID = env->GetMethodID( -// jstreamSettingsClass, -// "OnVideo", -// "(" -// "Ljava/lang/String;" -// ")V" -// ); -// -// env->CallObjectMethod( -// jstreamSettings, -// jverifyMID, -// a -// ); - } -// -//void StreamSettingsJNI::onFrame2( -// JNIEnv *env, -// jobject a, -// jobject b, -// jobject c, -// jstring d -//) { -// JniContextUtils ctx(env); -// -// jfieldID onFrameFID = ctx->GetFieldID( -// this->cls, -// "OnFrame", -// "Lcom/simplito/java/privmx_endpoint/model/OnFrameCallback;" -// ); -// -// jobject onFrameField = ctx->GetObjectField(streamSettings, onFrameFID); -// jclass onFrameCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/OnFrameCallback"); -// jmethodID onFrameMID = ctx->GetMethodID( -// onFrameCls, -// "run", -// "(" -// "J" -// "J" -// "Lcom/simplito/java/privmx_endpoint/model/OnFrame;" -// "Ljava/lang/String;" -// ")V" -// ); -// -// env->CallVoidMethod( -// onFrameField, -// onFrameMID, -// a, b, c, d -// ); -//} -// -//void StreamSettingsJNI::onVideo2(JNIEnv *env, jobject a) { -// JniContextUtils ctx(env); -// -// jfieldID OnVideoFID = ctx->GetFieldID( -// this->cls, -// "OnVideoFID", -// "Ljava/util/function/Consumer;" -// ); -// -// jobject onVideoField = ctx->GetObjectField(streamSettings, OnVideoFID); -// jclass onVideoCls = ctx->FindClass("java/util/function/Consumer"); -// jmethodID onVideoMID = ctx->GetMethodID(onVideoCls, "accept", "(Ljava/lang/Object;)V"); -// -// env->CallVoidMethod( -// onVideoField, -// onVideoMID, -// a -// ); -//} -// -//void StreamSettingsJNI::onVideoRemove2( -// JNIEnv *env, -// jobject a -//) { -// JniContextUtils ctx(env); -// -// jfieldID OnVideoRemoveFID = ctx->GetFieldID( -// this->cls, -// "OnVideoRemoveFID", -// "Ljava/util/function/Consumer;" -// ); -// -// jobject onVideoField = ctx->GetObjectField(streamSettings, OnVideoRemoveFID); -// jclass onVideoCls = ctx->FindClass("java/util/function/Consumer"); -// jmethodID onVideoMID = ctx->GetMethodID(onVideoCls, "accept", "(Ljava/lang/Object;)V"); -// -// env->CallVoidMethod( -// onVideoField, -// onVideoMID, -// a -// ); -//} -// -//StreamSettingsJNI::~StreamSettingsJNI() { -// if (javaVM != nullptr && streamSettings != nullptr) { -// JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( -// javaVM, -// privmx::wrapper::jni::getPrivmxCallbackThreadName() -// ); -// -//// if (env != nullptr) env->DeleteGlobalRef(streamSettings); -// streamSettings = nullptr; -// javaVM = nullptr; -// } -//} - diff --git a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.cpp b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.cpp deleted file mode 100644 index 8847eafe..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.cpp +++ /dev/null @@ -1,196 +0,0 @@ -// -// Created by Dawid Jenczewski on 13/02/2025. -// - -#include "privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h" -//#include "../../../../../../../../privmx-endpoint/src/main/cpp/model_native_initializers.h" -//#include "../../../../../../../../privmx-endpoint/src/main/cpp/utils.hpp" -#include - -JNIEnv *WebRTCInterfaceJNI::AttachCurrentThreadIfNeeded() { - JNIEnv *jni = nullptr; - jint status = javaVM->GetEnv((void **) &jni, JNI_VERSION_1_6); - //return if current thread is attached - if (jni != nullptr && status == JNI_OK) return jni; - - std::string name( - "WebRTCInterfaceJNI - " + std::to_string( - std::hash{}(std::this_thread::get_id()))); - JavaVMAttachArgs args; - args.version = JNI_VERSION_1_6; - args.name = &name[0]; - args.group = nullptr; -#ifdef _JAVASOFT_JNI_H_ // Oracle's jni.h violates the JNI spec! - void* env = nullptr; -#else - JNIEnv *env = nullptr; -#endif - //TODO: Attached thread should be also detached - if (javaVM->AttachCurrentThread(&env, &args) == JNI_OK) { - return reinterpret_cast(env); - } - return nullptr; -} - -WebRTCInterfaceJNI::WebRTCInterfaceJNI(JNIEnv *env, jobject jwebRTCInterface) { - jclass jwebRTCInterfaceClass = env->FindClass( - "com/simplito/java/privmx_endpoint/modules/stream/WebRTCInterface"); - javaVM = nullptr; - if (!env->IsInstanceOf(jwebRTCInterface, jwebRTCInterfaceClass)) { - env->ThrowNew( - env->FindClass("java/lang/IllegalArgumentException"), - "WebRTCInterfaceJNI::WebRTCInterfaceJNI object must be instance of WebRTCInterface"); - return; - } - env->GetJavaVM(&this->javaVM); - //TODO: Clean this global ref on close() - this->jwebRTCInterface = env->NewGlobalRef(jwebRTCInterface); -} - -//std::string WebRTCInterfaceJNI::createOfferAndSetLocalDescription() { -// JNIEnv *env = AttachCurrentThreadIfNeeded(); -// JniContextUtils ctx(env); -// jclass jwebRTCInterfaceClass = env->GetObjectClass(jwebRTCInterface); -// jmethodID jmethodId = env->GetMethodID( -// jwebRTCInterfaceClass, -// "createOfferAndSetLocalDescription", -// "()Ljava/lang/String;" -// ); -// auto result = (jstring) env->CallObjectMethod(jwebRTCInterface, jmethodId); -// if (result == nullptr) { -// env->ThrowNew( -// env->FindClass("java/lang/NullPointerException"), -// "WebRTCInterfaceJni::createOfferAndSetLocalDescription cannot return null" -// ); -// return {}; -// } -// return ctx.jString2string(result); -//} -// -//std::string WebRTCInterfaceJNI::createAnswerAndSetDescriptions( -// const std::string &sdp, -// const std::string &type -//) { -// JNIEnv *env = AttachCurrentThreadIfNeeded(); -// JniContextUtils ctx(env); -// jclass jwebRTCInterfaceClass = env->GetObjectClass(jwebRTCInterface); -// jmethodID jmethodId = env->GetMethodID( -// jwebRTCInterfaceClass, -// "createAnswerAndSetDescriptions", -// "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"); -// auto result = (jstring) env->CallObjectMethod( -// jwebRTCInterface, -// jmethodId, -// env->NewStringUTF(sdp.c_str()), -// env->NewStringUTF(type.c_str())); -// if (result == nullptr) { -// env->ThrowNew( -// env->FindClass("java/lang/NullPointerException"), -// "WebRTCInterfaceJni::createAnswerAndSetDescriptions cannot return null"); -// return {}; -// } -// return ctx.jString2string(result); -//} -// -//void WebRTCInterfaceJNI::setAnswerAndSetRemoteDescription( -// const std::string &sdp, -// const std::string &type -//) { -// JNIEnv *env = AttachCurrentThreadIfNeeded(); -// JniContextUtils ctx(env); -// jclass jwebRTCInterfaceClass = env->GetObjectClass(jwebRTCInterface); -// jmethodID jmethodId = env->GetMethodID( -// jwebRTCInterfaceClass, -// "setAnswerAndSetRemoteDescription", -// "(Ljava/lang/String;Ljava/lang/String;)V" -// ); -// env->CallVoidMethod( -// jwebRTCInterface, -// jmethodId, -// env->NewStringUTF(sdp.c_str()), -// env->NewStringUTF(type.c_str())); -//} -// -//void WebRTCInterfaceJNI::close() { -// JNIEnv *env = AttachCurrentThreadIfNeeded(); -// jclass jwebRTCInterfaceClass = env->GetObjectClass(jwebRTCInterface); -// jmethodID jmethodId = env->GetMethodID( -// jwebRTCInterfaceClass, -// "close", -// "()V" -// ); -// env->CallVoidMethod(jwebRTCInterface, jmethodId); -//} -// -//void WebRTCInterfaceJNI::updateKeys(const std::vector &keys) { -// JNIEnv *env = AttachCurrentThreadIfNeeded(); -// JniContextUtils ctx(env); -// jclass jwebRTCInterfaceClass = env->GetObjectClass(jwebRTCInterface); -// jmethodID jmethodId = env->GetMethodID( -// jwebRTCInterfaceClass, -// "updateKeys", -// "(Ljava/util/List;)V"); -// jclass arrayCls = env->FindClass("java/util/ArrayList"); -// jmethodID initArrayMID = env->GetMethodID( -// arrayCls, -// "", -// "()V"); -// jobject jKeysArray = env->NewObject(arrayCls, initArrayMID); -// jmethodID addToArrayMID = env->GetMethodID( -// arrayCls, -// "add", -// "(Ljava/lang/Object;)Z"); -// ctx.setClassLoaderFromObject(jwebRTCInterface); -// for (auto &key_c: keys) { -// env->CallBooleanMethod(jKeysArray, -// addToArrayMID, -// privmx::wrapper::key2Java(ctx, key_c)); -// } -// env->CallVoidMethod( -// jwebRTCInterface, -// jmethodId, -// jKeysArray); -//} - -std::string WebRTCInterfaceJNI::createOfferAndSetLocalDescription( - const std::string &streamRoomId -) { - return std::string(); -} - -std::string WebRTCInterfaceJNI::createAnswerAndSetDescriptions( - const std::string &streamRoomId, - const std::string &sdp, - const std::string &type -) { - return std::string(); -} - -void WebRTCInterfaceJNI::setAnswerAndSetRemoteDescription( - const std::string &streamRoomId, - const std::string &sdp, - const std::string &type -) { - -} - -void WebRTCInterfaceJNI::updateSessionId( - const std::string &streamRoomId, - const int64_t sessionId, - const std::string &connectionType -) { - -} - -void WebRTCInterfaceJNI::close( - const std::string &streamRoomId -) { - -} - -void WebRTCInterfaceJNI::updateKeys( - const std::string &streamRoomId, - const std::vector &keys -) { - -} diff --git a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.cpp b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.cpp deleted file mode 100644 index acb00c61..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.cpp +++ /dev/null @@ -1,575 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h" - -namespace privmx { - namespace wrapper { - namespace streams { - - //Streams - jobject keyType2Java(JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c) { - jclass keyTypeClass = ctx.findClass("com/simplito/java/privmx_endpoint/model/KeyType"); - jfieldID caseFieldId = nullptr; - switch (keyType_c) { - case privmx::endpoint::stream::KeyType::LOCAL: - caseFieldId = ctx->GetStaticFieldID( - keyTypeClass, - "LOCAL", - "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); - break; - default: - caseFieldId = ctx->GetStaticFieldID( - keyTypeClass, - "REMOTE", - "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); - break; - } - return ctx->GetStaticObjectField(keyTypeClass, caseFieldId); - } - - jobject key2Java(JniContextUtils &ctx, privmx::endpoint::stream::Key key_c) { - jclass keyCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/Key"); - jmethodID initKeyMID = ctx->GetMethodID( - keyCls, - "", - "(Ljava/lang/String;[BLcom/simplito/java/privmx_endpoint/model/KeyType;)V" - ); - - jbyteArray jKey = ctx->NewByteArray(key_c.key.size()); - ctx->SetByteArrayRegion(jKey, 0, key_c.key.size(), (jbyte *) key_c.key.data()); - - return ctx->NewObject( - keyCls, - initKeyMID, - ctx->NewStringUTF(key_c.keyId.c_str()), - jKey, - keyType2Java(ctx, key_c.type) - ); - } - -// jobject -// streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c) { -// jclass streamRoomCls = ctx.findClass( -// "com/simplito/java/privmx_endpoint/model/StreamRoom"); -// jmethodID initStreamRoomMID = ctx->GetMethodID( -// streamRoomCls, -// "", -// "(" -// "Ljava/lang/String;" //contextId -// "Ljava/lang/String;" //streamRoomId -// "Ljava/lang/Long;" //createDate -// "Ljava/lang/String;" //creator -// "Ljava/lang/Long;" //lastModificationDate -// "Ljava/lang/String;" //lastModifier -// "Ljava/util/List;" //users -// "Ljava/util/List;" //managers -// "Ljava/lang/Long;" //version -// "[B" //publicMeta -// "[B" //privateMeta -// "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy -// "Ljava/lang/Long;" //statusCode -// ")V" -// ); -// -// jclass arrayCls = ctx.findClass("java/util/ArrayList"); -// jmethodID initArrayMID = ctx->GetMethodID( -// arrayCls, -// "", -// "()V"); -// jmethodID addToArrayMID = ctx->GetMethodID( -// arrayCls, -// "add", -// "(Ljava/lang/Object;)Z" -// ); -// jstring contextId = ctx->NewStringUTF(streamRoom_c.contextId.c_str()); -// jstring streamRoomId = ctx->NewStringUTF(streamRoom_c.streamRoomId.c_str()); -// jstring creator = ctx->NewStringUTF(streamRoom_c.creator.c_str()); -// jstring lastModifier = ctx->NewStringUTF(streamRoom_c.lastModifier.c_str()); -// jobject users = ctx->NewObject(arrayCls, initArrayMID); -// jobject managers = ctx->NewObject(arrayCls, initArrayMID); -// jbyteArray publicMeta = ctx->NewByteArray(streamRoom_c.publicMeta.size()); -// jbyteArray privateMeta = ctx->NewByteArray(streamRoom_c.privateMeta.size()); -// ctx->SetByteArrayRegion(publicMeta, 0, streamRoom_c.publicMeta.size(), -// (jbyte *) streamRoom_c.publicMeta.data()); -// ctx->SetByteArrayRegion(privateMeta, 0, streamRoom_c.privateMeta.size(), -// (jbyte *) streamRoom_c.privateMeta.data()); -// for (auto &user: streamRoom_c.users) { -// ctx->CallBooleanMethod(users, -// addToArrayMID, -// ctx->NewStringUTF(user.c_str())); -// } -// for (auto &manager: streamRoom_c.managers) { -// ctx->CallBooleanMethod(managers, -// addToArrayMID, -// ctx->NewStringUTF(manager.c_str())); -// } -// return ctx->NewObject( -// streamRoomCls, -// initStreamRoomMID, -// contextId, -// streamRoomId, -// ctx.long2jLong(streamRoom_c.createDate), -// creator, -// ctx.long2jLong(streamRoom_c.lastModificationDate), -// lastModifier, -// users, -// managers, -// ctx.long2jLong(streamRoom_c.version), -// publicMeta, -// privateMeta, -// containerPolicy2Java(ctx, streamRoom_c.policy), -// ctx.long2jLong(streamRoom_c.statusCode) -// ); -// } - - jobject stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c) { - jclass streamCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/Stream"); - jmethodID initStreamMID = ctx->GetMethodID( - streamCls, - "", - "(" - "Ljava/lang/Long;" //streamId - "Ljava/lang/String;" //userId - ")V" - ); - return ctx->NewObject( - streamCls, - initStreamMID, - ctx.long2jLong(stream_c.streamId), - ctx->NewStringUTF(stream_c.userId.c_str()) - ); - } - - jobject - turnCredentials2Java(JniContextUtils &ctx, - privmx::endpoint::stream::TurnCredentials turnCredentials_c) { - jclass turnCredentialsCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/TurnCredentials"); - jmethodID initTurnCredentialsMID = ctx->GetMethodID( - turnCredentialsCls, - "", - "(" - "Ljava/lang/String;" //url - "Ljava/lang/String;" //username - "Ljava/lang/String;" //password - "Ljava/lang/Long;" //expirationTime - ")V" - ); - return ctx->NewObject( - turnCredentialsCls, - initTurnCredentialsMID, - ctx->NewStringUTF(turnCredentials_c.url.c_str()), - ctx->NewStringUTF(turnCredentials_c.username.c_str()), - ctx->NewStringUTF(turnCredentials_c.password.c_str()), - ctx.long2jLong(turnCredentials_c.expirationTime) - ); - } - - jobject - sdpWithTypeModel2Java(JniContextUtils &ctx, - privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c) { - jclass sdpWithTypeModelCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/SdpWithTypeModel"); - jmethodID initSdpWithTypeModelMID = ctx->GetMethodID( - sdpWithTypeModelCls, - "", - "(" - "Ljava/lang/String;" //url - "Ljava/lang/String;" //username - ")V" - ); - return ctx->NewObject( - sdpWithTypeModelCls, - initSdpWithTypeModelMID, - ctx->NewStringUTF(sdpWithTypeModel_c.sdp.c_str()), - ctx->NewStringUTF(sdpWithTypeModel_c.type.c_str()) - ); - } - - // Stream - jobject streamRoom2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamRoom streamRoom_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamRoom"); - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // contextId - "Ljava/lang/String;" // streamRoomId - "Ljava/lang/Long;" // createDate - "Ljava/lang/String;" // creator - "Ljava/lang/Long;" // lastModificationDate - "Ljava/lang/String;" // lastModifier - "Ljava/util/List;" // users - "Ljava/util/List;" // managers - "Ljava/lang/Long;" // version - "[B" // publicMeta - "[B" // privateMeta - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" // policy - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - ")V" - ); - - jbyteArray publicMeta = ctx->NewByteArray(streamRoom_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(streamRoom_c.privateMeta.size()); - - ctx->SetByteArrayRegion(publicMeta, 0, streamRoom_c.publicMeta.size(), - (jbyte *) streamRoom_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, streamRoom_c.privateMeta.size(), - (jbyte *) streamRoom_c.privateMeta.data()); - - jobject users = vectorTojArray(ctx, streamRoom_c.users, string2jobject); - jobject managers = vectorTojArray(ctx, streamRoom_c.managers, string2jobject); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(streamRoom_c.contextId.c_str()), - ctx->NewStringUTF(streamRoom_c.streamRoomId.c_str()), - ctx.long2jLong(streamRoom_c.createDate), - ctx->NewStringUTF(streamRoom_c.creator.c_str()), - ctx.long2jLong(streamRoom_c.lastModificationDate), - ctx->NewStringUTF(streamRoom_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(streamRoom_c.version), - publicMeta, - privateMeta, - privmx::wrapper::containerPolicy2Java(ctx, streamRoom_c.policy), - ctx.long2jLong(streamRoom_c.statusCode), - ctx.long2jLong(streamRoom_c.schemaVersion) - ); - } - //Stream -// jobject stream2Java( -// JniContextUtils &ctx, -// privmx::endpoint::stream::Stream stream_c -// ) { -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/Stream"); -// -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "(" -// "Ljava/lang/Long;" // streamId -// "Ljava/lang/String;" // userId -// ")V" -// ); -// -// return ctx->NewObject( -// itemCls, -// initItemMID, -// ctx.long2jLong(stream_c.streamId), -// ctx->NewStringUTF(stream_c.userId.c_str()) -// ); -// } - - jobject deviceType2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::DeviceType deviceType_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/DeviceType"); - - jmethodID valuesMID = ctx->GetStaticMethodID(itemCls, "values", - "()[Lcom/simplito/java/privmx_endpoint/model/DeviceType;"); - - jobjectArray enumValues = (jobjectArray) ctx->CallStaticObjectMethod(itemCls, - valuesMID); - - return (jobject) ctx->GetObjectArrayElement(enumValues, (int) deviceType_c); - } - - - jobject mediaDevice2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::MediaDevice mediaDevice_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/MediaDevice"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // name - "Ljava/lang/String;" // id - "Lcom/simplito/java/privmx_endpoint/model/DeviceType;" // type - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(mediaDevice_c.name.c_str()), - ctx->NewStringUTF(mediaDevice_c.id.c_str()), - deviceType2Java(ctx, mediaDevice_c.type) - - ); - } - - jobject streamHandle2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamHandle streamHandle_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamHandle"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // value - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(streamHandle_c) - ); - } - - jobject streamTrackInfo2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamTrackInfo"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // type - "Ljava/lang/Long;" // mindex - "Ljava/lang/String;" // mid - "Ljava/lang/Boolean;" // disabled [optional] - "Ljava/lang/String;" // codec [optional] - "Ljava/lang/String;" // description [optional] - "Ljava/lang/Boolean;" // moderated [optional] - "Ljava/lang/Boolean;" // simulcast [optional] - "Ljava/lang/Boolean;" // talking [optional] - ")V" - ); - - jobject disabled = nullptr; - jobject codec = nullptr; - jobject description = nullptr; - jobject moderated = nullptr; - jobject simulcast = nullptr; - jobject talking = nullptr; - - if (streamTrackInfo_c.disabled.has_value()) { - disabled = ctx.bool2jBoolean(streamTrackInfo_c.disabled.value()); - } - - if (streamTrackInfo_c.codec.has_value()) { - codec = ctx->NewStringUTF(streamTrackInfo_c.codec.value().c_str()); - } - - if (streamTrackInfo_c.description.has_value()) { - description = ctx->NewStringUTF(streamTrackInfo_c.description.value().c_str()); - } - - if (streamTrackInfo_c.moderated.has_value()) { - moderated = ctx.bool2jBoolean(streamTrackInfo_c.moderated.value()); - } - - if (streamTrackInfo_c.simulcast.has_value()) { - simulcast = ctx.bool2jBoolean(streamTrackInfo_c.simulcast.value()); - } - - if (streamTrackInfo_c.talking.has_value()) { - talking = ctx.bool2jBoolean(streamTrackInfo_c.talking.value()); - } - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(streamTrackInfo_c.type.c_str()), - ctx.long2jLong(streamTrackInfo_c.mindex), - ctx->NewStringUTF(streamTrackInfo_c.mid.c_str()), - disabled, - codec, - description, - moderated, - simulcast, - talking - ); - } - - jobject - streamInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamInfo streamInfo_c) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamInfo"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // id - "Ljava/lang/String;" // userId - "Ljava/util/List;" // tracks - "Ljava/lang/Long;" // streamId - "Ljava/lang/String;" // metadata - "Ljava/lang/Boolean;" // dummy - "Ljava/lang/Boolean;" // talking - ")V" - ); - - jobject metadata = nullptr; - jobject dummy = nullptr; - jobject talking = nullptr; - - if (streamInfo_c.metadata.has_value()) { - metadata = ctx->NewStringUTF(streamInfo_c.metadata.value().c_str()); - } - - if (streamInfo_c.dummy.has_value()) { - dummy = ctx.bool2jBoolean(streamInfo_c.dummy.value()); - } - - if (streamInfo_c.talking.has_value()) { - dummy = ctx.bool2jBoolean(streamInfo_c.talking.value()); - } - - jobject tracks = ctx->NewObject(arrayCls, initArrayMID); - for (auto &track: streamInfo_c.tracks) { - - ctx->CallBooleanMethod( - tracks, - addToArrayMID, - streamTrackInfo2Java(ctx, track) - ); - } - - // todo - check null? - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(streamInfo_c.id), - ctx->NewStringUTF(streamInfo_c.userId.c_str()), - tracks, - metadata, - dummy, - talking - ); - - } - jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/PublishedStreamData"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // streamRoomId - "Lcom/simplito/java/privmx_endpoint/model/StreamInfo;" // stream - "Ljava/lang/String;" //userId - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(publishedStreamData_c.streamRoomId.c_str()), - streamInfo2Java(ctx, publishedStreamData_c.stream), - ctx->NewStringUTF(publishedStreamData_c.userId.c_str()) - ); - } - - jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamPublishResult"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Boolean;" // published - "Lcom/simplito/java/privmx_endpoint/model/PublishedStreamData;" // data - ")V" - ); - - jobject data = nullptr; - if (streamPublishResult_c.data.has_value()) { - data = publishedStreamData2Java(ctx, streamPublishResult_c.data.value()); - } - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.bool2jBoolean(streamPublishResult_c.published), - data - ); - } - - - jobject remoteStreamId2Java(JniContextUtils &ctx, - privmx::endpoint::stream::RemoteStreamId remoteStreamId_c) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/RemoteStreamId"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // value - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(remoteStreamId_c) - ); - } - - jobject frame2Java(JniContextUtils &ctx, privmx::endpoint::stream::Frame &frame_c) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Frame"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "()V" - ); - - return ctx->NewObject( - itemCls, - initItemMID - ); - } - } // streams - } // wrapper -} // privmx \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/parser.cpp b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/parser.cpp deleted file mode 100644 index 65c5fe70..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/parser.cpp +++ /dev/null @@ -1,105 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#include "privmx/endpoint/wrapper/parsers/parser.h" - -using namespace privmx::endpoint; - -// streams -privmx::endpoint::stream::DeviceType parseDeviceType(JniContextUtils &ctx, jobject type) { - jclass itemClass = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/DeviceType)"); - jmethodID ordinalMethod = ctx->GetMethodID(itemClass, "ordinal", "()I"); - jint ordinalMID = ctx->CallIntMethod(type, ordinalMethod); - - privmx::endpoint::stream::DeviceType type_c = static_cast(ordinalMID); - - return type_c; -} - -privmx::endpoint::stream::MediaDevice parseMediaDevice(JniContextUtils &ctx, jobject mediaDevice) { - auto result = privmx::endpoint::stream::MediaDevice(); - - jclass mediaDeviceCls = ctx->GetObjectClass(mediaDevice); - jfieldID name = ctx->GetFieldID(mediaDeviceCls, "name", "Ljava/lang/String;"); - jfieldID id = ctx->GetFieldID(mediaDeviceCls, "id", "Ljava/lang/String;"); - jfieldID type = ctx->GetFieldID(mediaDeviceCls, "type", - "Lcom/simplito/java/privmx_endpoint/model/streams/DeviceType;"); - - result.name = ctx.jString2string( - (jstring) ctx->GetObjectField(mediaDevice, name)); - result.id = ctx.jString2string( - (jstring) ctx->GetObjectField(mediaDevice, id)); - result.type = parseDeviceType(ctx, ctx->GetObjectField(mediaDevice, type)); - - return result; -} - -privmx::endpoint::stream::StreamHandle parseStreamHandle( - JniContextUtils &ctx, - jobject streamHandle -) { - jclass streamHandleCls = ctx->GetObjectClass(streamHandle); - jfieldID valueFID = ctx->GetFieldID(streamHandleCls, "value", "Ljava/lang/Long;"); - - return jobject2long(ctx, ctx->GetObjectField(streamHandle, valueFID)); -} - -privmx::endpoint::stream::Settings parseSettings(JniContextUtils &ctx, jobject settings){ - auto result = privmx::endpoint::stream::Settings(); - return result; -} - -privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env,jobject streamSettings){ -// privmx::endpoint::stream::StreamSettings result = privmx::wrapper::streams::StreamSettingsJNI(env, streamSettings);; -// JniContextUtils ctx(env); -// jclass cls = ctx->GetObjectClass(streamSettings); -//// StreamSettingsJNI streamSettingsJni (env, streamSettings); -// -// jfieldID settingsFID = env->GetFieldID( -// env->GetObjectClass(streamSettings), -// "settings", -// "Lcom/simplito/java/privmx_endpoint/model/streams/Settings;" -// ); -// -// jobject jsettings = ctx->GetObjectField(streamSettings, settingsFID); -// -// result.settings = parseSettings(ctx, jsettings); -//// result.OnFrame = streamSettingsJni.OnFrame; -//// result.OnVideo = streamSettingsJni.OnVideo; -//// result.OnVideoRemove = streamSettingsJni.OnVideoRemove; -// -// return result; -} - -privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription){ - privmx::endpoint::stream::StreamSubscription result; - jclass cls = ctx->GetObjectClass(streamSubscription); - jfieldID streamIdFID = ctx->GetFieldID( - ctx->GetObjectClass(streamSubscription), - "streamId", - "J" - ); - - jfieldID trackIdFID = ctx->GetFieldID( - ctx->GetObjectClass(streamSubscription), - "streamTrackId", - "Ljava/lang/String;" - ); - - jobject streamId = ctx->GetObjectField(streamSubscription, streamIdFID); - jobject streamTrackId = ctx->GetObjectField(streamSubscription, trackIdFID); - - result.streamId = jobject2long(ctx, streamId); - if(streamTrackId != nullptr) result.streamTrackId = jobject2string(ctx, streamTrackId); - - return result; -} \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/modules/StreamApi.h b/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/modules/StreamApi.h index 04a5b1ad..3df0ff10 100644 --- a/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/modules/StreamApi.h +++ b/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/modules/StreamApi.h @@ -4,10 +4,10 @@ //#include "../../../../../../../../privmx-endpoint/src/main/cpp/model_native_initializers.h" //#include "../../../../../../../../privmx-endpoint/src/main/cpp/modules/Connection.h" //#include "../../../../../../../../privmx-endpoint/src/main/cpp/modules/EventApi.h" -#include "privmx/endpoint/modules/EventApi.h" -#include "privmx/endpoint/modules/Connection.h" -#include "privmx/endpoint/parsers/model_native_initializers.h" -#include "privmx/endpoint/utils/utils.hpp" +#include "privmx/endpoint/wrapper/modules/EventApi.h" +#include "privmx/endpoint/wrapper/modules/Connection.h" +#include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" +#include "privmx/endpoint/wrapper/utils/utils.hpp" using namespace privmx::endpoint; diff --git a/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h b/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h deleted file mode 100644 index 6e3364db..00000000 --- a/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h +++ /dev/null @@ -1,68 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#ifndef PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H -#define PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H - -#include -#include "privmx/endpoint/wrapper/utils/utils.hpp" -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/stream/Types.hpp" -#include "privmx/endpoint/stream/webrtc/Types.hpp" -#include "privmx/endpoint/stream/StreamApi.hpp" -#include "privmx/endpoint/stream/StreamApiLow.hpp" -#include "privmx/endpoint/stream/WebRTCInterface.hpp" - -namespace privmx { - namespace wrapper { - //Stream - jobject streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c); - - jobject stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c); - - jobject deviceType2Java(JniContextUtils &ctx,privmx::endpoint::stream::DeviceType deviceType_c); - - jobject mediaDevice2Java(JniContextUtils &ctx, privmx::endpoint::stream::MediaDevice mediaDevice_c); - - jobject streamHandle2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamHandle streamHandle_c); - - jobject streamInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamInfo streamInfo_c); - - jobject streamTrackInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c); - - jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c); - - jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c); - - jobject remoteStreamId2Java(JniContextUtils &ctx, privmx::endpoint::stream::RemoteStreamId remoteStreamId_c); - - jobject frame2Java(JniContextUtils &ctx, privmx::endpoint::stream::Frame &frame_c); - - jobject keyType2Java(JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c); - - jobject key2Java(JniContextUtils &ctx, privmx::endpoint::stream::Key key_c); - - jobject - streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c); - - jobject - stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c); - - jobject - turnCredentials2Java(JniContextUtils &ctx, privmx::endpoint::stream::TurnCredentials turnCredentials_c); - - jobject - sdpWithTypeModel2Java(JniContextUtils &ctx, privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c); - - } // wrapper -} // privmx - -#endif //PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H diff --git a/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/parser.h b/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/parser.h deleted file mode 100644 index 9bb18e12..00000000 --- a/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/parser.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#ifndef PRIVMX_POCKET_LIB_PARSER_H -#define PRIVMX_POCKET_LIB_PARSER_H - -#include "utils.hpp" -//#include "modules/StreamSettingsJNI.h" -#include -#include "model_native_initializers.h" - -// streams -privmx::endpoint::stream::DeviceType parseDeviceType(JniContextUtils &ctx, jobject type); - -privmx::endpoint::stream::MediaDevice parseMediaDevice(JniContextUtils &ctx, jobject mediaDevice); - -privmx::endpoint::stream::StreamHandle parseStreamHandle(JniContextUtils &ctx, jobject streamHandle); - -privmx::endpoint::stream::Settings parseSettings(JniContextUtils &ctx, jobject settings); - -privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env, jobject streamSettings); - -privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription); - -#endif //PRIVMX_POCKET_LIB_PARSER_H diff --git a/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/modules/StreamSettingsJNI.cpp b/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/modules/StreamSettingsJNI.cpp index 64075393..2936d0b2 100644 --- a/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/modules/StreamSettingsJNI.cpp +++ b/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/modules/StreamSettingsJNI.cpp @@ -1,6 +1,4 @@ -#include "privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h" #include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" -#include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h" #include "privmx/endpoint/wrapper/utils/jniUtils.h" //#include "../utils.hpp" //#include "StreamApi.h" diff --git a/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/model_native_initializers.cpp b/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/model_native_initializers.cpp deleted file mode 100644 index 8af79e41..00000000 --- a/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/model_native_initializers.cpp +++ /dev/null @@ -1,1959 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#include "privmx/endpoint/wrapper/streams/model_native_initializers.h" -#include "libs/include/privmx/endpoint/stream/Types.hpp" -#include "libs/Darwin/arm64/include/privmx/endpoint/stream/Types.hpp" - -namespace privmx { - namespace wrapper { - - //Core - jobject - itemPolicy2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ItemPolicy itemPolicy - ) { - jclass itemPolicyCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ItemPolicy"); - jmethodID initItemPolicyMID = ctx->GetMethodID( - itemPolicyCls, - "", - "(" - "Ljava/lang/String;" // get - "Ljava/lang/String;" // listMy - "Ljava/lang/String;" // listAll - "Ljava/lang/String;" // create - "Ljava/lang/String;" // update - "Ljava/lang/String;" // delete - ")V" - ); - jstring get = nullptr; - jstring listMy = nullptr; - jstring listAll = nullptr; - jstring create = nullptr; - jstring update = nullptr; - jstring delete_ = nullptr; - if (itemPolicy.get.has_value()) get = ctx->NewStringUTF(itemPolicy.get->c_str()); - if (itemPolicy.listMy.has_value()) - listMy = ctx->NewStringUTF(itemPolicy.listMy->c_str()); - if (itemPolicy.listAll.has_value()) - listAll = ctx->NewStringUTF(itemPolicy.listAll->c_str()); - if (itemPolicy.create.has_value()) - create = ctx->NewStringUTF(itemPolicy.create->c_str()); - if (itemPolicy.update.has_value()) - update = ctx->NewStringUTF(itemPolicy.update->c_str()); - if (itemPolicy.delete_.has_value()) - delete_ = ctx->NewStringUTF(itemPolicy.delete_->c_str()); - return ctx->NewObject( - itemPolicyCls, - initItemPolicyMID, - get, - listMy, - listAll, - create, - update, - delete_ - ); - } - - jobject containerPolicyWithoutItem2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContainerPolicyWithoutItem containerPolicyWithoutItem - ) { - jclass containerPolicyWithoutItemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ContainerPolicyWithoutItem"); - jmethodID initContainerPolicyWithoutItemMID = ctx->GetMethodID( - containerPolicyWithoutItemCls, - "", - "(" - "Ljava/lang/String;" // get - "Ljava/lang/String;" // update - "Ljava/lang/String;" // delete - "Ljava/lang/String;" // updatePolicy - "Ljava/lang/String;" // updaterCanBeRemovedFromManagers - "Ljava/lang/String;" // ownerCanBeRemovedFromManagers - ")V" - ); - jstring get = nullptr; - jstring update = nullptr; - jstring delete_ = nullptr; - jstring updatePolicy = nullptr; - jstring updaterCanBeRemovedFromManagers = nullptr; - jstring ownerCanBeRemovedFromManagers = nullptr; - if (containerPolicyWithoutItem.get.has_value()) { - get = ctx->NewStringUTF(containerPolicyWithoutItem.get->c_str()); - } - if (containerPolicyWithoutItem.update.has_value()) { - update = ctx->NewStringUTF(containerPolicyWithoutItem.update->c_str()); - } - if (containerPolicyWithoutItem.delete_.has_value()) { - delete_ = ctx->NewStringUTF(containerPolicyWithoutItem.delete_->c_str()); - } - if (containerPolicyWithoutItem.updatePolicy.has_value()) { - updatePolicy = ctx->NewStringUTF(containerPolicyWithoutItem.updatePolicy->c_str()); - } - if (containerPolicyWithoutItem.updaterCanBeRemovedFromManagers.has_value()) { - updaterCanBeRemovedFromManagers = ctx->NewStringUTF( - containerPolicyWithoutItem.updaterCanBeRemovedFromManagers->c_str()); - } - if (containerPolicyWithoutItem.ownerCanBeRemovedFromManagers.has_value()) { - ownerCanBeRemovedFromManagers = ctx->NewStringUTF( - containerPolicyWithoutItem.ownerCanBeRemovedFromManagers->c_str()); - } - - return ctx->NewObject( - containerPolicyWithoutItemCls, - initContainerPolicyWithoutItemMID, - get, - update, - delete_, - updatePolicy, - updaterCanBeRemovedFromManagers, - ownerCanBeRemovedFromManagers - ); - } - - jobject containerPolicy2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContainerPolicy containerPolicy - ) { - jclass containerPolicyCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ContainerPolicy"); - jmethodID initContainerPolicyMID = ctx->GetMethodID( - containerPolicyCls, - "", - "(" - "Ljava/lang/String;" // get - "Ljava/lang/String;" // update - "Ljava/lang/String;" // delete - "Ljava/lang/String;" // updatePolicy - "Ljava/lang/String;" // updaterCanBeRemovedFromManagers - "Ljava/lang/String;" // ownerCanBeRemovedFromManagers - "Lcom/simplito/java/privmx_endpoint/model/ItemPolicy;" // item - ")V" - ); - jstring get = nullptr; - jstring update = nullptr; - jstring delete_ = nullptr; - jstring updatePolicy = nullptr; - jstring updaterCanBeRemovedFromManagers = nullptr; - jstring ownerCanBeRemovedFromManagers = nullptr; - jobject itemPolicy = nullptr; - if (containerPolicy.get.has_value()) { - get = ctx->NewStringUTF(containerPolicy.get->c_str()); - } - if (containerPolicy.update.has_value()) { - update = ctx->NewStringUTF(containerPolicy.update->c_str()); - } - if (containerPolicy.delete_.has_value()) { - delete_ = ctx->NewStringUTF(containerPolicy.delete_->c_str()); - } - if (containerPolicy.updatePolicy.has_value()) { - updatePolicy = ctx->NewStringUTF(containerPolicy.updatePolicy->c_str()); - } - if (containerPolicy.updaterCanBeRemovedFromManagers.has_value()) { - updaterCanBeRemovedFromManagers = ctx->NewStringUTF( - containerPolicy.updaterCanBeRemovedFromManagers->c_str()); - } - if (containerPolicy.ownerCanBeRemovedFromManagers.has_value()) { - ownerCanBeRemovedFromManagers = ctx->NewStringUTF( - containerPolicy.ownerCanBeRemovedFromManagers->c_str()); - } - if (containerPolicy.item.has_value()) { - itemPolicy = itemPolicy2Java(ctx, containerPolicy.item.value()); - } - - return ctx->NewObject( - containerPolicyCls, - initContainerPolicyMID, - get, - update, - delete_, - updatePolicy, - updaterCanBeRemovedFromManagers, - ownerCanBeRemovedFromManagers, - itemPolicy - ); - } - - // CollectionItemChange - jobject collectionItemChange2Java( - JniContextUtils &ctx, - privmx::endpoint::core::CollectionItemChange collectionItemChange_c - ) { - jclass collectionItemChangeCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/CollectionItemChange"); - jmethodID initCollectionItemChangeMID = ctx->GetMethodID( - collectionItemChangeCls, - "", - "(" - "Ljava/lang/String;Ljava/lang/String;" // itemId - "Ljava/lang/String;Ljava/lang/String;" // action - ")V" - ); - return ctx->NewObject( - collectionItemChangeCls, - initCollectionItemChangeMID, - ctx->NewStringUTF(collectionItemChange_c.itemId.c_str()), - ctx->NewStringUTF(collectionItemChange_c.action.c_str()) - ); - } - - //Context - jobject context2Java( - JniContextUtils &ctx, - privmx::endpoint::core::Context context_c - ) { - jclass contextCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Context"); - jmethodID initThreadDataMID = ctx->GetMethodID( - contextCls, - "", - "(Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - contextCls, - initThreadDataMID, - ctx->NewStringUTF(context_c.userId.c_str()), - ctx->NewStringUTF(context_c.contextId.c_str()) - ); - } - - // UserWithPubKey - jobject userWithPubKey2Java( - JniContextUtils &ctx, - privmx::endpoint::core::UserWithPubKey userWithPubKey - ) { - jclass userCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/UserWithPubKey"); - jmethodID initUserMID = ctx->GetMethodID( - userCls, - "", - "(Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - userCls, - initUserMID, - ctx->NewStringUTF(userWithPubKey.userId.c_str()), - ctx->NewStringUTF(userWithPubKey.pubKey.c_str()) - ); - } - - // UserWithPubKey - jobject userStatusChange2Java( - JniContextUtils &ctx, - privmx::endpoint::core::UserStatusChange userStatusChange - ) { - jclass userStatusCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/UserStatusChange"); - jmethodID initUserStatusMID = ctx->GetMethodID( - userStatusCls, - "", - "(" - "Ljava/lang/String;" // action - "Ljava/lang/Long;" // timestamp - ")V" - ); - return ctx->NewObject( - userStatusCls, - initUserStatusMID, - ctx->NewStringUTF(userStatusChange.action.c_str()), - ctx.long2jLong(userStatusChange.timestamp) - ); - } - - //UserInfo - jobject userInfo2Java( - JniContextUtils &ctx, - privmx::endpoint::core::UserInfo userInfo - ) { - jclass userInfoCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/UserInfo"); - jmethodID initUserInfoMID = ctx->GetMethodID( - userInfoCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/UserWithPubKey;" // userWithPubKey - "Z" // isActive - "Lcom/simplito/java/privmx_endpoint/model/UserStatusChange;" // lastStatusChange - ")V" - ); - - jobject userStatusChange = userInfo.lastStatusChange.has_value() ? - userStatusChange2Java(ctx, userInfo.lastStatusChange.value()) - : - nullptr; - return ctx->NewObject( - userInfoCls, - initUserInfoMID, - userWithPubKey2Java(ctx, userInfo.user), - (jboolean) userInfo.isActive, - userStatusChange); - } - - // UserWithAction - jobject userWithAction2Java(JniContextUtils &ctx, - privmx::endpoint::core::UserWithAction userWithAction) { - jclass userWithActionCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/UserWithAction"); - jmethodID initUserWithActionMID = ctx->GetMethodID( - userWithActionCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/UserWithPubKey;" // userWithPubKey - "Ljava/lang/String;" // action - ")V" - ); - return ctx->NewObject( - userWithActionCls, - initUserWithActionMID, - userWithPubKey2Java(ctx, userWithAction.user), - ctx->NewStringUTF(userWithAction.action.c_str()) - ); - } - - jobject bridgeIdentity2Java( - JniContextUtils &ctx, - privmx::endpoint::core::BridgeIdentity bridgeIdentity_c - ) { - jclass bridgeIdentityCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/BridgeIdentity"); - jmethodID initBridgeIdentityMID = ctx->GetMethodID( - bridgeIdentityCls, - "", - "(" - "Ljava/lang/String;" - "Ljava/lang/String;" - "Ljava/lang/String;" - ")V" - ); - - jstring pubKey_c = nullptr; - if (bridgeIdentity_c.pubKey.has_value()) { - pubKey_c = ctx->NewStringUTF(bridgeIdentity_c.pubKey.value().c_str()); - } - - jstring instanceId_c = nullptr; - if (bridgeIdentity_c.instanceId.has_value()) { - instanceId_c = ctx->NewStringUTF(bridgeIdentity_c.instanceId.value().c_str()); - } - - return ctx->NewObject( - bridgeIdentityCls, - initBridgeIdentityMID, - ctx->NewStringUTF(bridgeIdentity_c.url.c_str()), - pubKey_c, - instanceId_c - ); - } - - jobject verificationRequest2Java( - JniContextUtils &ctx, - privmx::endpoint::core::VerificationRequest verificationRequest_c - ) { - jclass verificationRequestCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/VerificationRequest"); - jmethodID initVerificationRequestMID = ctx->GetMethodID( - verificationRequestCls, - "", - "(" - "Ljava/lang/String;" - "Ljava/lang/String;" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "Lcom/simplito/java/privmx_endpoint/model/BridgeIdentity;" - ")V" - ); - - jobject bridgeIdentity = nullptr; - if (verificationRequest_c.bridgeIdentity.has_value()) { - bridgeIdentity = bridgeIdentity2Java(ctx, - verificationRequest_c.bridgeIdentity.value()); - } - - return ctx->NewObject( - verificationRequestCls, - initVerificationRequestMID, - ctx->NewStringUTF(verificationRequest_c.contextId.c_str()), - ctx->NewStringUTF(verificationRequest_c.senderId.c_str()), - ctx->NewStringUTF(verificationRequest_c.senderPubKey.c_str()), - ctx.long2jLong(verificationRequest_c.date), - bridgeIdentity - ); - } - - //Crypto - jobject extKey2Java(JniContextUtils &ctx, privmx::endpoint::crypto::ExtKey extKey_c) { - jclass ExtKeyCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/modules/crypto/ExtKey"); - jmethodID initExtKeyMID = ctx->GetMethodID( - ExtKeyCls, "", "(Ljava/lang/Long;)V"); - - auto *key = new privmx::endpoint::crypto::ExtKey(extKey_c); - return ctx->NewObject( - ExtKeyCls, - initExtKeyMID, - ctx.long2jLong((jlong) key)); - } - - jobject BIP392Java(JniContextUtils &ctx, privmx::endpoint::crypto::BIP39_t BIP39_c) { - jclass BIP39Cls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/BIP39"); - jmethodID initBIP39MID = ctx->GetMethodID( - BIP39Cls, - "", - "(" - "Ljava/lang/String;" //mnemonic - "Lcom/simplito/java/privmx_endpoint/modules/crypto/ExtKey;" //Ecc Key - "[B" // BIP-39 entropy - ")V" - ); - jbyteArray entropy = ctx->NewByteArray(BIP39_c.entropy.size()); - ctx->SetByteArrayRegion(entropy, 0, BIP39_c.entropy.size(), - (jbyte *) BIP39_c.entropy.data()); - - return ctx->NewObject( - BIP39Cls, - initBIP39MID, - ctx->NewStringUTF(BIP39_c.mnemonic.c_str()), - extKey2Java(ctx, BIP39_c.ext_key), - entropy - ); - } - - //Threads - jobject thread2Java(JniContextUtils &ctx, privmx::endpoint::thread::Thread thread_c) { - jclass threadCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Thread"); - jmethodID initThreadMID = ctx->GetMethodID( - threadCls, - "", - "(" - "Ljava/lang/String;" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "Ljava/lang/String;" - "Ljava/util/List;" - "Ljava/util/List;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "[B" - "[B" - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - ")V" - ); - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jstring threadId = ctx->NewStringUTF(thread_c.threadId.c_str()); - jstring contextId = ctx->NewStringUTF(thread_c.contextId.c_str()); - jstring creator = ctx->NewStringUTF(thread_c.creator.c_str()); - jstring lastModifier = ctx->NewStringUTF(thread_c.lastModifier.c_str()); - jobject users = ctx->NewObject(arrayCls, initArrayMID); - jobject managers = ctx->NewObject(arrayCls, initArrayMID); - jbyteArray publicMeta = ctx->NewByteArray(thread_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(thread_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, thread_c.publicMeta.size(), - (jbyte *) thread_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, thread_c.privateMeta.size(), - (jbyte *) thread_c.privateMeta.data()); - for (auto &user: thread_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - ctx->NewStringUTF(user.c_str())); - } - for (auto &manager: thread_c.managers) { - ctx->CallBooleanMethod(managers, - addToArrayMID, - ctx->NewStringUTF(manager.c_str())); - } - return ctx->NewObject( - threadCls, - initThreadMID, - contextId, - threadId, - ctx.long2jLong(thread_c.createDate), - creator, - ctx.long2jLong(thread_c.lastModificationDate), - lastModifier, - users, - managers, - ctx.long2jLong(thread_c.version), - ctx.long2jLong(thread_c.lastMsgDate), - publicMeta, - privateMeta, - containerPolicy2Java(ctx, thread_c.policy), - ctx.long2jLong(thread_c.messagesCount), - ctx.long2jLong(thread_c.statusCode), - ctx.long2jLong(thread_c.schemaVersion) - ); - } - - //Messages - jobject serverMessageInfo2Java(JniContextUtils &ctx, - privmx::endpoint::thread::ServerMessageInfo serverMessageInfo_c) { - jclass messageCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ServerMessageInfo"); - jmethodID initMessageMID = ctx->GetMethodID( - messageCls, - "", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;)V" - ); - return ctx->NewObject( - messageCls, - initMessageMID, - ctx->NewStringUTF(serverMessageInfo_c.threadId.c_str()), - ctx->NewStringUTF(serverMessageInfo_c.messageId.c_str()), - ctx.long2jLong(serverMessageInfo_c.createDate), - ctx->NewStringUTF(serverMessageInfo_c.author.c_str()) - ); - } - - jobject message2Java(JniContextUtils &ctx, privmx::endpoint::thread::Message message_c) { - jclass messageCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Message"); - jmethodID initMessageMID = ctx->GetMethodID( - messageCls, - "", - "(Lcom/simplito/java/privmx_endpoint/model/ServerMessageInfo;" - "[B" - "[B" - "[B" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - ")V" - ); - - jbyteArray publicMeta = ctx->NewByteArray(message_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(message_c.privateMeta.size()); - jbyteArray data = ctx->NewByteArray(message_c.data.size()); - ctx->SetByteArrayRegion(publicMeta, 0, message_c.publicMeta.size(), - (jbyte *) message_c.publicMeta.data()); - - ctx->SetByteArrayRegion(privateMeta, 0, message_c.privateMeta.size(), - (jbyte *) message_c.privateMeta.data()); - - ctx->SetByteArrayRegion(data, 0, message_c.data.size(), - (jbyte *) message_c.data.data()); - - return ctx->NewObject( - messageCls, - initMessageMID, - serverMessageInfo2Java(ctx, message_c.info), - publicMeta, - privateMeta, - data, - ctx->NewStringUTF(message_c.authorPubKey.c_str()), - ctx.long2jLong(message_c.statusCode), - ctx.long2jLong(message_c.schemaVersion) - ); - } - - //Store - jobject store2Java(JniContextUtils &ctx, privmx::endpoint::store::Store store_c) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - - jclass storeCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Store"); - jmethodID initStoreMID = ctx->GetMethodID( - storeCls, - "", - "(" - "Ljava/lang/String;" //storeId - "Ljava/lang/String;" //contextId - "Ljava/lang/Long;" //createDate - "Ljava/lang/String;" //creator - "Ljava/lang/Long;" //lastModificationDate - "Ljava/lang/Long;" //lastFileDate - "Ljava/lang/String;" //lastModifier - "Ljava/util/List;" //users - "Ljava/util/List;" //managers - "Ljava/lang/Long;" //version - "[B" //publicMeta - "[B" //privateMeta - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy - "Ljava/lang/Long;" //filesCount - "Ljava/lang/Long;" //statusCode - "Ljava/lang/Long;" //schemaVersion - ")V" - ); - - jobject users = ctx->NewObject(arrayCls, initArrayMID); - jobject managers = ctx->NewObject(arrayCls, initArrayMID); - jbyteArray publicMeta = ctx->NewByteArray(store_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(store_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, store_c.publicMeta.size(), - (jbyte *) store_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, store_c.privateMeta.size(), - (jbyte *) store_c.privateMeta.data()); - for (auto &user: store_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - ctx->NewStringUTF(user.c_str())); - } - for (auto &manager: store_c.managers) { - ctx->CallBooleanMethod(managers, - addToArrayMID, - ctx->NewStringUTF(manager.c_str())); - } - - return ctx->NewObject( - storeCls, - initStoreMID, - ctx->NewStringUTF(store_c.storeId.c_str()), - ctx->NewStringUTF(store_c.contextId.c_str()), - ctx.long2jLong(store_c.createDate), - ctx->NewStringUTF(store_c.creator.c_str()), - ctx.long2jLong(store_c.lastModificationDate), - ctx.long2jLong(store_c.lastFileDate), - ctx->NewStringUTF(store_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(store_c.version), - publicMeta, - privateMeta, - containerPolicy2Java(ctx, store_c.policy), - ctx.long2jLong(store_c.filesCount), - ctx.long2jLong(store_c.statusCode), - ctx.long2jLong(store_c.schemaVersion) - ); - } - - //Inbox - jobject inbox2Java(JniContextUtils &ctx, privmx::endpoint::inbox::Inbox inbox_c) { - jclass inboxCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Inbox"); - jmethodID initInboxMID = ctx->GetMethodID( - inboxCls, - "", - "(" - "Ljava/lang/String;" //inboxId - "Ljava/lang/String;" //contextId - "Ljava/lang/Long;" //createDate - "Ljava/lang/String;" //creator - "Ljava/lang/Long;" //lastModificationDate - "Ljava/lang/String;" //lastModifier - "Ljava/util/List;" //users - "Ljava/util/List;" //managers - "Ljava/lang/Long;" //version - "[B" //publicMeta - "[B" //privateMeta - "Lcom/simplito/java/privmx_endpoint/model/FilesConfig;" //filesConfig - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicyWithoutItem;" //policy - "Ljava/lang/Long;" //statusCode - "Ljava/lang/Long;" //schemaVersion - ")V" - ); - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jobject users = ctx->NewObject(arrayCls, initArrayMID); - jobject managers = ctx->NewObject(arrayCls, initArrayMID); - jbyteArray publicMeta = ctx->NewByteArray(inbox_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(inbox_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, inbox_c.publicMeta.size(), - (jbyte *) inbox_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, inbox_c.privateMeta.size(), - (jbyte *) inbox_c.privateMeta.data()); - for (auto &user: inbox_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - ctx->NewStringUTF(user.c_str())); - } - for (auto &manager: inbox_c.managers) { - ctx->CallBooleanMethod(managers, - addToArrayMID, - ctx->NewStringUTF(manager.c_str())); - } - - jobject filesConfig = nullptr; - if (inbox_c.filesConfig.has_value()) { - filesConfig = filesConfig2Java(ctx, inbox_c.filesConfig.value()); - } - - return ctx->NewObject( - inboxCls, - initInboxMID, - ctx->NewStringUTF(inbox_c.inboxId.c_str()), - ctx->NewStringUTF(inbox_c.contextId.c_str()), - ctx.long2jLong(inbox_c.createDate), - ctx->NewStringUTF(inbox_c.creator.c_str()), - ctx.long2jLong(inbox_c.lastModificationDate), - ctx->NewStringUTF(inbox_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(inbox_c.version), - publicMeta, - privateMeta, - filesConfig, - containerPolicyWithoutItem2Java(ctx, inbox_c.policy), - ctx.long2jLong(inbox_c.statusCode), - ctx.long2jLong(inbox_c.schemaVersion) - ); - } - - jobject - inboxEntry2Java(JniContextUtils &ctx, privmx::endpoint::inbox::InboxEntry inboxEntry_c) { - jclass inboxEntryCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/InboxEntry"); - jmethodID initEntryViewMID = ctx->GetMethodID( - inboxEntryCls, - "", - "(" - "Ljava/lang/String;" //entryId - "Ljava/lang/String;" //inboxId - "[B" //data - "Ljava/util/List;" //files - "Ljava/lang/String;" //authorPubKey - "Ljava/lang/Long;" // createDate - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - ")V" - ); - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jbyteArray data = ctx->NewByteArray(inboxEntry_c.data.size()); - ctx->SetByteArrayRegion(data, 0, inboxEntry_c.data.size(), - (jbyte *) inboxEntry_c.data.data()); - jobject files = ctx->NewObject(arrayCls, initArrayMID); - for (auto &file: inboxEntry_c.files) { - ctx->CallBooleanMethod(files, - addToArrayMID, - file2Java(ctx, file)); - } - return ctx->NewObject( - inboxEntryCls, - initEntryViewMID, - ctx->NewStringUTF(inboxEntry_c.entryId.c_str()), - ctx->NewStringUTF(inboxEntry_c.inboxId.c_str()), - data, - files, - ctx->NewStringUTF(inboxEntry_c.authorPubKey.c_str()), - ctx.long2jLong(inboxEntry_c.createDate), - ctx.long2jLong(inboxEntry_c.statusCode), - ctx.long2jLong(inboxEntry_c.schemaVersion) - ); - } - - jobject inboxPublicView2Java(JniContextUtils &ctx, - privmx::endpoint::inbox::InboxPublicView inboxPublicView_c) { - jclass inboxPublicViewCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/InboxPublicView"); - jmethodID initInboxPublicViewMID = ctx->GetMethodID( - inboxPublicViewCls, - "", - "(" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "[B" - ")V" - ); - jbyteArray publicMeta = ctx->NewByteArray(inboxPublicView_c.publicMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, inboxPublicView_c.publicMeta.size(), - (jbyte *) inboxPublicView_c.publicMeta.data()); - return ctx->NewObject( - inboxPublicViewCls, - initInboxPublicViewMID, - ctx->NewStringUTF(inboxPublicView_c.inboxId.c_str()), - ctx.long2jLong(inboxPublicView_c.version), - publicMeta - ); - } - - jobject - filesConfig2Java(JniContextUtils &ctx, privmx::endpoint::inbox::FilesConfig filesConfig_c) { - jclass filesConfigCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/FilesConfig"); - jmethodID initFilesConfigMID = ctx->GetMethodID( - filesConfigCls, - "", - "(" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - ")V" - ); - return ctx->NewObject( - filesConfigCls, - initFilesConfigMID, - ctx.long2jLong(filesConfig_c.minCount), - ctx.long2jLong(filesConfig_c.maxCount), - ctx.long2jLong(filesConfig_c.maxFileSize), - ctx.long2jLong(filesConfig_c.maxWholeUploadSize) - ); - } - - //Files - jobject serverFileInfo2Java(JniContextUtils &ctx, - privmx::endpoint::store::ServerFileInfo serverFileInfo_c) { - jclass serverFileInfoCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ServerFileInfo"); - jmethodID initServerFileInfoMID = ctx->GetMethodID( - serverFileInfoCls, - "", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;)V" - ); - return ctx->NewObject( - serverFileInfoCls, - initServerFileInfoMID, - ctx->NewStringUTF(serverFileInfo_c.storeId.c_str()), - ctx->NewStringUTF(serverFileInfo_c.fileId.c_str()), - ctx.long2jLong(serverFileInfo_c.createDate), - ctx->NewStringUTF(serverFileInfo_c.author.c_str()) - ); - } - - jobject file2Java(JniContextUtils &ctx, privmx::endpoint::store::File file_c) { - jclass fileCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/File"); - jmethodID initFileMID = ctx->GetMethodID( - fileCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/ServerFileInfo;" // info - "[B" // publicMeta - "[B" // privateMeta - "Ljava/lang/Long;" // size - "Ljava/lang/String;" // authorPubKey - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - "Z" // randomWrite - ")V" - ); - - jbyteArray publicMeta = ctx->NewByteArray(file_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(file_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, file_c.publicMeta.size(), - (jbyte *) file_c.publicMeta.data()); - - ctx->SetByteArrayRegion(privateMeta, 0, file_c.privateMeta.size(), - (jbyte *) file_c.privateMeta.data()); - - return ctx->NewObject( - fileCls, - initFileMID, - serverFileInfo2Java(ctx, file_c.info), - publicMeta, - privateMeta, - ctx.long2jLong(file_c.size), - ctx->NewStringUTF(file_c.authorPubKey.c_str()), - ctx.long2jLong(file_c.statusCode), - ctx.long2jLong(file_c.schemaVersion), - (jboolean) file_c.randomWrite - ); - } - - jobject fileChange2Java( - JniContextUtils &ctx, - privmx::endpoint::store::FileChange file_change_c - ) { - jclass fileChangeCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/FileChange"); - - jmethodID initFcMID = ctx->GetMethodID( - fileChangeCls, - "", - "(" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "Z" - ")V" - ); - - jobject javaPos = ctx.long2jLong(file_change_c.pos); - jobject javaLength = ctx.long2jLong(file_change_c.length); - jboolean javaTruncate = (jboolean) file_change_c.truncate; - - return ctx->NewObject( - fileChangeCls, - initFcMID, - javaPos, - javaLength, - javaTruncate - ); - } - - //Event - jobject contextUsersStatusChangeData2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContextUsersStatusChangedEventData contextUsersStatusChangeData_c - ) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jclass contextUsersStatusChangeDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ContextUsersStatusChangedEventData"); - jmethodID initContextUsersStatusChangeDataMID = ctx->GetMethodID( - contextUsersStatusChangeDataCls, - "", - "(" - "Ljava/lang/String;" // contextId - "Ljava/util/List;" // users - ")V" - ); - - jobject users = ctx->NewObject(arrayCls, initArrayMID); - - for (auto &user: contextUsersStatusChangeData_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - userWithAction2Java(ctx, user) - ); - } - - return ctx->NewObject( - contextUsersStatusChangeDataCls, - initContextUsersStatusChangeDataMID, - ctx->NewStringUTF(contextUsersStatusChangeData_c.contextId.c_str()), - users - ); - } - - jobject contextUserEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContextUserEventData contextUserEventData_c - ) { - jclass contextUserEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ContextUserEventData"); - jmethodID initContextUserEventDataMID = ctx->GetMethodID( - contextUserEventDataCls, - "", - "(" - "Ljava/lang/String;" // contextId - "Lcom/simplito/java/privmx_endpoint/model/UserWithPubKey;" // user - ")V" - ); - - return ctx->NewObject( - contextUserEventDataCls, - initContextUserEventDataMID, - ctx->NewStringUTF(contextUserEventData_c.contextId.c_str()), - userWithPubKey2Java(ctx, contextUserEventData_c.user) - ); - } - - // CollectionChangedEventData - jobject collectionChangedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::core::CollectionChangedEventData collectionChangedEventData_c - ) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jclass collectionChangedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/CollectionChangedEventData"); - jmethodID initCollectionChangedEventDataMID = ctx->GetMethodID( - collectionChangedEventDataCls, - "", - "(" - "Ljava/lang/String;" // moduleType - "Ljava/lang/String;" // moduleId - "Ljava/lang/Long;" // affectedItemsCount - "Ljava/util/List;" // items - ")V" - ); - - jobject items = ctx->NewObject(arrayCls, initArrayMID); - - for (auto &item: collectionChangedEventData_c.items) { - ctx->CallBooleanMethod(items, - addToArrayMID, - collectionItemChange2Java(ctx, item) - ); - } - - return ctx->NewObject( - collectionChangedEventDataCls, - initCollectionChangedEventDataMID, - ctx->NewStringUTF(collectionChangedEventData_c.moduleType.c_str()), - ctx->NewStringUTF(collectionChangedEventData_c.moduleId.c_str()), - ctx.long2jLong(collectionChangedEventData_c.affectedItemsCount), - items - ); - } - - jobject storeFileDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::store::StoreFileDeletedEventData storeFileDeletedEventData_c) { - jclass storeFileDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StoreFileDeletedEventData"); - jmethodID initStoreFileDeletedEventDataMID = ctx->GetMethodID( - storeFileDeletedEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - storeFileDeletedEventDataCls, - initStoreFileDeletedEventDataMID, - ctx->NewStringUTF(storeFileDeletedEventData_c.fileId.c_str()), - ctx->NewStringUTF(storeFileDeletedEventData_c.contextId.c_str()), - ctx->NewStringUTF(storeFileDeletedEventData_c.storeId.c_str()) - ); - } - - jobject storeStatsChangedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::store::StoreStatsChangedEventData storeStatsChangedEventData_c) { - jclass storeStatsChangedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StoreStatsChangedEventData"); - jmethodID initStoreStatsChangedEventDataMID = ctx->GetMethodID( - storeStatsChangedEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;)V" - ); - return ctx->NewObject( - storeStatsChangedEventDataCls, - initStoreStatsChangedEventDataMID, - ctx->NewStringUTF(storeStatsChangedEventData_c.storeId.c_str()), - ctx->NewStringUTF(storeStatsChangedEventData_c.contextId.c_str()), - ctx.long2jLong(storeStatsChangedEventData_c.lastFileDate), - ctx.long2jLong(storeStatsChangedEventData_c.filesCount) - ); - } - - jobject threadDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::thread::ThreadDeletedEventData threadDeletedEventData_c) { - jclass threadDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ThreadDeletedEventData"); - jmethodID initThreadDeletedEventDataMID = ctx->GetMethodID( - threadDeletedEventDataCls, - "", - "(Ljava/lang/String;)V" - ); - return ctx->NewObject( - threadDeletedEventDataCls, - initThreadDeletedEventDataMID, - ctx->NewStringUTF(threadDeletedEventData_c.threadId.c_str()) - ); - } - - jobject threadDeletedMessageEventData2Java(JniContextUtils &ctx, - privmx::endpoint::thread::ThreadDeletedMessageEventData threadDeletedMessageEventData) { - jclass threadDeletedMessageEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ThreadDeletedMessageEventData"); - jmethodID initThreadDeletedMessageEventDataMID = ctx->GetMethodID( - threadDeletedMessageEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - threadDeletedMessageEventDataCls, - initThreadDeletedMessageEventDataMID, - ctx->NewStringUTF(threadDeletedMessageEventData.threadId.c_str()), - ctx->NewStringUTF(threadDeletedMessageEventData.messageId.c_str()) - ); - } - - jobject storeDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::store::StoreDeletedEventData storeDeletedEventData_c) { - jclass storeDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StoreDeletedEventData"); - jmethodID initStoreDeletedEventDataMID = ctx->GetMethodID( - storeDeletedEventDataCls, - "", - "(Ljava/lang/String;)V" - ); - return ctx->NewObject( - storeDeletedEventDataCls, - initStoreDeletedEventDataMID, - ctx->NewStringUTF(storeDeletedEventData_c.storeId.c_str()) - ); - } - - jobject storeFileUpdatedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::store::StoreFileUpdatedEventData storeFileUpdatedEventData_c - ) { - jclass storeFileUpdatedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StoreFileUpdatedEventData"); - jmethodID initStoreFileUpdatedEventDataMID = ctx->GetMethodID( - storeFileUpdatedEventDataCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/File;" - "Ljava/util/List;" - ")V" - ); - - jclass arrayListCls = ctx->FindClass("java/util/ArrayList"); - jmethodID arrayListInitMID = ctx->GetMethodID(arrayListCls, "", "()V"); - jmethodID arrayListAddMID = ctx->GetMethodID(arrayListCls, "add", - "(Ljava/lang/Object;)Z"); - - jobject changesList = ctx->NewObject( - arrayListCls, - arrayListInitMID - ); - - for (const auto &change: storeFileUpdatedEventData_c.changes) { - jobject javaFileChange = fileChange2Java(ctx, change); - ctx->CallBooleanMethod(changesList, arrayListAddMID, javaFileChange); - } - - return ctx->NewObject( - storeFileUpdatedEventDataCls, - initStoreFileUpdatedEventDataMID, - file2Java(ctx, storeFileUpdatedEventData_c.file), - changesList - ); - } - - jobject threadStatsEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::thread::ThreadStatsEventData threadStatsEventData_c - ) { - jclass threadStatsEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ThreadStatsEventData"); - jmethodID initThreadStatsEventDataMID = ctx->GetMethodID( - threadStatsEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;)V" - ); - return ctx->NewObject( - threadStatsEventDataCls, - initThreadStatsEventDataMID, - ctx->NewStringUTF(threadStatsEventData_c.threadId.c_str()), - ctx.long2jLong(threadStatsEventData_c.lastMsgDate), - ctx.long2jLong(threadStatsEventData_c.messagesCount) - ); - } - - jobject inboxDeletedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::inbox::InboxDeletedEventData inboxDeletedEventData_c - ) { - jclass inboxDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/InboxDeletedEventData"); - jmethodID initInboxDeletedEventDataMID = ctx->GetMethodID( - inboxDeletedEventDataCls, - "", - "(Ljava/lang/String;)V" - ); - return ctx->NewObject( - inboxDeletedEventDataCls, - initInboxDeletedEventDataMID, - ctx->NewStringUTF(inboxDeletedEventData_c.inboxId.c_str()) - ); - } - - jobject inboxEntryDeletedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::inbox::InboxEntryDeletedEventData inboxEntryDeletedEventData_c - ) { - jclass inboxEntryDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/InboxEntryDeletedEventData"); - jmethodID initInboxEntryDeletedEventDataMID = ctx->GetMethodID( - inboxEntryDeletedEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - inboxEntryDeletedEventDataCls, - initInboxEntryDeletedEventDataMID, - ctx->NewStringUTF(inboxEntryDeletedEventData_c.inboxId.c_str()), - ctx->NewStringUTF(inboxEntryDeletedEventData_c.entryId.c_str()) - ); - } -// -// jobject contextCustomEventData2Java( -// JniContextUtils &ctx, -// privmx::endpoint::event::ContextCustomEventData contextCustomEventData_c -// ) { -// jclass contextCustomEventDataCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/events/ContextCustomEventData"); -// jmethodID initContextCustomEventDataMID = ctx->GetMethodID( -// contextCustomEventDataCls, -// "", -// "(" -// "Ljava/lang/String;" // contextId -// "Ljava/lang/String;" // userId -// "[B" // payload -// "Ljava/lang/Long;" // statusCode -// "Ljava/lang/Long;" // schemaVersion -// ")V" -// ); -// jbyteArray data = ctx->NewByteArray(contextCustomEvent_c.payload.size()); -// ctx->SetByteArrayRegion(data, 0, contextCustomEvent_c.payload.size(), -// (jbyte *) contextCustomEvent_c.payload.data()); -// return ctx->NewObject( -// contextCustomEventDataCls, -// initContextCustomEventDataMID, -// ctx->NewStringUTF(contextCustomEvent_c.contextId.c_str()), -// ctx->NewStringUTF(contextCustomEvent_c.userId.c_str()), -// payload, -// ctx.long2jLong(contextCustomEvent_c.statusCode), -// ctx.long2jLong(contextCustomEvent_c.schemaVersion) -// ); -// } - - - - //Kvdb - jobject kvdb2Java( - JniContextUtils &ctx, - privmx::endpoint::kvdb::Kvdb kvdb_c - ) { - jclass kvdbCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Kvdb"); - jmethodID initKvdbMID = ctx->GetMethodID( - kvdbCls, - "", - "(" - "Ljava/lang/String;" //contextId - "Ljava/lang/String;" //kvdbId - "Ljava/lang/Long;" //createDate - "Ljava/lang/String;" //creator - "Ljava/lang/Long;" //lastModificationDate - "Ljava/lang/String;" //lastModifier - "Ljava/util/List;" //users - "Ljava/util/List;" //managers - "Ljava/lang/Long;" //version - "[B" //publicMeta - "[B" //privateMeta - "Ljava/lang/Long;" //entries - "Ljava/lang/Long;" //lastEntryDate - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy - "Ljava/lang/Long;" //statusCode - "Ljava/lang/Long;" //schemaVersion - ")V" - ); - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jobject users = ctx->NewObject(arrayCls, initArrayMID); - jobject managers = ctx->NewObject(arrayCls, initArrayMID); - jbyteArray publicMeta = ctx->NewByteArray(kvdb_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(kvdb_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, kvdb_c.publicMeta.size(), - (jbyte *) kvdb_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, kvdb_c.privateMeta.size(), - (jbyte *) kvdb_c.privateMeta.data()); - for (auto &user: kvdb_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - ctx->NewStringUTF(user.c_str())); - } - for (auto &manager: kvdb_c.managers) { - ctx->CallBooleanMethod(managers, - addToArrayMID, - ctx->NewStringUTF(manager.c_str())); - } - - return ctx->NewObject( - kvdbCls, - initKvdbMID, - ctx->NewStringUTF(kvdb_c.contextId.c_str()), - ctx->NewStringUTF(kvdb_c.kvdbId.c_str()), - ctx.long2jLong(kvdb_c.createDate), - ctx->NewStringUTF(kvdb_c.creator.c_str()), - ctx.long2jLong(kvdb_c.lastModificationDate), - ctx->NewStringUTF(kvdb_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(kvdb_c.version), - publicMeta, - privateMeta, - ctx.long2jLong(kvdb_c.entries), - ctx.long2jLong(kvdb_c.lastEntryDate), - containerPolicy2Java(ctx, kvdb_c.policy), - ctx.long2jLong(kvdb_c.statusCode), - ctx.long2jLong(kvdb_c.schemaVersion) - ); - } - - jobject serverKvdbEntryInfo2Java( - JniContextUtils &ctx, - privmx::endpoint::kvdb::ServerKvdbEntryInfo serverKvdbEntryInfo_c - ) { - jclass serverItemInfoCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ServerKvdbEntryInfo"); - jmethodID initServerItemInfoMID = ctx->GetMethodID( - serverItemInfoCls, - "", - "(Ljava/lang/String;" // kvdbId - "Ljava/lang/String;" // key - "Ljava/lang/Long;" // createDate - "Ljava/lang/String;" // author - ")V" - ); - return ctx->NewObject( - serverItemInfoCls, - initServerItemInfoMID, - ctx->NewStringUTF(serverKvdbEntryInfo_c.kvdbId.c_str()), - ctx->NewStringUTF(serverKvdbEntryInfo_c.key.c_str()), - ctx.long2jLong(serverKvdbEntryInfo_c.createDate), - ctx->NewStringUTF(serverKvdbEntryInfo_c.author.c_str()) - ); - } - - jobject kvdbEntry2Java( - JniContextUtils &ctx, - privmx::endpoint::kvdb::KvdbEntry kvdbEntry_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/KvdbEntry"); - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/ServerKvdbEntryInfo;" // info - "[B" // publicMeta - "[B" // privateMeta - "[B" // data - "Ljava/lang/String;" // authorPubKey - "Ljava/lang/Long;" // version - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - ")V" - ); - - jbyteArray publicMeta = ctx->NewByteArray(kvdbEntry_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(kvdbEntry_c.privateMeta.size()); - jbyteArray data = ctx->NewByteArray(kvdbEntry_c.data.size()); - - ctx->SetByteArrayRegion(publicMeta, 0, kvdbEntry_c.publicMeta.size(), - (jbyte *) kvdbEntry_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, kvdbEntry_c.privateMeta.size(), - (jbyte *) kvdbEntry_c.privateMeta.data()); - ctx->SetByteArrayRegion(data, 0, kvdbEntry_c.data.size(), - (jbyte *) kvdbEntry_c.data.data()); - - return ctx->NewObject( - itemCls, - initItemMID, - serverKvdbEntryInfo2Java(ctx, kvdbEntry_c.info), - publicMeta, - privateMeta, - data, - ctx->NewStringUTF(kvdbEntry_c.authorPubKey.c_str()), - ctx.long2jLong(kvdbEntry_c.version), - ctx.long2jLong(kvdbEntry_c.statusCode), - ctx.long2jLong(kvdbEntry_c.schemaVersion) - ); - } - - - //Streams - - jobject keyType2Java(JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c) { - jclass keyTypeClass = ctx.findClass("com/simplito/java/privmx_endpoint/model/KeyType"); - jfieldID caseFieldId = nullptr; - switch (keyType_c) { - case privmx::endpoint::stream::KeyType::LOCAL: - caseFieldId = ctx->GetStaticFieldID( - keyTypeClass, - "LOCAL", - "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); - break; - default: - caseFieldId = ctx->GetStaticFieldID( - keyTypeClass, - "REMOTE", - "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); - break; - } - return ctx->GetStaticObjectField(keyTypeClass, caseFieldId); - } - - jobject key2Java(JniContextUtils &ctx, privmx::endpoint::stream::Key key_c) { - jclass keyCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/Key"); - jmethodID initKeyMID = ctx->GetMethodID( - keyCls, - "", - "(Ljava/lang/String;[BLcom/simplito/java/privmx_endpoint/model/KeyType;)V" - ); - - jbyteArray jKey = ctx->NewByteArray(key_c.key.size()); - ctx->SetByteArrayRegion(jKey, 0, key_c.key.size(), (jbyte *) key_c.key.data()); - - return ctx->NewObject( - keyCls, - initKeyMID, - ctx->NewStringUTF(key_c.keyId.c_str()), - jKey, - keyType2Java(ctx, key_c.type) - ); - } - -// jobject -// streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c) { -// jclass streamRoomCls = ctx.findClass( -// "com/simplito/java/privmx_endpoint/model/StreamRoom"); -// jmethodID initStreamRoomMID = ctx->GetMethodID( -// streamRoomCls, -// "", -// "(" -// "Ljava/lang/String;" //contextId -// "Ljava/lang/String;" //streamRoomId -// "Ljava/lang/Long;" //createDate -// "Ljava/lang/String;" //creator -// "Ljava/lang/Long;" //lastModificationDate -// "Ljava/lang/String;" //lastModifier -// "Ljava/util/List;" //users -// "Ljava/util/List;" //managers -// "Ljava/lang/Long;" //version -// "[B" //publicMeta -// "[B" //privateMeta -// "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy -// "Ljava/lang/Long;" //statusCode -// ")V" -// ); -// -// jclass arrayCls = ctx.findClass("java/util/ArrayList"); -// jmethodID initArrayMID = ctx->GetMethodID( -// arrayCls, -// "", -// "()V"); -// jmethodID addToArrayMID = ctx->GetMethodID( -// arrayCls, -// "add", -// "(Ljava/lang/Object;)Z" -// ); -// jstring contextId = ctx->NewStringUTF(streamRoom_c.contextId.c_str()); -// jstring streamRoomId = ctx->NewStringUTF(streamRoom_c.streamRoomId.c_str()); -// jstring creator = ctx->NewStringUTF(streamRoom_c.creator.c_str()); -// jstring lastModifier = ctx->NewStringUTF(streamRoom_c.lastModifier.c_str()); -// jobject users = ctx->NewObject(arrayCls, initArrayMID); -// jobject managers = ctx->NewObject(arrayCls, initArrayMID); -// jbyteArray publicMeta = ctx->NewByteArray(streamRoom_c.publicMeta.size()); -// jbyteArray privateMeta = ctx->NewByteArray(streamRoom_c.privateMeta.size()); -// ctx->SetByteArrayRegion(publicMeta, 0, streamRoom_c.publicMeta.size(), -// (jbyte *) streamRoom_c.publicMeta.data()); -// ctx->SetByteArrayRegion(privateMeta, 0, streamRoom_c.privateMeta.size(), -// (jbyte *) streamRoom_c.privateMeta.data()); -// for (auto &user: streamRoom_c.users) { -// ctx->CallBooleanMethod(users, -// addToArrayMID, -// ctx->NewStringUTF(user.c_str())); -// } -// for (auto &manager: streamRoom_c.managers) { -// ctx->CallBooleanMethod(managers, -// addToArrayMID, -// ctx->NewStringUTF(manager.c_str())); -// } -// return ctx->NewObject( -// streamRoomCls, -// initStreamRoomMID, -// contextId, -// streamRoomId, -// ctx.long2jLong(streamRoom_c.createDate), -// creator, -// ctx.long2jLong(streamRoom_c.lastModificationDate), -// lastModifier, -// users, -// managers, -// ctx.long2jLong(streamRoom_c.version), -// publicMeta, -// privateMeta, -// containerPolicy2Java(ctx, streamRoom_c.policy), -// ctx.long2jLong(streamRoom_c.statusCode) -// ); -// } - - jobject stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c) { - jclass streamCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/Stream"); - jmethodID initStreamMID = ctx->GetMethodID( - streamCls, - "", - "(" - "Ljava/lang/Long;" //streamId - "Ljava/lang/String;" //userId - ")V" - ); - return ctx->NewObject( - streamCls, - initStreamMID, - ctx.long2jLong(stream_c.streamId), - ctx->NewStringUTF(stream_c.userId.c_str()) - ); - } - - jobject - turnCredentials2Java(JniContextUtils &ctx, - privmx::endpoint::stream::TurnCredentials turnCredentials_c) { - jclass turnCredentialsCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/TurnCredentials"); - jmethodID initTurnCredentialsMID = ctx->GetMethodID( - turnCredentialsCls, - "", - "(" - "Ljava/lang/String;" //url - "Ljava/lang/String;" //username - "Ljava/lang/String;" //password - "Ljava/lang/Long;" //expirationTime - ")V" - ); - return ctx->NewObject( - turnCredentialsCls, - initTurnCredentialsMID, - ctx->NewStringUTF(turnCredentials_c.url.c_str()), - ctx->NewStringUTF(turnCredentials_c.username.c_str()), - ctx->NewStringUTF(turnCredentials_c.password.c_str()), - ctx.long2jLong(turnCredentials_c.expirationTime) - ); - } - - jobject - sdpWithTypeModel2Java(JniContextUtils &ctx, - privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c) { - jclass sdpWithTypeModelCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/SdpWithTypeModel"); - jmethodID initSdpWithTypeModelMID = ctx->GetMethodID( - sdpWithTypeModelCls, - "", - "(" - "Ljava/lang/String;" //url - "Ljava/lang/String;" //username - ")V" - ); - return ctx->NewObject( - sdpWithTypeModelCls, - initSdpWithTypeModelMID, - ctx->NewStringUTF(sdpWithTypeModel_c.sdp.c_str()), - ctx->NewStringUTF(sdpWithTypeModel_c.type.c_str()) - ); - } - - // Stream - jobject streamRoom2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamRoom streamRoom_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamRoom"); - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // contextId - "Ljava/lang/String;" // streamRoomId - "Ljava/lang/Long;" // createDate - "Ljava/lang/String;" // creator - "Ljava/lang/Long;" // lastModificationDate - "Ljava/lang/String;" // lastModifier - "Ljava/util/List;" // users - "Ljava/util/List;" // managers - "Ljava/lang/Long;" // version - "[B" // publicMeta - "[B" // privateMeta - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" // policy - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - ")V" - ); - - jbyteArray publicMeta = ctx->NewByteArray(streamRoom_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(streamRoom_c.privateMeta.size()); - - ctx->SetByteArrayRegion(publicMeta, 0, streamRoom_c.publicMeta.size(), - (jbyte *) streamRoom_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, streamRoom_c.privateMeta.size(), - (jbyte *) streamRoom_c.privateMeta.data()); - - jobject users = vectorTojArray(ctx, streamRoom_c.users, string2jobject); - jobject managers = vectorTojArray(ctx, streamRoom_c.managers, string2jobject); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(streamRoom_c.contextId.c_str()), - ctx->NewStringUTF(streamRoom_c.streamRoomId.c_str()), - ctx.long2jLong(streamRoom_c.createDate), - ctx->NewStringUTF(streamRoom_c.creator.c_str()), - ctx.long2jLong(streamRoom_c.lastModificationDate), - ctx->NewStringUTF(streamRoom_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(streamRoom_c.version), - publicMeta, - privateMeta, - containerPolicy2Java(ctx, streamRoom_c.policy), - ctx.long2jLong(streamRoom_c.statusCode), - ctx.long2jLong(streamRoom_c.schemaVersion) - ); - } - //Stream -// jobject stream2Java( -// JniContextUtils &ctx, -// privmx::endpoint::stream::Stream stream_c -// ) { -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/Stream"); -// -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "(" -// "Ljava/lang/Long;" // streamId -// "Ljava/lang/String;" // userId -// ")V" -// ); -// -// return ctx->NewObject( -// itemCls, -// initItemMID, -// ctx.long2jLong(stream_c.streamId), -// ctx->NewStringUTF(stream_c.userId.c_str()) -// ); -// } - - jobject deviceType2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::DeviceType deviceType_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/DeviceType"); - - jmethodID valuesMID = ctx->GetStaticMethodID(itemCls, "values", - "()[Lcom/simplito/java/privmx_endpoint/model/streams/DeviceType;"); - - jobjectArray enumValues = (jobjectArray) ctx->CallStaticObjectMethod(itemCls, - valuesMID); - - return (jobject) ctx->GetObjectArrayElement(enumValues, (int) deviceType_c); - } - - - jobject mediaDevice2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::MediaDevice mediaDevice_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/MediaDevice"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // name - "Ljava/lang/String;" // id - "Lcom/simplito/java/privmx_endpoint/model/streams/DeviceType;" // type - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(mediaDevice_c.name.c_str()), - ctx->NewStringUTF(mediaDevice_c.id.c_str()), - deviceType2Java(ctx, mediaDevice_c.type) - - ); - } - - jobject streamHandle2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamHandle streamHandle_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/StreamHandle"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // value - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(streamHandle_c) - ); - } - - jobject - streamInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamInfo streamInfo_c) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/StreamInfo"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // id - "Ljava/lang/String;" // userId - "Ljava/util/List;" // tracks - "Ljava/lang/Long;" // streamId - "Ljava/lang/String;" // metadata - "Ljava/lang/Boolean;" // dummy - "Ljava/lang/Boolean;" // talking - ")V" - ); - - jobject metadata = nullptr; - jobject dummy = nullptr; - jobject talking = nullptr; - - if (streamInfo_c.metadata.has_value()) { - metadata = ctx->NewStringUTF(streamInfo_c.metadata.value().c_str()); - } - - if (streamInfo_c.dummy.has_value()) { - dummy = ctx.bool2jBoolean(streamInfo_c.dummy.value()); - } - - if (streamInfo_c.talking.has_value()) { - dummy = ctx.bool2jBoolean(streamInfo_c.talking.value()); - } - - jobject tracks = ctx->NewObject(arrayCls, initArrayMID); - for (auto &track: streamInfo_c.tracks) { - - ctx->CallBooleanMethod( - tracks, - addToArrayMID, - streamTrackInfo2Java(ctx, track) - ); - } - - // todo - check null? - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(streamInfo_c.id), - ctx->NewStringUTF(streamInfo_c.userId.c_str()), - tracks, - metadata, - dummy, - talking - ); - - } - - jobject streamTrackInfo2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/StreamInfo"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // type - "Ljava/lang/Long;" // mindex - "Ljava/lang/String;" // mid - "Ljava/lang/Boolean;" // disabled [optional] - "Ljava/lang/String;" // codec [optional] - "Ljava/lang/String;" // description [optional] - "Ljava/lang/Boolean;" // moderated [optional] - "Ljava/lang/Boolean;" // simulcast [optional] - "Ljava/lang/Boolean;" // talking [optional] - ")V" - ); - - jobject disabled = nullptr; - jobject codec = nullptr; - jobject description = nullptr; - jobject moderated = nullptr; - jobject simulcast = nullptr; - jobject talking = nullptr; - - if (streamTrackInfo_c.disabled.has_value()) { - disabled = ctx.bool2jBoolean(streamTrackInfo_c.disabled.value()); - } - - if (streamTrackInfo_c.codec.has_value()) { - codec = ctx->NewStringUTF(streamTrackInfo_c.codec.value().c_str()); - } - - if (streamTrackInfo_c.description.has_value()) { - description = ctx->NewStringUTF(streamTrackInfo_c.description.value().c_str()); - } - - if (streamTrackInfo_c.moderated.has_value()) { - moderated = ctx.bool2jBoolean(streamTrackInfo_c.moderated.value()); - } - - if (streamTrackInfo_c.simulcast.has_value()) { - simulcast = ctx.bool2jBoolean(streamTrackInfo_c.simulcast.value()); - } - - if (streamTrackInfo_c.talking.has_value()) { - talking = ctx.bool2jBoolean(streamTrackInfo_c.talking.value()); - } - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(streamTrackInfo_c.type.c_str()), - ctx.long2jLong(streamTrackInfo_c.mindex), - ctx->NewStringUTF(streamTrackInfo_c.mid.c_str()), - disabled, - codec, - description, - moderated, - simulcast, - talking - ); - } - jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c){ - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/StreamPublishResult"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Boolean;" // published - "Lcom/simplito/java/privmx_endpoint/model/streams/PublishedStreamData;" // data - ")V" - ); - - jobject data = nullptr; - if(streamPublishResult_c.data.has_value()) - { - data = publishedStreamData2Java(ctx, streamPublishResult_c.data.value()); - } - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.bool2jBoolean(streamPublishResult_c.published), - data - ); - } - - jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c){ - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/PublishedStreamData"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // streamRoomId - "Lcom/simplito/java/privmx_endpoint/model/streams/StreamInfo;" // stream - "Ljava/lang/String;" //userId - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(publishedStreamData_c.streamRoomId.c_str()), - streamInfo2Java(ctx, publishedStreamData_c.stream), - ctx->NewStringUTF(publishedStreamData_c.userId.c_str()) - ); - } - - jobject remoteStreamId2Java(JniContextUtils &ctx, - privmx::endpoint::stream::RemoteStreamId remoteStreamId_c) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/RemoteStreamId"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // value - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(remoteStreamId_c) - ); - } - - jobject frame2Java(JniContextUtils &ctx, privmx::endpoint::stream::Frame &frame_c) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/Frame"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "()V" - ); - - return ctx->NewObject( - itemCls, - initItemMID - ); - } - } // wrapper -} // privmx \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/parser.cpp b/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/parser.cpp deleted file mode 100644 index 8b9b4ff4..00000000 --- a/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/parser.cpp +++ /dev/null @@ -1,104 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#include "privmx/endpoint/wrapper/parsers/parser.h" -using namespace privmx::endpoint; - -// streams -privmx::endpoint::stream::DeviceType parseDeviceType(JniContextUtils &ctx, jobject type) { - jclass itemClass = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/DeviceType)"); - jmethodID ordinalMethod = ctx->GetMethodID(itemClass, "ordinal", "()I"); - jint ordinalMID = ctx->CallIntMethod(type, ordinalMethod); - - privmx::endpoint::stream::DeviceType type_c = static_cast(ordinalMID); - - return type_c; -} - -privmx::endpoint::stream::MediaDevice parseMediaDevice(JniContextUtils &ctx, jobject mediaDevice) { - auto result = privmx::endpoint::stream::MediaDevice(); - - jclass mediaDeviceCls = ctx->GetObjectClass(mediaDevice); - jfieldID name = ctx->GetFieldID(mediaDeviceCls, "name", "Ljava/lang/String;"); - jfieldID id = ctx->GetFieldID(mediaDeviceCls, "id", "Ljava/lang/String;"); - jfieldID type = ctx->GetFieldID(mediaDeviceCls, "type", - "Lcom/simplito/java/privmx_endpoint/model/streams/DeviceType;"); - - result.name = ctx.jString2string( - (jstring) ctx->GetObjectField(mediaDevice, name)); - result.id = ctx.jString2string( - (jstring) ctx->GetObjectField(mediaDevice, id)); - result.type = parseDeviceType(ctx, ctx->GetObjectField(mediaDevice, type)); - - return result; -} - -privmx::endpoint::stream::StreamHandle parseStreamHandle( - JniContextUtils &ctx, - jobject streamHandle -) { - jclass streamHandleCls = ctx->GetObjectClass(streamHandle); - jfieldID valueFID = ctx->GetFieldID(streamHandleCls, "value", "Ljava/lang/Long;"); - - return jobject2long(ctx, ctx->GetObjectField(streamHandle, valueFID)); -} - -privmx::endpoint::stream::Settings parseSettings(JniContextUtils &ctx, jobject settings){ - auto result = privmx::endpoint::stream::Settings(); - return result; -} - -privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env,jobject streamSettings){ - privmx::endpoint::stream::StreamSettings result; - JniContextUtils ctx(env); - jclass cls = ctx->GetObjectClass(streamSettings); -// StreamSettingsJNI streamSettingsJni (env, streamSettings); - - jfieldID settingsFID = env->GetFieldID( - env->GetObjectClass(streamSettings), - "settings", - "Lcom/simplito/java/privmx_endpoint/model/streams/Settings;" - ); - - jobject jsettings = ctx->GetObjectField(streamSettings, settingsFID); - - result.settings = parseSettings(ctx, jsettings); -// result.OnFrame = streamSettingsJni.OnFrame; -// result.OnVideo = streamSettingsJni.OnVideo; -// result.OnVideoRemove = streamSettingsJni.OnVideoRemove; - - return result; -} - -privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription){ - privmx::endpoint::stream::StreamSubscription result; - jclass cls = ctx->GetObjectClass(streamSubscription); - jfieldID streamIdFID = ctx->GetFieldID( - ctx->GetObjectClass(streamSubscription), - "streamId", - "J" - ); - - jfieldID trackIdFID = ctx->GetFieldID( - ctx->GetObjectClass(streamSubscription), - "streamTrackId", - "Ljava/lang/String;" - ); - - jobject streamId = ctx->GetObjectField(streamSubscription, streamIdFID); - jobject streamTrackId = ctx->GetObjectField(streamSubscription, trackIdFID); - - result.streamId = jobject2long(ctx, streamId); - if(streamTrackId != nullptr) result.streamTrackId = jobject2string(ctx, streamTrackId); - - return result; -} \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint/CMakeLists.txt b/jni-wrappers/privmx-endpoint/CMakeLists.txt index 91ce8815..ee4cfeb9 100644 --- a/jni-wrappers/privmx-endpoint/CMakeLists.txt +++ b/jni-wrappers/privmx-endpoint/CMakeLists.txt @@ -29,11 +29,9 @@ add_library(${CMAKE_PROJECT_NAME} SHARED ${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/modules/ExtKey.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/modules/Utils.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/modules/KvdbApi.cpp - src/cpp/streams/modules/StreamApiLow.cpp - src/cpp/streams/modules/WebRTCInterfaceJNI.cpp - src/cpp/streams/modules/StreamSettingsJNI.cpp - src/cpp/streams/parsers/parser.cpp - src/cpp/streams/parsers/model_native_initializers.cpp + src/cpp/modules/WebRTCInterfaceJNI.cpp + src/cpp/modules/StreamSettingsJNI.cpp + src/cpp/modules/StreamApiLow.cpp ) target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/includes) diff --git a/jni-wrappers/privmx-endpoint/src/cpp/modules/StreamApiLow.cpp b/jni-wrappers/privmx-endpoint/src/cpp/modules/StreamApiLow.cpp index ca5814bc..dfdf24c4 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/modules/StreamApiLow.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/modules/StreamApiLow.cpp @@ -26,77 +26,33 @@ StreamApiLow *getStreamApi(JniContextUtils &ctx, jobject streamApiInstance) { return (stream::StreamApiLow *) ctx.getObject(apiLong).getLongValue(); } -//extern "C" -//JNIEXPORT jobject JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_init( -// JNIEnv *env, -// jobject thiz, -// jobject connection, -// jobject eventApi -//) { -// JniContextUtils ctx(env); -// jobject result; -// -// if (ctx.nullCheck(connection, "Connection") || -// ctx.nullCheck(eventApi, "EventApi")) { -// return nullptr; -// } -// -//// ctx.callResultEndpointApi(&result, [&ctx, &env, &thiz, &connection, &eventApi] { -// auto connection_c = getConnection(env, connection); -// auto eventApi_c = getEventApi(ctx, eventApi); -// auto streamApiLow = stream::StreamApiLow::create( -// *connection_c, -// *eventApi_c -// ); -// auto streamApiLow_ptr = new stream::StreamApiLow(); -// *streamApiLow_ptr = streamApiLow; -// return ctx.long2jLong((jlong) streamApiLow_ptr); -//// }); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} - extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_create( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_init( JNIEnv *env, - jclass clazz, + jobject thiz, jobject connection, jobject eventApi ) { JniContextUtils ctx(env); - if (ctx.nullCheck(connection, "Connection")) { - return nullptr; - } - -// jobject result; -// ctx.callResultEndpointApi(&result, [&ctx, &env, &clazz, &connection, &eventApi] { - jmethodID initMID = ctx->GetMethodID(clazz, "", - "(Ljava/lang/Long;)V"); - auto connection_c = getConnection(env, connection); - auto eventApi_c = getEventApi(env, eventApi); - auto streamApiLow = StreamApiLow::create( - *connection_c, - *eventApi_c - ); - auto *api = new StreamApiLow(); - *api = streamApiLow; - - jobject result = ctx->NewObject( - clazz, - initMID, - ctx.long2jLong((jlong) api) - ); - return result; + jobject result; -// }); - if (ctx->ExceptionCheck()) { + if (ctx.nullCheck(connection, "Connection") || + ctx.nullCheck(eventApi, "EventApi")) { return nullptr; } - return result; + + ctx.callResultEndpointApi(&result, [&ctx, &env, &connection, &eventApi] { + auto connection_c = getConnection(env, connection); + auto eventApi_c = getEventApi(env, eventApi); + auto streamApiLow = stream::StreamApiLow::create( + *connection_c, + *eventApi_c + ); + auto streamApiLow_ptr = new stream::StreamApiLow(); + *streamApiLow_ptr = streamApiLow; + return ctx.long2jLong((jlong) streamApiLow_ptr); + }); } extern "C" diff --git a/jni-wrappers/privmx-endpoint/src/cpp/parsers/model_native_initializers.cpp b/jni-wrappers/privmx-endpoint/src/cpp/parsers/model_native_initializers.cpp index 7ba63e29..1b8d5395 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/parsers/model_native_initializers.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/parsers/model_native_initializers.cpp @@ -18,1454 +18,1454 @@ namespace privmx { namespace wrapper { - //Core - jobject - itemPolicy2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ItemPolicy itemPolicy - ) { - jclass itemPolicyCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ItemPolicy"); - jmethodID initItemPolicyMID = ctx->GetMethodID( - itemPolicyCls, - "", - "(" - "Ljava/lang/String;" // get - "Ljava/lang/String;" // listMy - "Ljava/lang/String;" // listAll - "Ljava/lang/String;" // create - "Ljava/lang/String;" // update - "Ljava/lang/String;" // delete - ")V" - ); - jstring get = nullptr; - jstring listMy = nullptr; - jstring listAll = nullptr; - jstring create = nullptr; - jstring update = nullptr; - jstring delete_ = nullptr; - if (itemPolicy.get.has_value()) get = ctx->NewStringUTF(itemPolicy.get->c_str()); - if (itemPolicy.listMy.has_value()) - listMy = ctx->NewStringUTF(itemPolicy.listMy->c_str()); - if (itemPolicy.listAll.has_value()) - listAll = ctx->NewStringUTF(itemPolicy.listAll->c_str()); - if (itemPolicy.create.has_value()) - create = ctx->NewStringUTF(itemPolicy.create->c_str()); - if (itemPolicy.update.has_value()) - update = ctx->NewStringUTF(itemPolicy.update->c_str()); - if (itemPolicy.delete_.has_value()) - delete_ = ctx->NewStringUTF(itemPolicy.delete_->c_str()); - return ctx->NewObject( - itemPolicyCls, - initItemPolicyMID, - get, - listMy, - listAll, - create, - update, - delete_ - ); - } - - jobject containerPolicyWithoutItem2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContainerPolicyWithoutItem containerPolicyWithoutItem - ) { - jclass containerPolicyWithoutItemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ContainerPolicyWithoutItem"); - jmethodID initContainerPolicyWithoutItemMID = ctx->GetMethodID( - containerPolicyWithoutItemCls, - "", - "(" - "Ljava/lang/String;" // get - "Ljava/lang/String;" // update - "Ljava/lang/String;" // delete - "Ljava/lang/String;" // updatePolicy - "Ljava/lang/String;" // updaterCanBeRemovedFromManagers - "Ljava/lang/String;" // ownerCanBeRemovedFromManagers - ")V" - ); - jstring get = nullptr; - jstring update = nullptr; - jstring delete_ = nullptr; - jstring updatePolicy = nullptr; - jstring updaterCanBeRemovedFromManagers = nullptr; - jstring ownerCanBeRemovedFromManagers = nullptr; - if (containerPolicyWithoutItem.get.has_value()) { - get = ctx->NewStringUTF(containerPolicyWithoutItem.get->c_str()); - } - if (containerPolicyWithoutItem.update.has_value()) { - update = ctx->NewStringUTF(containerPolicyWithoutItem.update->c_str()); - } - if (containerPolicyWithoutItem.delete_.has_value()) { - delete_ = ctx->NewStringUTF(containerPolicyWithoutItem.delete_->c_str()); - } - if (containerPolicyWithoutItem.updatePolicy.has_value()) { - updatePolicy = ctx->NewStringUTF(containerPolicyWithoutItem.updatePolicy->c_str()); - } - if (containerPolicyWithoutItem.updaterCanBeRemovedFromManagers.has_value()) { - updaterCanBeRemovedFromManagers = ctx->NewStringUTF( - containerPolicyWithoutItem.updaterCanBeRemovedFromManagers->c_str()); - } - if (containerPolicyWithoutItem.ownerCanBeRemovedFromManagers.has_value()) { - ownerCanBeRemovedFromManagers = ctx->NewStringUTF( - containerPolicyWithoutItem.ownerCanBeRemovedFromManagers->c_str()); + //Core + jobject + itemPolicy2Java( + JniContextUtils &ctx, + privmx::endpoint::core::ItemPolicy itemPolicy + ) { + jclass itemPolicyCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/ItemPolicy"); + jmethodID initItemPolicyMID = ctx->GetMethodID( + itemPolicyCls, + "", + "(" + "Ljava/lang/String;" // get + "Ljava/lang/String;" // listMy + "Ljava/lang/String;" // listAll + "Ljava/lang/String;" // create + "Ljava/lang/String;" // update + "Ljava/lang/String;" // delete + ")V" + ); + jstring get = nullptr; + jstring listMy = nullptr; + jstring listAll = nullptr; + jstring create = nullptr; + jstring update = nullptr; + jstring delete_ = nullptr; + if (itemPolicy.get.has_value()) get = ctx->NewStringUTF(itemPolicy.get->c_str()); + if (itemPolicy.listMy.has_value()) + listMy = ctx->NewStringUTF(itemPolicy.listMy->c_str()); + if (itemPolicy.listAll.has_value()) + listAll = ctx->NewStringUTF(itemPolicy.listAll->c_str()); + if (itemPolicy.create.has_value()) + create = ctx->NewStringUTF(itemPolicy.create->c_str()); + if (itemPolicy.update.has_value()) + update = ctx->NewStringUTF(itemPolicy.update->c_str()); + if (itemPolicy.delete_.has_value()) + delete_ = ctx->NewStringUTF(itemPolicy.delete_->c_str()); + return ctx->NewObject( + itemPolicyCls, + initItemPolicyMID, + get, + listMy, + listAll, + create, + update, + delete_ + ); } - return ctx->NewObject( - containerPolicyWithoutItemCls, - initContainerPolicyWithoutItemMID, - get, - update, - delete_, - updatePolicy, - updaterCanBeRemovedFromManagers, - ownerCanBeRemovedFromManagers - ); - } + jobject containerPolicyWithoutItem2Java( + JniContextUtils &ctx, + privmx::endpoint::core::ContainerPolicyWithoutItem containerPolicyWithoutItem + ) { + jclass containerPolicyWithoutItemCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/ContainerPolicyWithoutItem"); + jmethodID initContainerPolicyWithoutItemMID = ctx->GetMethodID( + containerPolicyWithoutItemCls, + "", + "(" + "Ljava/lang/String;" // get + "Ljava/lang/String;" // update + "Ljava/lang/String;" // delete + "Ljava/lang/String;" // updatePolicy + "Ljava/lang/String;" // updaterCanBeRemovedFromManagers + "Ljava/lang/String;" // ownerCanBeRemovedFromManagers + ")V" + ); + jstring get = nullptr; + jstring update = nullptr; + jstring delete_ = nullptr; + jstring updatePolicy = nullptr; + jstring updaterCanBeRemovedFromManagers = nullptr; + jstring ownerCanBeRemovedFromManagers = nullptr; + if (containerPolicyWithoutItem.get.has_value()) { + get = ctx->NewStringUTF(containerPolicyWithoutItem.get->c_str()); + } + if (containerPolicyWithoutItem.update.has_value()) { + update = ctx->NewStringUTF(containerPolicyWithoutItem.update->c_str()); + } + if (containerPolicyWithoutItem.delete_.has_value()) { + delete_ = ctx->NewStringUTF(containerPolicyWithoutItem.delete_->c_str()); + } + if (containerPolicyWithoutItem.updatePolicy.has_value()) { + updatePolicy = ctx->NewStringUTF(containerPolicyWithoutItem.updatePolicy->c_str()); + } + if (containerPolicyWithoutItem.updaterCanBeRemovedFromManagers.has_value()) { + updaterCanBeRemovedFromManagers = ctx->NewStringUTF( + containerPolicyWithoutItem.updaterCanBeRemovedFromManagers->c_str()); + } + if (containerPolicyWithoutItem.ownerCanBeRemovedFromManagers.has_value()) { + ownerCanBeRemovedFromManagers = ctx->NewStringUTF( + containerPolicyWithoutItem.ownerCanBeRemovedFromManagers->c_str()); + } - jobject containerPolicy2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContainerPolicy containerPolicy - ) { - jclass containerPolicyCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ContainerPolicy"); - jmethodID initContainerPolicyMID = ctx->GetMethodID( - containerPolicyCls, - "", - "(" - "Ljava/lang/String;" // get - "Ljava/lang/String;" // update - "Ljava/lang/String;" // delete - "Ljava/lang/String;" // updatePolicy - "Ljava/lang/String;" // updaterCanBeRemovedFromManagers - "Ljava/lang/String;" // ownerCanBeRemovedFromManagers - "Lcom/simplito/java/privmx_endpoint/model/ItemPolicy;" // item - ")V" - ); - jstring get = nullptr; - jstring update = nullptr; - jstring delete_ = nullptr; - jstring updatePolicy = nullptr; - jstring updaterCanBeRemovedFromManagers = nullptr; - jstring ownerCanBeRemovedFromManagers = nullptr; - jobject itemPolicy = nullptr; - if (containerPolicy.get.has_value()) { - get = ctx->NewStringUTF(containerPolicy.get->c_str()); - } - if (containerPolicy.update.has_value()) { - update = ctx->NewStringUTF(containerPolicy.update->c_str()); - } - if (containerPolicy.delete_.has_value()) { - delete_ = ctx->NewStringUTF(containerPolicy.delete_->c_str()); - } - if (containerPolicy.updatePolicy.has_value()) { - updatePolicy = ctx->NewStringUTF(containerPolicy.updatePolicy->c_str()); - } - if (containerPolicy.updaterCanBeRemovedFromManagers.has_value()) { - updaterCanBeRemovedFromManagers = ctx->NewStringUTF( - containerPolicy.updaterCanBeRemovedFromManagers->c_str()); - } - if (containerPolicy.ownerCanBeRemovedFromManagers.has_value()) { - ownerCanBeRemovedFromManagers = ctx->NewStringUTF( - containerPolicy.ownerCanBeRemovedFromManagers->c_str()); + return ctx->NewObject( + containerPolicyWithoutItemCls, + initContainerPolicyWithoutItemMID, + get, + update, + delete_, + updatePolicy, + updaterCanBeRemovedFromManagers, + ownerCanBeRemovedFromManagers + ); } - if (containerPolicy.item.has_value()) { - itemPolicy = itemPolicy2Java(ctx, containerPolicy.item.value()); + + jobject containerPolicy2Java( + JniContextUtils &ctx, + privmx::endpoint::core::ContainerPolicy containerPolicy + ) { + jclass containerPolicyCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/ContainerPolicy"); + jmethodID initContainerPolicyMID = ctx->GetMethodID( + containerPolicyCls, + "", + "(" + "Ljava/lang/String;" // get + "Ljava/lang/String;" // update + "Ljava/lang/String;" // delete + "Ljava/lang/String;" // updatePolicy + "Ljava/lang/String;" // updaterCanBeRemovedFromManagers + "Ljava/lang/String;" // ownerCanBeRemovedFromManagers + "Lcom/simplito/java/privmx_endpoint/model/ItemPolicy;" // item + ")V" + ); + jstring get = nullptr; + jstring update = nullptr; + jstring delete_ = nullptr; + jstring updatePolicy = nullptr; + jstring updaterCanBeRemovedFromManagers = nullptr; + jstring ownerCanBeRemovedFromManagers = nullptr; + jobject itemPolicy = nullptr; + if (containerPolicy.get.has_value()) { + get = ctx->NewStringUTF(containerPolicy.get->c_str()); + } + if (containerPolicy.update.has_value()) { + update = ctx->NewStringUTF(containerPolicy.update->c_str()); + } + if (containerPolicy.delete_.has_value()) { + delete_ = ctx->NewStringUTF(containerPolicy.delete_->c_str()); + } + if (containerPolicy.updatePolicy.has_value()) { + updatePolicy = ctx->NewStringUTF(containerPolicy.updatePolicy->c_str()); + } + if (containerPolicy.updaterCanBeRemovedFromManagers.has_value()) { + updaterCanBeRemovedFromManagers = ctx->NewStringUTF( + containerPolicy.updaterCanBeRemovedFromManagers->c_str()); + } + if (containerPolicy.ownerCanBeRemovedFromManagers.has_value()) { + ownerCanBeRemovedFromManagers = ctx->NewStringUTF( + containerPolicy.ownerCanBeRemovedFromManagers->c_str()); + } + if (containerPolicy.item.has_value()) { + itemPolicy = itemPolicy2Java(ctx, containerPolicy.item.value()); + } + + return ctx->NewObject( + containerPolicyCls, + initContainerPolicyMID, + get, + update, + delete_, + updatePolicy, + updaterCanBeRemovedFromManagers, + ownerCanBeRemovedFromManagers, + itemPolicy + ); } - return ctx->NewObject( - containerPolicyCls, - initContainerPolicyMID, - get, - update, - delete_, - updatePolicy, - updaterCanBeRemovedFromManagers, - ownerCanBeRemovedFromManagers, - itemPolicy - ); - } + // CollectionItemChange + jobject collectionItemChange2Java( + JniContextUtils &ctx, + privmx::endpoint::core::CollectionItemChange collectionItemChange_c + ) { + jclass collectionItemChangeCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/CollectionItemChange"); + jmethodID initCollectionItemChangeMID = ctx->GetMethodID( + collectionItemChangeCls, + "", + "(" + "Ljava/lang/String;" // itemId + "Ljava/lang/String;" // action + ")V" + ); + return ctx->NewObject( + collectionItemChangeCls, + initCollectionItemChangeMID, + ctx->NewStringUTF(collectionItemChange_c.itemId.c_str()), + ctx->NewStringUTF(collectionItemChange_c.action.c_str()) + ); + } - // CollectionItemChange - jobject collectionItemChange2Java( - JniContextUtils &ctx, - privmx::endpoint::core::CollectionItemChange collectionItemChange_c - ) { - jclass collectionItemChangeCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/CollectionItemChange"); - jmethodID initCollectionItemChangeMID = ctx->GetMethodID( - collectionItemChangeCls, - "", - "(" - "Ljava/lang/String;" // itemId - "Ljava/lang/String;" // action - ")V" - ); - return ctx->NewObject( - collectionItemChangeCls, - initCollectionItemChangeMID, - ctx->NewStringUTF(collectionItemChange_c.itemId.c_str()), - ctx->NewStringUTF(collectionItemChange_c.action.c_str()) - ); - } + //Context + jobject context2Java( + JniContextUtils &ctx, + privmx::endpoint::core::Context context_c + ) { + jclass contextCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/Context"); + jmethodID initThreadDataMID = ctx->GetMethodID( + contextCls, + "", + "(Ljava/lang/String;Ljava/lang/String;)V" + ); + return ctx->NewObject( + contextCls, + initThreadDataMID, + ctx->NewStringUTF(context_c.userId.c_str()), + ctx->NewStringUTF(context_c.contextId.c_str()) + ); + } - //Context - jobject context2Java( - JniContextUtils &ctx, - privmx::endpoint::core::Context context_c - ) { - jclass contextCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Context"); - jmethodID initThreadDataMID = ctx->GetMethodID( - contextCls, - "", - "(Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - contextCls, - initThreadDataMID, - ctx->NewStringUTF(context_c.userId.c_str()), - ctx->NewStringUTF(context_c.contextId.c_str()) - ); - } + // UserWithPubKey + jobject userWithPubKey2Java( + JniContextUtils &ctx, + privmx::endpoint::core::UserWithPubKey userWithPubKey + ) { + jclass userCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/UserWithPubKey"); + jmethodID initUserMID = ctx->GetMethodID( + userCls, + "", + "(Ljava/lang/String;Ljava/lang/String;)V" + ); + return ctx->NewObject( + userCls, + initUserMID, + ctx->NewStringUTF(userWithPubKey.userId.c_str()), + ctx->NewStringUTF(userWithPubKey.pubKey.c_str()) + ); + } - // UserWithPubKey - jobject userWithPubKey2Java( - JniContextUtils &ctx, - privmx::endpoint::core::UserWithPubKey userWithPubKey - ) { - jclass userCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/UserWithPubKey"); - jmethodID initUserMID = ctx->GetMethodID( - userCls, - "", - "(Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - userCls, - initUserMID, - ctx->NewStringUTF(userWithPubKey.userId.c_str()), - ctx->NewStringUTF(userWithPubKey.pubKey.c_str()) - ); - } + // UserWithPubKey + jobject userStatusChange2Java( + JniContextUtils &ctx, + privmx::endpoint::core::UserStatusChange userStatusChange + ) { + jclass userStatusCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/UserStatusChange"); + jmethodID initUserStatusMID = ctx->GetMethodID( + userStatusCls, + "", + "(" + "Ljava/lang/String;" // action + "Ljava/lang/Long;" // timestamp + ")V" + ); + return ctx->NewObject( + userStatusCls, + initUserStatusMID, + ctx->NewStringUTF(userStatusChange.action.c_str()), + ctx.long2jLong(userStatusChange.timestamp) + ); + } - // UserWithPubKey - jobject userStatusChange2Java( - JniContextUtils &ctx, - privmx::endpoint::core::UserStatusChange userStatusChange - ) { - jclass userStatusCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/UserStatusChange"); - jmethodID initUserStatusMID = ctx->GetMethodID( - userStatusCls, - "", - "(" - "Ljava/lang/String;" // action - "Ljava/lang/Long;" // timestamp - ")V" - ); - return ctx->NewObject( - userStatusCls, - initUserStatusMID, - ctx->NewStringUTF(userStatusChange.action.c_str()), - ctx.long2jLong(userStatusChange.timestamp) - ); - } + //UserInfo + jobject userInfo2Java( + JniContextUtils &ctx, + privmx::endpoint::core::UserInfo userInfo + ) { + jclass userInfoCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/UserInfo"); + jmethodID initUserInfoMID = ctx->GetMethodID( + userInfoCls, + "", + "(" + "Lcom/simplito/java/privmx_endpoint/model/UserWithPubKey;" // userWithPubKey + "Z" // isActive + "Lcom/simplito/java/privmx_endpoint/model/UserStatusChange;" // lastStatusChange + ")V" + ); - //UserInfo - jobject userInfo2Java( - JniContextUtils &ctx, - privmx::endpoint::core::UserInfo userInfo - ) { - jclass userInfoCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/UserInfo"); - jmethodID initUserInfoMID = ctx->GetMethodID( - userInfoCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/UserWithPubKey;" // userWithPubKey - "Z" // isActive - "Lcom/simplito/java/privmx_endpoint/model/UserStatusChange;" // lastStatusChange - ")V" - ); + jobject userStatusChange = userInfo.lastStatusChange.has_value() ? + userStatusChange2Java(ctx, userInfo.lastStatusChange.value()) : + nullptr; + return ctx->NewObject( + userInfoCls, + initUserInfoMID, + userWithPubKey2Java(ctx, userInfo.user), + (jboolean) userInfo.isActive, + userStatusChange); + } - jobject userStatusChange = userInfo.lastStatusChange.has_value() ? - userStatusChange2Java(ctx, userInfo.lastStatusChange.value()) : - nullptr; - return ctx->NewObject( - userInfoCls, - initUserInfoMID, - userWithPubKey2Java(ctx, userInfo.user), - (jboolean) userInfo.isActive, - userStatusChange); - } + // UserWithAction + jobject userWithAction2Java(JniContextUtils &ctx, + privmx::endpoint::core::UserWithAction userWithAction) { + jclass userWithActionCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/UserWithAction"); + jmethodID initUserWithActionMID = ctx->GetMethodID( + userWithActionCls, + "", + "(" + "Lcom/simplito/java/privmx_endpoint/model/UserWithPubKey;" // userWithPubKey + "Ljava/lang/String;" // action + ")V" + ); + return ctx->NewObject( + userWithActionCls, + initUserWithActionMID, + userWithPubKey2Java(ctx, userWithAction.user), + ctx->NewStringUTF(userWithAction.action.c_str()) + ); + } - // UserWithAction - jobject userWithAction2Java(JniContextUtils &ctx, - privmx::endpoint::core::UserWithAction userWithAction) { - jclass userWithActionCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/UserWithAction"); - jmethodID initUserWithActionMID = ctx->GetMethodID( - userWithActionCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/UserWithPubKey;" // userWithPubKey - "Ljava/lang/String;" // action - ")V" - ); - return ctx->NewObject( - userWithActionCls, - initUserWithActionMID, - userWithPubKey2Java(ctx, userWithAction.user), - ctx->NewStringUTF(userWithAction.action.c_str()) - ); - } + jobject bridgeIdentity2Java( + JniContextUtils &ctx, + privmx::endpoint::core::BridgeIdentity bridgeIdentity_c + ) { + jclass bridgeIdentityCls = ctx.findClass( + "com/simplito/java/privmx_endpoint/model/BridgeIdentity"); + jmethodID initBridgeIdentityMID = ctx->GetMethodID( + bridgeIdentityCls, + "", + "(" + "Ljava/lang/String;" + "Ljava/lang/String;" + "Ljava/lang/String;" + ")V" + ); - jobject bridgeIdentity2Java( - JniContextUtils &ctx, - privmx::endpoint::core::BridgeIdentity bridgeIdentity_c - ) { - jclass bridgeIdentityCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/BridgeIdentity"); - jmethodID initBridgeIdentityMID = ctx->GetMethodID( - bridgeIdentityCls, - "", - "(" - "Ljava/lang/String;" - "Ljava/lang/String;" - "Ljava/lang/String;" - ")V" - ); + jstring pubKey_c = nullptr; + if (bridgeIdentity_c.pubKey.has_value()) { + pubKey_c = ctx->NewStringUTF(bridgeIdentity_c.pubKey.value().c_str()); + } - jstring pubKey_c = nullptr; - if (bridgeIdentity_c.pubKey.has_value()) { - pubKey_c = ctx->NewStringUTF(bridgeIdentity_c.pubKey.value().c_str()); - } + jstring instanceId_c = nullptr; + if (bridgeIdentity_c.instanceId.has_value()) { + instanceId_c = ctx->NewStringUTF(bridgeIdentity_c.instanceId.value().c_str()); + } - jstring instanceId_c = nullptr; - if (bridgeIdentity_c.instanceId.has_value()) { - instanceId_c = ctx->NewStringUTF(bridgeIdentity_c.instanceId.value().c_str()); + return ctx->NewObject( + bridgeIdentityCls, + initBridgeIdentityMID, + ctx->NewStringUTF(bridgeIdentity_c.url.c_str()), + pubKey_c, + instanceId_c + ); } - return ctx->NewObject( - bridgeIdentityCls, - initBridgeIdentityMID, - ctx->NewStringUTF(bridgeIdentity_c.url.c_str()), - pubKey_c, - instanceId_c - ); - } + jobject verificationRequest2Java( + JniContextUtils &ctx, + privmx::endpoint::core::VerificationRequest verificationRequest_c + ) { + jclass verificationRequestCls = ctx.findClass( + "com/simplito/java/privmx_endpoint/model/VerificationRequest"); + jmethodID initVerificationRequestMID = ctx->GetMethodID( + verificationRequestCls, + "", + "(" + "Ljava/lang/String;" + "Ljava/lang/String;" + "Ljava/lang/String;" + "Ljava/lang/Long;" + "Lcom/simplito/java/privmx_endpoint/model/BridgeIdentity;" + ")V" + ); - jobject verificationRequest2Java( - JniContextUtils &ctx, - privmx::endpoint::core::VerificationRequest verificationRequest_c - ) { - jclass verificationRequestCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/VerificationRequest"); - jmethodID initVerificationRequestMID = ctx->GetMethodID( - verificationRequestCls, - "", - "(" - "Ljava/lang/String;" - "Ljava/lang/String;" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "Lcom/simplito/java/privmx_endpoint/model/BridgeIdentity;" - ")V" - ); + jobject bridgeIdentity = nullptr; + if (verificationRequest_c.bridgeIdentity.has_value()) { + bridgeIdentity = bridgeIdentity2Java(ctx, + verificationRequest_c.bridgeIdentity.value()); + } - jobject bridgeIdentity = nullptr; - if (verificationRequest_c.bridgeIdentity.has_value()) { - bridgeIdentity = bridgeIdentity2Java(ctx, - verificationRequest_c.bridgeIdentity.value()); + return ctx->NewObject( + verificationRequestCls, + initVerificationRequestMID, + ctx->NewStringUTF(verificationRequest_c.contextId.c_str()), + ctx->NewStringUTF(verificationRequest_c.senderId.c_str()), + ctx->NewStringUTF(verificationRequest_c.senderPubKey.c_str()), + ctx.long2jLong(verificationRequest_c.date), + bridgeIdentity + ); } - return ctx->NewObject( - verificationRequestCls, - initVerificationRequestMID, - ctx->NewStringUTF(verificationRequest_c.contextId.c_str()), - ctx->NewStringUTF(verificationRequest_c.senderId.c_str()), - ctx->NewStringUTF(verificationRequest_c.senderPubKey.c_str()), - ctx.long2jLong(verificationRequest_c.date), - bridgeIdentity - ); - } - - //Crypto - jobject extKey2Java(JniContextUtils &ctx, privmx::endpoint::crypto::ExtKey extKey_c) { - jclass ExtKeyCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/modules/crypto/ExtKey"); - jmethodID initExtKeyMID = ctx->GetMethodID( - ExtKeyCls, "", "(Ljava/lang/Long;)V"); + //Crypto + jobject extKey2Java(JniContextUtils &ctx, privmx::endpoint::crypto::ExtKey extKey_c) { + jclass ExtKeyCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/modules/crypto/ExtKey"); + jmethodID initExtKeyMID = ctx->GetMethodID( + ExtKeyCls, "", "(Ljava/lang/Long;)V"); - auto *key = new privmx::endpoint::crypto::ExtKey(extKey_c); - return ctx->NewObject( - ExtKeyCls, - initExtKeyMID, - ctx.long2jLong((jlong) key)); - } + auto *key = new privmx::endpoint::crypto::ExtKey(extKey_c); + return ctx->NewObject( + ExtKeyCls, + initExtKeyMID, + ctx.long2jLong((jlong) key)); + } - jobject BIP392Java(JniContextUtils &ctx, privmx::endpoint::crypto::BIP39_t BIP39_c) { - jclass BIP39Cls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/BIP39"); - jmethodID initBIP39MID = ctx->GetMethodID( - BIP39Cls, - "", - "(" - "Ljava/lang/String;" //mnemonic - "Lcom/simplito/java/privmx_endpoint/modules/crypto/ExtKey;" //Ecc Key - "[B" // BIP-39 entropy - ")V" - ); - jbyteArray entropy = ctx->NewByteArray(BIP39_c.entropy.size()); - ctx->SetByteArrayRegion(entropy, 0, BIP39_c.entropy.size(), - (jbyte *) BIP39_c.entropy.data()); + jobject BIP392Java(JniContextUtils &ctx, privmx::endpoint::crypto::BIP39_t BIP39_c) { + jclass BIP39Cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/BIP39"); + jmethodID initBIP39MID = ctx->GetMethodID( + BIP39Cls, + "", + "(" + "Ljava/lang/String;" //mnemonic + "Lcom/simplito/java/privmx_endpoint/modules/crypto/ExtKey;" //Ecc Key + "[B" // BIP-39 entropy + ")V" + ); + jbyteArray entropy = ctx->NewByteArray(BIP39_c.entropy.size()); + ctx->SetByteArrayRegion(entropy, 0, BIP39_c.entropy.size(), + (jbyte *) BIP39_c.entropy.data()); - return ctx->NewObject( - BIP39Cls, - initBIP39MID, - ctx->NewStringUTF(BIP39_c.mnemonic.c_str()), - extKey2Java(ctx, BIP39_c.ext_key), - entropy - ); - } + return ctx->NewObject( + BIP39Cls, + initBIP39MID, + ctx->NewStringUTF(BIP39_c.mnemonic.c_str()), + extKey2Java(ctx, BIP39_c.ext_key), + entropy + ); + } - //Threads - jobject thread2Java(JniContextUtils &ctx, privmx::endpoint::thread::Thread thread_c) { - jclass threadCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Thread"); - jmethodID initThreadMID = ctx->GetMethodID( - threadCls, - "", - "(" - "Ljava/lang/String;" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "Ljava/lang/String;" - "Ljava/util/List;" - "Ljava/util/List;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "[B" - "[B" - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - ")V" - ); - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jstring threadId = ctx->NewStringUTF(thread_c.threadId.c_str()); - jstring contextId = ctx->NewStringUTF(thread_c.contextId.c_str()); - jstring creator = ctx->NewStringUTF(thread_c.creator.c_str()); - jstring lastModifier = ctx->NewStringUTF(thread_c.lastModifier.c_str()); - jobject users = ctx->NewObject(arrayCls, initArrayMID); - jobject managers = ctx->NewObject(arrayCls, initArrayMID); - jbyteArray publicMeta = ctx->NewByteArray(thread_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(thread_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, thread_c.publicMeta.size(), - (jbyte *) thread_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, thread_c.privateMeta.size(), - (jbyte *) thread_c.privateMeta.data()); - for (auto &user: thread_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - ctx->NewStringUTF(user.c_str())); + //Threads + jobject thread2Java(JniContextUtils &ctx, privmx::endpoint::thread::Thread thread_c) { + jclass threadCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/Thread"); + jmethodID initThreadMID = ctx->GetMethodID( + threadCls, + "", + "(" + "Ljava/lang/String;" + "Ljava/lang/String;" + "Ljava/lang/Long;" + "Ljava/lang/String;" + "Ljava/lang/Long;" + "Ljava/lang/String;" + "Ljava/util/List;" + "Ljava/util/List;" + "Ljava/lang/Long;" + "Ljava/lang/Long;" + "[B" + "[B" + "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" + "Ljava/lang/Long;" + "Ljava/lang/Long;" + "Ljava/lang/Long;" + ")V" + ); + jclass arrayCls = ctx->FindClass("java/util/ArrayList"); + jmethodID initArrayMID = ctx->GetMethodID( + arrayCls, + "", + "()V"); + jmethodID addToArrayMID = ctx->GetMethodID( + arrayCls, + "add", + "(Ljava/lang/Object;)Z" + ); + jstring threadId = ctx->NewStringUTF(thread_c.threadId.c_str()); + jstring contextId = ctx->NewStringUTF(thread_c.contextId.c_str()); + jstring creator = ctx->NewStringUTF(thread_c.creator.c_str()); + jstring lastModifier = ctx->NewStringUTF(thread_c.lastModifier.c_str()); + jobject users = ctx->NewObject(arrayCls, initArrayMID); + jobject managers = ctx->NewObject(arrayCls, initArrayMID); + jbyteArray publicMeta = ctx->NewByteArray(thread_c.publicMeta.size()); + jbyteArray privateMeta = ctx->NewByteArray(thread_c.privateMeta.size()); + ctx->SetByteArrayRegion(publicMeta, 0, thread_c.publicMeta.size(), + (jbyte *) thread_c.publicMeta.data()); + ctx->SetByteArrayRegion(privateMeta, 0, thread_c.privateMeta.size(), + (jbyte *) thread_c.privateMeta.data()); + for (auto &user: thread_c.users) { + ctx->CallBooleanMethod(users, + addToArrayMID, + ctx->NewStringUTF(user.c_str())); + } + for (auto &manager: thread_c.managers) { + ctx->CallBooleanMethod(managers, + addToArrayMID, + ctx->NewStringUTF(manager.c_str())); + } + return ctx->NewObject( + threadCls, + initThreadMID, + contextId, + threadId, + ctx.long2jLong(thread_c.createDate), + creator, + ctx.long2jLong(thread_c.lastModificationDate), + lastModifier, + users, + managers, + ctx.long2jLong(thread_c.version), + ctx.long2jLong(thread_c.lastMsgDate), + publicMeta, + privateMeta, + containerPolicy2Java(ctx, thread_c.policy), + ctx.long2jLong(thread_c.messagesCount), + ctx.long2jLong(thread_c.statusCode), + ctx.long2jLong(thread_c.schemaVersion) + ); } - for (auto &manager: thread_c.managers) { - ctx->CallBooleanMethod(managers, - addToArrayMID, - ctx->NewStringUTF(manager.c_str())); + + //Messages + jobject serverMessageInfo2Java(JniContextUtils &ctx, + privmx::endpoint::thread::ServerMessageInfo serverMessageInfo_c) { + jclass messageCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/ServerMessageInfo"); + jmethodID initMessageMID = ctx->GetMethodID( + messageCls, + "", + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;)V" + ); + return ctx->NewObject( + messageCls, + initMessageMID, + ctx->NewStringUTF(serverMessageInfo_c.threadId.c_str()), + ctx->NewStringUTF(serverMessageInfo_c.messageId.c_str()), + ctx.long2jLong(serverMessageInfo_c.createDate), + ctx->NewStringUTF(serverMessageInfo_c.author.c_str()) + ); } - return ctx->NewObject( - threadCls, - initThreadMID, - contextId, - threadId, - ctx.long2jLong(thread_c.createDate), - creator, - ctx.long2jLong(thread_c.lastModificationDate), - lastModifier, - users, - managers, - ctx.long2jLong(thread_c.version), - ctx.long2jLong(thread_c.lastMsgDate), - publicMeta, - privateMeta, - containerPolicy2Java(ctx, thread_c.policy), - ctx.long2jLong(thread_c.messagesCount), - ctx.long2jLong(thread_c.statusCode), - ctx.long2jLong(thread_c.schemaVersion) - ); - } - //Messages - jobject serverMessageInfo2Java(JniContextUtils &ctx, - privmx::endpoint::thread::ServerMessageInfo serverMessageInfo_c) { - jclass messageCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ServerMessageInfo"); - jmethodID initMessageMID = ctx->GetMethodID( - messageCls, - "", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;)V" - ); - return ctx->NewObject( - messageCls, - initMessageMID, - ctx->NewStringUTF(serverMessageInfo_c.threadId.c_str()), - ctx->NewStringUTF(serverMessageInfo_c.messageId.c_str()), - ctx.long2jLong(serverMessageInfo_c.createDate), - ctx->NewStringUTF(serverMessageInfo_c.author.c_str()) - ); - } + jobject message2Java(JniContextUtils &ctx, privmx::endpoint::thread::Message message_c) { + jclass messageCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/Message"); + jmethodID initMessageMID = ctx->GetMethodID( + messageCls, + "", + "(Lcom/simplito/java/privmx_endpoint/model/ServerMessageInfo;" + "[B" + "[B" + "[B" + "Ljava/lang/String;" + "Ljava/lang/Long;" + "Ljava/lang/Long;" + ")V" + ); - jobject message2Java(JniContextUtils &ctx, privmx::endpoint::thread::Message message_c) { - jclass messageCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Message"); - jmethodID initMessageMID = ctx->GetMethodID( - messageCls, - "", - "(Lcom/simplito/java/privmx_endpoint/model/ServerMessageInfo;" - "[B" - "[B" - "[B" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - ")V" - ); + jbyteArray publicMeta = ctx->NewByteArray(message_c.publicMeta.size()); + jbyteArray privateMeta = ctx->NewByteArray(message_c.privateMeta.size()); + jbyteArray data = ctx->NewByteArray(message_c.data.size()); + ctx->SetByteArrayRegion(publicMeta, 0, message_c.publicMeta.size(), + (jbyte *) message_c.publicMeta.data()); - jbyteArray publicMeta = ctx->NewByteArray(message_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(message_c.privateMeta.size()); - jbyteArray data = ctx->NewByteArray(message_c.data.size()); - ctx->SetByteArrayRegion(publicMeta, 0, message_c.publicMeta.size(), - (jbyte *) message_c.publicMeta.data()); + ctx->SetByteArrayRegion(privateMeta, 0, message_c.privateMeta.size(), + (jbyte *) message_c.privateMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, message_c.privateMeta.size(), - (jbyte *) message_c.privateMeta.data()); + ctx->SetByteArrayRegion(data, 0, message_c.data.size(), + (jbyte *) message_c.data.data()); - ctx->SetByteArrayRegion(data, 0, message_c.data.size(), - (jbyte *) message_c.data.data()); + return ctx->NewObject( + messageCls, + initMessageMID, + serverMessageInfo2Java(ctx, message_c.info), + publicMeta, + privateMeta, + data, + ctx->NewStringUTF(message_c.authorPubKey.c_str()), + ctx.long2jLong(message_c.statusCode), + ctx.long2jLong(message_c.schemaVersion) + ); + } - return ctx->NewObject( - messageCls, - initMessageMID, - serverMessageInfo2Java(ctx, message_c.info), - publicMeta, - privateMeta, - data, - ctx->NewStringUTF(message_c.authorPubKey.c_str()), - ctx.long2jLong(message_c.statusCode), - ctx.long2jLong(message_c.schemaVersion) - ); - } + //Store + jobject store2Java(JniContextUtils &ctx, privmx::endpoint::store::Store store_c) { + jclass arrayCls = ctx->FindClass("java/util/ArrayList"); + jmethodID initArrayMID = ctx->GetMethodID( + arrayCls, + "", + "()V"); + jmethodID addToArrayMID = ctx->GetMethodID( + arrayCls, + "add", + "(Ljava/lang/Object;)Z" + ); - //Store - jobject store2Java(JniContextUtils &ctx, privmx::endpoint::store::Store store_c) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); + jclass storeCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/Store"); + jmethodID initStoreMID = ctx->GetMethodID( + storeCls, + "", + "(" + "Ljava/lang/String;" //storeId + "Ljava/lang/String;" //contextId + "Ljava/lang/Long;" //createDate + "Ljava/lang/String;" //creator + "Ljava/lang/Long;" //lastModificationDate + "Ljava/lang/Long;" //lastFileDate + "Ljava/lang/String;" //lastModifier + "Ljava/util/List;" //users + "Ljava/util/List;" //managers + "Ljava/lang/Long;" //version + "[B" //publicMeta + "[B" //privateMeta + "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy + "Ljava/lang/Long;" //filesCount + "Ljava/lang/Long;" //statusCode + "Ljava/lang/Long;" //schemaVersion + ")V" + ); - jclass storeCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Store"); - jmethodID initStoreMID = ctx->GetMethodID( - storeCls, - "", - "(" - "Ljava/lang/String;" //storeId - "Ljava/lang/String;" //contextId - "Ljava/lang/Long;" //createDate - "Ljava/lang/String;" //creator - "Ljava/lang/Long;" //lastModificationDate - "Ljava/lang/Long;" //lastFileDate - "Ljava/lang/String;" //lastModifier - "Ljava/util/List;" //users - "Ljava/util/List;" //managers - "Ljava/lang/Long;" //version - "[B" //publicMeta - "[B" //privateMeta - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy - "Ljava/lang/Long;" //filesCount - "Ljava/lang/Long;" //statusCode - "Ljava/lang/Long;" //schemaVersion - ")V" - ); + jobject users = ctx->NewObject(arrayCls, initArrayMID); + jobject managers = ctx->NewObject(arrayCls, initArrayMID); + jbyteArray publicMeta = ctx->NewByteArray(store_c.publicMeta.size()); + jbyteArray privateMeta = ctx->NewByteArray(store_c.privateMeta.size()); + ctx->SetByteArrayRegion(publicMeta, 0, store_c.publicMeta.size(), + (jbyte *) store_c.publicMeta.data()); + ctx->SetByteArrayRegion(privateMeta, 0, store_c.privateMeta.size(), + (jbyte *) store_c.privateMeta.data()); + for (auto &user: store_c.users) { + ctx->CallBooleanMethod(users, + addToArrayMID, + ctx->NewStringUTF(user.c_str())); + } + for (auto &manager: store_c.managers) { + ctx->CallBooleanMethod(managers, + addToArrayMID, + ctx->NewStringUTF(manager.c_str())); + } - jobject users = ctx->NewObject(arrayCls, initArrayMID); - jobject managers = ctx->NewObject(arrayCls, initArrayMID); - jbyteArray publicMeta = ctx->NewByteArray(store_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(store_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, store_c.publicMeta.size(), - (jbyte *) store_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, store_c.privateMeta.size(), - (jbyte *) store_c.privateMeta.data()); - for (auto &user: store_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - ctx->NewStringUTF(user.c_str())); - } - for (auto &manager: store_c.managers) { - ctx->CallBooleanMethod(managers, - addToArrayMID, - ctx->NewStringUTF(manager.c_str())); + return ctx->NewObject( + storeCls, + initStoreMID, + ctx->NewStringUTF(store_c.storeId.c_str()), + ctx->NewStringUTF(store_c.contextId.c_str()), + ctx.long2jLong(store_c.createDate), + ctx->NewStringUTF(store_c.creator.c_str()), + ctx.long2jLong(store_c.lastModificationDate), + ctx.long2jLong(store_c.lastFileDate), + ctx->NewStringUTF(store_c.lastModifier.c_str()), + users, + managers, + ctx.long2jLong(store_c.version), + publicMeta, + privateMeta, + containerPolicy2Java(ctx, store_c.policy), + ctx.long2jLong(store_c.filesCount), + ctx.long2jLong(store_c.statusCode), + ctx.long2jLong(store_c.schemaVersion) + ); } - return ctx->NewObject( - storeCls, - initStoreMID, - ctx->NewStringUTF(store_c.storeId.c_str()), - ctx->NewStringUTF(store_c.contextId.c_str()), - ctx.long2jLong(store_c.createDate), - ctx->NewStringUTF(store_c.creator.c_str()), - ctx.long2jLong(store_c.lastModificationDate), - ctx.long2jLong(store_c.lastFileDate), - ctx->NewStringUTF(store_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(store_c.version), - publicMeta, - privateMeta, - containerPolicy2Java(ctx, store_c.policy), - ctx.long2jLong(store_c.filesCount), - ctx.long2jLong(store_c.statusCode), - ctx.long2jLong(store_c.schemaVersion) - ); - } + //Inbox + jobject inbox2Java(JniContextUtils &ctx, privmx::endpoint::inbox::Inbox inbox_c) { + jclass inboxCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/Inbox"); + jmethodID initInboxMID = ctx->GetMethodID( + inboxCls, + "", + "(" + "Ljava/lang/String;" //inboxId + "Ljava/lang/String;" //contextId + "Ljava/lang/Long;" //createDate + "Ljava/lang/String;" //creator + "Ljava/lang/Long;" //lastModificationDate + "Ljava/lang/String;" //lastModifier + "Ljava/util/List;" //users + "Ljava/util/List;" //managers + "Ljava/lang/Long;" //version + "[B" //publicMeta + "[B" //privateMeta + "Lcom/simplito/java/privmx_endpoint/model/FilesConfig;" //filesConfig + "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicyWithoutItem;" //policy + "Ljava/lang/Long;" //statusCode + "Ljava/lang/Long;" //schemaVersion + ")V" + ); + jclass arrayCls = ctx->FindClass("java/util/ArrayList"); + jmethodID initArrayMID = ctx->GetMethodID( + arrayCls, + "", + "()V"); + jmethodID addToArrayMID = ctx->GetMethodID( + arrayCls, + "add", + "(Ljava/lang/Object;)Z" + ); + jobject users = ctx->NewObject(arrayCls, initArrayMID); + jobject managers = ctx->NewObject(arrayCls, initArrayMID); + jbyteArray publicMeta = ctx->NewByteArray(inbox_c.publicMeta.size()); + jbyteArray privateMeta = ctx->NewByteArray(inbox_c.privateMeta.size()); + ctx->SetByteArrayRegion(publicMeta, 0, inbox_c.publicMeta.size(), + (jbyte *) inbox_c.publicMeta.data()); + ctx->SetByteArrayRegion(privateMeta, 0, inbox_c.privateMeta.size(), + (jbyte *) inbox_c.privateMeta.data()); + for (auto &user: inbox_c.users) { + ctx->CallBooleanMethod(users, + addToArrayMID, + ctx->NewStringUTF(user.c_str())); + } + for (auto &manager: inbox_c.managers) { + ctx->CallBooleanMethod(managers, + addToArrayMID, + ctx->NewStringUTF(manager.c_str())); + } + + jobject filesConfig = nullptr; + if (inbox_c.filesConfig.has_value()) { + filesConfig = filesConfig2Java(ctx, inbox_c.filesConfig.value()); + } - //Inbox - jobject inbox2Java(JniContextUtils &ctx, privmx::endpoint::inbox::Inbox inbox_c) { - jclass inboxCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Inbox"); - jmethodID initInboxMID = ctx->GetMethodID( - inboxCls, - "", - "(" - "Ljava/lang/String;" //inboxId - "Ljava/lang/String;" //contextId - "Ljava/lang/Long;" //createDate - "Ljava/lang/String;" //creator - "Ljava/lang/Long;" //lastModificationDate - "Ljava/lang/String;" //lastModifier - "Ljava/util/List;" //users - "Ljava/util/List;" //managers - "Ljava/lang/Long;" //version - "[B" //publicMeta - "[B" //privateMeta - "Lcom/simplito/java/privmx_endpoint/model/FilesConfig;" //filesConfig - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicyWithoutItem;" //policy - "Ljava/lang/Long;" //statusCode - "Ljava/lang/Long;" //schemaVersion - ")V" - ); - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jobject users = ctx->NewObject(arrayCls, initArrayMID); - jobject managers = ctx->NewObject(arrayCls, initArrayMID); - jbyteArray publicMeta = ctx->NewByteArray(inbox_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(inbox_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, inbox_c.publicMeta.size(), - (jbyte *) inbox_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, inbox_c.privateMeta.size(), - (jbyte *) inbox_c.privateMeta.data()); - for (auto &user: inbox_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - ctx->NewStringUTF(user.c_str())); - } - for (auto &manager: inbox_c.managers) { - ctx->CallBooleanMethod(managers, - addToArrayMID, - ctx->NewStringUTF(manager.c_str())); + return ctx->NewObject( + inboxCls, + initInboxMID, + ctx->NewStringUTF(inbox_c.inboxId.c_str()), + ctx->NewStringUTF(inbox_c.contextId.c_str()), + ctx.long2jLong(inbox_c.createDate), + ctx->NewStringUTF(inbox_c.creator.c_str()), + ctx.long2jLong(inbox_c.lastModificationDate), + ctx->NewStringUTF(inbox_c.lastModifier.c_str()), + users, + managers, + ctx.long2jLong(inbox_c.version), + publicMeta, + privateMeta, + filesConfig, + containerPolicyWithoutItem2Java(ctx, inbox_c.policy), + ctx.long2jLong(inbox_c.statusCode), + ctx.long2jLong(inbox_c.schemaVersion) + ); } - jobject filesConfig = nullptr; - if (inbox_c.filesConfig.has_value()) { - filesConfig = filesConfig2Java(ctx, inbox_c.filesConfig.value()); + jobject + inboxEntry2Java(JniContextUtils &ctx, privmx::endpoint::inbox::InboxEntry inboxEntry_c) { + jclass inboxEntryCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/InboxEntry"); + jmethodID initEntryViewMID = ctx->GetMethodID( + inboxEntryCls, + "", + "(" + "Ljava/lang/String;" //entryId + "Ljava/lang/String;" //inboxId + "[B" //data + "Ljava/util/List;" //files + "Ljava/lang/String;" //authorPubKey + "Ljava/lang/Long;" // createDate + "Ljava/lang/Long;" // statusCode + "Ljava/lang/Long;" // schemaVersion + ")V" + ); + jclass arrayCls = ctx->FindClass("java/util/ArrayList"); + jmethodID initArrayMID = ctx->GetMethodID( + arrayCls, + "", + "()V"); + jmethodID addToArrayMID = ctx->GetMethodID( + arrayCls, + "add", + "(Ljava/lang/Object;)Z" + ); + jbyteArray data = ctx->NewByteArray(inboxEntry_c.data.size()); + ctx->SetByteArrayRegion(data, 0, inboxEntry_c.data.size(), + (jbyte *) inboxEntry_c.data.data()); + jobject files = ctx->NewObject(arrayCls, initArrayMID); + for (auto &file: inboxEntry_c.files) { + ctx->CallBooleanMethod(files, + addToArrayMID, + file2Java(ctx, file)); + } + return ctx->NewObject( + inboxEntryCls, + initEntryViewMID, + ctx->NewStringUTF(inboxEntry_c.entryId.c_str()), + ctx->NewStringUTF(inboxEntry_c.inboxId.c_str()), + data, + files, + ctx->NewStringUTF(inboxEntry_c.authorPubKey.c_str()), + ctx.long2jLong(inboxEntry_c.createDate), + ctx.long2jLong(inboxEntry_c.statusCode), + ctx.long2jLong(inboxEntry_c.schemaVersion) + ); } - return ctx->NewObject( - inboxCls, - initInboxMID, - ctx->NewStringUTF(inbox_c.inboxId.c_str()), - ctx->NewStringUTF(inbox_c.contextId.c_str()), - ctx.long2jLong(inbox_c.createDate), - ctx->NewStringUTF(inbox_c.creator.c_str()), - ctx.long2jLong(inbox_c.lastModificationDate), - ctx->NewStringUTF(inbox_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(inbox_c.version), - publicMeta, - privateMeta, - filesConfig, - containerPolicyWithoutItem2Java(ctx, inbox_c.policy), - ctx.long2jLong(inbox_c.statusCode), - ctx.long2jLong(inbox_c.schemaVersion) - ); - } - - jobject - inboxEntry2Java(JniContextUtils &ctx, privmx::endpoint::inbox::InboxEntry inboxEntry_c) { - jclass inboxEntryCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/InboxEntry"); - jmethodID initEntryViewMID = ctx->GetMethodID( - inboxEntryCls, - "", - "(" - "Ljava/lang/String;" //entryId - "Ljava/lang/String;" //inboxId - "[B" //data - "Ljava/util/List;" //files - "Ljava/lang/String;" //authorPubKey - "Ljava/lang/Long;" // createDate - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - ")V" - ); - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jbyteArray data = ctx->NewByteArray(inboxEntry_c.data.size()); - ctx->SetByteArrayRegion(data, 0, inboxEntry_c.data.size(), - (jbyte *) inboxEntry_c.data.data()); - jobject files = ctx->NewObject(arrayCls, initArrayMID); - for (auto &file: inboxEntry_c.files) { - ctx->CallBooleanMethod(files, - addToArrayMID, - file2Java(ctx, file)); + jobject inboxPublicView2Java(JniContextUtils &ctx, + privmx::endpoint::inbox::InboxPublicView inboxPublicView_c) { + jclass inboxPublicViewCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/InboxPublicView"); + jmethodID initInboxPublicViewMID = ctx->GetMethodID( + inboxPublicViewCls, + "", + "(" + "Ljava/lang/String;" + "Ljava/lang/Long;" + "[B" + ")V" + ); + jbyteArray publicMeta = ctx->NewByteArray(inboxPublicView_c.publicMeta.size()); + ctx->SetByteArrayRegion(publicMeta, 0, inboxPublicView_c.publicMeta.size(), + (jbyte *) inboxPublicView_c.publicMeta.data()); + return ctx->NewObject( + inboxPublicViewCls, + initInboxPublicViewMID, + ctx->NewStringUTF(inboxPublicView_c.inboxId.c_str()), + ctx.long2jLong(inboxPublicView_c.version), + publicMeta + ); } - return ctx->NewObject( - inboxEntryCls, - initEntryViewMID, - ctx->NewStringUTF(inboxEntry_c.entryId.c_str()), - ctx->NewStringUTF(inboxEntry_c.inboxId.c_str()), - data, - files, - ctx->NewStringUTF(inboxEntry_c.authorPubKey.c_str()), - ctx.long2jLong(inboxEntry_c.createDate), - ctx.long2jLong(inboxEntry_c.statusCode), - ctx.long2jLong(inboxEntry_c.schemaVersion) - ); - } - - jobject inboxPublicView2Java(JniContextUtils &ctx, - privmx::endpoint::inbox::InboxPublicView inboxPublicView_c) { - jclass inboxPublicViewCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/InboxPublicView"); - jmethodID initInboxPublicViewMID = ctx->GetMethodID( - inboxPublicViewCls, - "", - "(" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "[B" - ")V" - ); - jbyteArray publicMeta = ctx->NewByteArray(inboxPublicView_c.publicMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, inboxPublicView_c.publicMeta.size(), - (jbyte *) inboxPublicView_c.publicMeta.data()); - return ctx->NewObject( - inboxPublicViewCls, - initInboxPublicViewMID, - ctx->NewStringUTF(inboxPublicView_c.inboxId.c_str()), - ctx.long2jLong(inboxPublicView_c.version), - publicMeta - ); - } - - jobject - filesConfig2Java(JniContextUtils &ctx, privmx::endpoint::inbox::FilesConfig filesConfig_c) { - jclass filesConfigCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/FilesConfig"); - jmethodID initFilesConfigMID = ctx->GetMethodID( - filesConfigCls, - "", - "(" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - ")V" - ); - return ctx->NewObject( - filesConfigCls, - initFilesConfigMID, - ctx.long2jLong(filesConfig_c.minCount), - ctx.long2jLong(filesConfig_c.maxCount), - ctx.long2jLong(filesConfig_c.maxFileSize), - ctx.long2jLong(filesConfig_c.maxWholeUploadSize) - ); - } - - //Files - jobject serverFileInfo2Java(JniContextUtils &ctx, - privmx::endpoint::store::ServerFileInfo serverFileInfo_c) { - jclass serverFileInfoCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ServerFileInfo"); - jmethodID initServerFileInfoMID = ctx->GetMethodID( - serverFileInfoCls, - "", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;)V" - ); - return ctx->NewObject( - serverFileInfoCls, - initServerFileInfoMID, - ctx->NewStringUTF(serverFileInfo_c.storeId.c_str()), - ctx->NewStringUTF(serverFileInfo_c.fileId.c_str()), - ctx.long2jLong(serverFileInfo_c.createDate), - ctx->NewStringUTF(serverFileInfo_c.author.c_str()) - ); - } - - jobject file2Java(JniContextUtils &ctx, privmx::endpoint::store::File file_c) { - jclass fileCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/File"); - jmethodID initFileMID = ctx->GetMethodID( - fileCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/ServerFileInfo;" // info - "[B" // publicMeta - "[B" // privateMeta - "Ljava/lang/Long;" // size - "Ljava/lang/String;" // authorPubKey - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - "Z" // randomWrite - ")V" - ); - - jbyteArray publicMeta = ctx->NewByteArray(file_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(file_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, file_c.publicMeta.size(), - (jbyte *) file_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, file_c.privateMeta.size(), - (jbyte *) file_c.privateMeta.data()); + jobject + filesConfig2Java(JniContextUtils &ctx, privmx::endpoint::inbox::FilesConfig filesConfig_c) { + jclass filesConfigCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/FilesConfig"); + jmethodID initFilesConfigMID = ctx->GetMethodID( + filesConfigCls, + "", + "(" + "Ljava/lang/Long;" + "Ljava/lang/Long;" + "Ljava/lang/Long;" + "Ljava/lang/Long;" + ")V" + ); + return ctx->NewObject( + filesConfigCls, + initFilesConfigMID, + ctx.long2jLong(filesConfig_c.minCount), + ctx.long2jLong(filesConfig_c.maxCount), + ctx.long2jLong(filesConfig_c.maxFileSize), + ctx.long2jLong(filesConfig_c.maxWholeUploadSize) + ); + } - return ctx->NewObject( - fileCls, - initFileMID, - serverFileInfo2Java(ctx, file_c.info), - publicMeta, - privateMeta, - ctx.long2jLong(file_c.size), - ctx->NewStringUTF(file_c.authorPubKey.c_str()), - ctx.long2jLong(file_c.statusCode), - ctx.long2jLong(file_c.schemaVersion), - (jboolean) file_c.randomWrite - ); - } + //Files + jobject serverFileInfo2Java(JniContextUtils &ctx, + privmx::endpoint::store::ServerFileInfo serverFileInfo_c) { + jclass serverFileInfoCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/ServerFileInfo"); + jmethodID initServerFileInfoMID = ctx->GetMethodID( + serverFileInfoCls, + "", + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;)V" + ); + return ctx->NewObject( + serverFileInfoCls, + initServerFileInfoMID, + ctx->NewStringUTF(serverFileInfo_c.storeId.c_str()), + ctx->NewStringUTF(serverFileInfo_c.fileId.c_str()), + ctx.long2jLong(serverFileInfo_c.createDate), + ctx->NewStringUTF(serverFileInfo_c.author.c_str()) + ); + } - jobject fileChange2Java( - JniContextUtils &ctx, - privmx::endpoint::store::FileChange file_change_c - ) { - jclass fileChangeCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/FileChange"); + jobject file2Java(JniContextUtils &ctx, privmx::endpoint::store::File file_c) { + jclass fileCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/File"); + jmethodID initFileMID = ctx->GetMethodID( + fileCls, + "", + "(" + "Lcom/simplito/java/privmx_endpoint/model/ServerFileInfo;" // info + "[B" // publicMeta + "[B" // privateMeta + "Ljava/lang/Long;" // size + "Ljava/lang/String;" // authorPubKey + "Ljava/lang/Long;" // statusCode + "Ljava/lang/Long;" // schemaVersion + "Z" // randomWrite + ")V" + ); - jmethodID initFcMID = ctx->GetMethodID( - fileChangeCls, - "", - "(" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "Z" - ")V" - ); + jbyteArray publicMeta = ctx->NewByteArray(file_c.publicMeta.size()); + jbyteArray privateMeta = ctx->NewByteArray(file_c.privateMeta.size()); + ctx->SetByteArrayRegion(publicMeta, 0, file_c.publicMeta.size(), + (jbyte *) file_c.publicMeta.data()); - jobject javaPos = ctx.long2jLong(file_change_c.pos); - jobject javaLength = ctx.long2jLong(file_change_c.length); - jboolean javaTruncate = (jboolean) file_change_c.truncate; + ctx->SetByteArrayRegion(privateMeta, 0, file_c.privateMeta.size(), + (jbyte *) file_c.privateMeta.data()); - return ctx->NewObject( - fileChangeCls, - initFcMID, - javaPos, - javaLength, - javaTruncate - ); - } + return ctx->NewObject( + fileCls, + initFileMID, + serverFileInfo2Java(ctx, file_c.info), + publicMeta, + privateMeta, + ctx.long2jLong(file_c.size), + ctx->NewStringUTF(file_c.authorPubKey.c_str()), + ctx.long2jLong(file_c.statusCode), + ctx.long2jLong(file_c.schemaVersion), + (jboolean) file_c.randomWrite + ); + } - //Event - jobject contextUsersStatusChangedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContextUsersStatusChangedEventData contextUsersStatusChangedEventData_c - ) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jclass ContextUsersStatusChangedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ContextUsersStatusChangedEventData"); - jmethodID initContextUsersStatusChangedEventDataMID = ctx->GetMethodID( - ContextUsersStatusChangedEventDataCls, - "", - "(" - "Ljava/lang/String;" // contextId - "Ljava/util/List;" // users - ")V" - ); + jobject fileChange2Java( + JniContextUtils &ctx, + privmx::endpoint::store::FileChange file_change_c + ) { + jclass fileChangeCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/FileChange"); + + jmethodID initFcMID = ctx->GetMethodID( + fileChangeCls, + "", + "(" + "Ljava/lang/Long;" + "Ljava/lang/Long;" + "Z" + ")V" + ); - jobject users = ctx->NewObject(arrayCls, initArrayMID); + jobject javaPos = ctx.long2jLong(file_change_c.pos); + jobject javaLength = ctx.long2jLong(file_change_c.length); + jboolean javaTruncate = (jboolean) file_change_c.truncate; - for (auto &user: contextUsersStatusChangedEventData_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - userWithAction2Java(ctx, user) + return ctx->NewObject( + fileChangeCls, + initFcMID, + javaPos, + javaLength, + javaTruncate ); } - return ctx->NewObject( - ContextUsersStatusChangedEventDataCls, - initContextUsersStatusChangedEventDataMID, - ctx->NewStringUTF(contextUsersStatusChangedEventData_c.contextId.c_str()), - users - ); - } - - jobject contextUserEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContextUserEventData contextUserEventData_c - ) { - jclass contextUserEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ContextUserEventData"); - jmethodID initContextUserEventDataMID = ctx->GetMethodID( - contextUserEventDataCls, - "", - "(" - "Ljava/lang/String;" // contextId - "Lcom/simplito/java/privmx_endpoint/model/UserWithPubKey;" // user - ")V" - ); - - return ctx->NewObject( - contextUserEventDataCls, - initContextUserEventDataMID, - ctx->NewStringUTF(contextUserEventData_c.contextId.c_str()), - userWithPubKey2Java(ctx, contextUserEventData_c.user) - ); - } + //Event + jobject contextUsersStatusChangedEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::core::ContextUsersStatusChangedEventData contextUsersStatusChangedEventData_c + ) { + jclass arrayCls = ctx->FindClass("java/util/ArrayList"); + jmethodID initArrayMID = ctx->GetMethodID( + arrayCls, + "", + "()V"); + jmethodID addToArrayMID = ctx->GetMethodID( + arrayCls, + "add", + "(Ljava/lang/Object;)Z" + ); + jclass ContextUsersStatusChangedEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/ContextUsersStatusChangedEventData"); + jmethodID initContextUsersStatusChangedEventDataMID = ctx->GetMethodID( + ContextUsersStatusChangedEventDataCls, + "", + "(" + "Ljava/lang/String;" // contextId + "Ljava/util/List;" // users + ")V" + ); - // CollectionChangedEventData - jobject collectionChangedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::core::CollectionChangedEventData collectionChangedEventData_c - ) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jclass collectionChangedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/CollectionChangedEventData"); - jmethodID initCollectionChangedEventDataMID = ctx->GetMethodID( - collectionChangedEventDataCls, - "", - "(" - "Ljava/lang/String;" // moduleType - "Ljava/lang/String;" // moduleId - "Ljava/lang/Long;" // affectedItemsCount - "Ljava/util/List;" // items - ")V" - ); + jobject users = ctx->NewObject(arrayCls, initArrayMID); - jobject items = ctx->NewObject(arrayCls, initArrayMID); + for (auto &user: contextUsersStatusChangedEventData_c.users) { + ctx->CallBooleanMethod(users, + addToArrayMID, + userWithAction2Java(ctx, user) + ); + } - for (auto &item: collectionChangedEventData_c.items) { - ctx->CallBooleanMethod(items, - addToArrayMID, - collectionItemChange2Java(ctx, item) + return ctx->NewObject( + ContextUsersStatusChangedEventDataCls, + initContextUsersStatusChangedEventDataMID, + ctx->NewStringUTF(contextUsersStatusChangedEventData_c.contextId.c_str()), + users ); } - return ctx->NewObject( - collectionChangedEventDataCls, - initCollectionChangedEventDataMID, - ctx->NewStringUTF(collectionChangedEventData_c.moduleType.c_str()), - ctx->NewStringUTF(collectionChangedEventData_c.moduleId.c_str()), - ctx.long2jLong(collectionChangedEventData_c.affectedItemsCount), - items - ); - } + jobject contextUserEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::core::ContextUserEventData contextUserEventData_c + ) { + jclass contextUserEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/ContextUserEventData"); + jmethodID initContextUserEventDataMID = ctx->GetMethodID( + contextUserEventDataCls, + "", + "(" + "Ljava/lang/String;" // contextId + "Lcom/simplito/java/privmx_endpoint/model/UserWithPubKey;" // user + ")V" + ); - jobject storeFileDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::store::StoreFileDeletedEventData storeFileDeletedEventData_c) { - jclass storeFileDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StoreFileDeletedEventData"); - jmethodID initStoreFileDeletedEventDataMID = ctx->GetMethodID( - storeFileDeletedEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - storeFileDeletedEventDataCls, - initStoreFileDeletedEventDataMID, - ctx->NewStringUTF(storeFileDeletedEventData_c.fileId.c_str()), - ctx->NewStringUTF(storeFileDeletedEventData_c.contextId.c_str()), - ctx->NewStringUTF(storeFileDeletedEventData_c.storeId.c_str()) - ); - } + return ctx->NewObject( + contextUserEventDataCls, + initContextUserEventDataMID, + ctx->NewStringUTF(contextUserEventData_c.contextId.c_str()), + userWithPubKey2Java(ctx, contextUserEventData_c.user) + ); + } - jobject storeStatsChangedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::store::StoreStatsChangedEventData storeStatsChangedEventData_c) { - jclass storeStatsChangedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StoreStatsChangedEventData"); - jmethodID initStoreStatsChangedEventDataMID = ctx->GetMethodID( - storeStatsChangedEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;)V" - ); - return ctx->NewObject( - storeStatsChangedEventDataCls, - initStoreStatsChangedEventDataMID, - ctx->NewStringUTF(storeStatsChangedEventData_c.storeId.c_str()), - ctx->NewStringUTF(storeStatsChangedEventData_c.contextId.c_str()), - ctx.long2jLong(storeStatsChangedEventData_c.lastFileDate), - ctx.long2jLong(storeStatsChangedEventData_c.filesCount) - ); - } + // CollectionChangedEventData + jobject collectionChangedEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::core::CollectionChangedEventData collectionChangedEventData_c + ) { + jclass arrayCls = ctx->FindClass("java/util/ArrayList"); + jmethodID initArrayMID = ctx->GetMethodID( + arrayCls, + "", + "()V"); + jmethodID addToArrayMID = ctx->GetMethodID( + arrayCls, + "add", + "(Ljava/lang/Object;)Z" + ); + jclass collectionChangedEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/CollectionChangedEventData"); + jmethodID initCollectionChangedEventDataMID = ctx->GetMethodID( + collectionChangedEventDataCls, + "", + "(" + "Ljava/lang/String;" // moduleType + "Ljava/lang/String;" // moduleId + "Ljava/lang/Long;" // affectedItemsCount + "Ljava/util/List;" // items + ")V" + ); - jobject threadDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::thread::ThreadDeletedEventData threadDeletedEventData_c) { - jclass threadDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ThreadDeletedEventData"); - jmethodID initThreadDeletedEventDataMID = ctx->GetMethodID( - threadDeletedEventDataCls, - "", - "(Ljava/lang/String;)V" - ); - return ctx->NewObject( - threadDeletedEventDataCls, - initThreadDeletedEventDataMID, - ctx->NewStringUTF(threadDeletedEventData_c.threadId.c_str()) - ); - } + jobject items = ctx->NewObject(arrayCls, initArrayMID); - jobject threadDeletedMessageEventData2Java(JniContextUtils &ctx, - privmx::endpoint::thread::ThreadDeletedMessageEventData threadDeletedMessageEventData) { - jclass threadDeletedMessageEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ThreadDeletedMessageEventData"); - jmethodID initThreadDeletedMessageEventDataMID = ctx->GetMethodID( - threadDeletedMessageEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - threadDeletedMessageEventDataCls, - initThreadDeletedMessageEventDataMID, - ctx->NewStringUTF(threadDeletedMessageEventData.threadId.c_str()), - ctx->NewStringUTF(threadDeletedMessageEventData.messageId.c_str()) - ); - } + for (auto &item: collectionChangedEventData_c.items) { + ctx->CallBooleanMethod(items, + addToArrayMID, + collectionItemChange2Java(ctx, item) + ); + } - jobject storeDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::store::StoreDeletedEventData storeDeletedEventData_c) { - jclass storeDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StoreDeletedEventData"); - jmethodID initStoreDeletedEventDataMID = ctx->GetMethodID( - storeDeletedEventDataCls, - "", - "(Ljava/lang/String;)V" - ); - return ctx->NewObject( - storeDeletedEventDataCls, - initStoreDeletedEventDataMID, - ctx->NewStringUTF(storeDeletedEventData_c.storeId.c_str()) - ); - } + return ctx->NewObject( + collectionChangedEventDataCls, + initCollectionChangedEventDataMID, + ctx->NewStringUTF(collectionChangedEventData_c.moduleType.c_str()), + ctx->NewStringUTF(collectionChangedEventData_c.moduleId.c_str()), + ctx.long2jLong(collectionChangedEventData_c.affectedItemsCount), + items + ); + } - jobject storeFileUpdatedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::store::StoreFileUpdatedEventData storeFileUpdatedEventData_c - ) { - jclass storeFileUpdatedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StoreFileUpdatedEventData"); - jmethodID initStoreFileUpdatedEventDataMID = ctx->GetMethodID( - storeFileUpdatedEventDataCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/File;" - "Ljava/util/List;" - ")V" - ); + jobject storeFileDeletedEventData2Java(JniContextUtils &ctx, + privmx::endpoint::store::StoreFileDeletedEventData storeFileDeletedEventData_c) { + jclass storeFileDeletedEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/StoreFileDeletedEventData"); + jmethodID initStoreFileDeletedEventDataMID = ctx->GetMethodID( + storeFileDeletedEventDataCls, + "", + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" + ); + return ctx->NewObject( + storeFileDeletedEventDataCls, + initStoreFileDeletedEventDataMID, + ctx->NewStringUTF(storeFileDeletedEventData_c.fileId.c_str()), + ctx->NewStringUTF(storeFileDeletedEventData_c.contextId.c_str()), + ctx->NewStringUTF(storeFileDeletedEventData_c.storeId.c_str()) + ); + } - jclass arrayListCls = ctx->FindClass("java/util/ArrayList"); - jmethodID arrayListInitMID = ctx->GetMethodID(arrayListCls, "", "()V"); - jmethodID arrayListAddMID = ctx->GetMethodID(arrayListCls, "add", - "(Ljava/lang/Object;)Z"); + jobject storeStatsChangedEventData2Java(JniContextUtils &ctx, + privmx::endpoint::store::StoreStatsChangedEventData storeStatsChangedEventData_c) { + jclass storeStatsChangedEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/StoreStatsChangedEventData"); + jmethodID initStoreStatsChangedEventDataMID = ctx->GetMethodID( + storeStatsChangedEventDataCls, + "", + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;)V" + ); + return ctx->NewObject( + storeStatsChangedEventDataCls, + initStoreStatsChangedEventDataMID, + ctx->NewStringUTF(storeStatsChangedEventData_c.storeId.c_str()), + ctx->NewStringUTF(storeStatsChangedEventData_c.contextId.c_str()), + ctx.long2jLong(storeStatsChangedEventData_c.lastFileDate), + ctx.long2jLong(storeStatsChangedEventData_c.filesCount) + ); + } - jobject changesList = ctx->NewObject( - arrayListCls, - arrayListInitMID - ); + jobject threadDeletedEventData2Java(JniContextUtils &ctx, + privmx::endpoint::thread::ThreadDeletedEventData threadDeletedEventData_c) { + jclass threadDeletedEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/ThreadDeletedEventData"); + jmethodID initThreadDeletedEventDataMID = ctx->GetMethodID( + threadDeletedEventDataCls, + "", + "(Ljava/lang/String;)V" + ); + return ctx->NewObject( + threadDeletedEventDataCls, + initThreadDeletedEventDataMID, + ctx->NewStringUTF(threadDeletedEventData_c.threadId.c_str()) + ); + } - for (const auto &change: storeFileUpdatedEventData_c.changes) { - jobject javaFileChange = fileChange2Java(ctx, change); - ctx->CallBooleanMethod(changesList, arrayListAddMID, javaFileChange); + jobject threadDeletedMessageEventData2Java(JniContextUtils &ctx, + privmx::endpoint::thread::ThreadDeletedMessageEventData threadDeletedMessageEventData) { + jclass threadDeletedMessageEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/ThreadDeletedMessageEventData"); + jmethodID initThreadDeletedMessageEventDataMID = ctx->GetMethodID( + threadDeletedMessageEventDataCls, + "", + "(Ljava/lang/String;Ljava/lang/String;)V" + ); + return ctx->NewObject( + threadDeletedMessageEventDataCls, + initThreadDeletedMessageEventDataMID, + ctx->NewStringUTF(threadDeletedMessageEventData.threadId.c_str()), + ctx->NewStringUTF(threadDeletedMessageEventData.messageId.c_str()) + ); } - return ctx->NewObject( - storeFileUpdatedEventDataCls, - initStoreFileUpdatedEventDataMID, - file2Java(ctx, storeFileUpdatedEventData_c.file), - changesList - ); - } + jobject storeDeletedEventData2Java(JniContextUtils &ctx, + privmx::endpoint::store::StoreDeletedEventData storeDeletedEventData_c) { + jclass storeDeletedEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/StoreDeletedEventData"); + jmethodID initStoreDeletedEventDataMID = ctx->GetMethodID( + storeDeletedEventDataCls, + "", + "(Ljava/lang/String;)V" + ); + return ctx->NewObject( + storeDeletedEventDataCls, + initStoreDeletedEventDataMID, + ctx->NewStringUTF(storeDeletedEventData_c.storeId.c_str()) + ); + } - jobject threadStatsEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::thread::ThreadStatsEventData threadStatsEventData_c - ) { - jclass threadStatsEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ThreadStatsEventData"); - jmethodID initThreadStatsEventDataMID = ctx->GetMethodID( - threadStatsEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;)V" - ); - return ctx->NewObject( - threadStatsEventDataCls, - initThreadStatsEventDataMID, - ctx->NewStringUTF(threadStatsEventData_c.threadId.c_str()), - ctx.long2jLong(threadStatsEventData_c.lastMsgDate), - ctx.long2jLong(threadStatsEventData_c.messagesCount) - ); - } + jobject storeFileUpdatedEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::store::StoreFileUpdatedEventData storeFileUpdatedEventData_c + ) { + jclass storeFileUpdatedEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/StoreFileUpdatedEventData"); + jmethodID initStoreFileUpdatedEventDataMID = ctx->GetMethodID( + storeFileUpdatedEventDataCls, + "", + "(" + "Lcom/simplito/java/privmx_endpoint/model/File;" + "Ljava/util/List;" + ")V" + ); - jobject inboxDeletedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::inbox::InboxDeletedEventData inboxDeletedEventData_c - ) { - jclass inboxDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/InboxDeletedEventData"); - jmethodID initInboxDeletedEventDataMID = ctx->GetMethodID( - inboxDeletedEventDataCls, - "", - "(Ljava/lang/String;)V" - ); - return ctx->NewObject( - inboxDeletedEventDataCls, - initInboxDeletedEventDataMID, - ctx->NewStringUTF(inboxDeletedEventData_c.inboxId.c_str()) - ); - } + jclass arrayListCls = ctx->FindClass("java/util/ArrayList"); + jmethodID arrayListInitMID = ctx->GetMethodID(arrayListCls, "", "()V"); + jmethodID arrayListAddMID = ctx->GetMethodID(arrayListCls, "add", + "(Ljava/lang/Object;)Z"); - jobject inboxEntryDeletedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::inbox::InboxEntryDeletedEventData inboxEntryDeletedEventData_c - ) { - jclass inboxEntryDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/InboxEntryDeletedEventData"); - jmethodID initInboxEntryDeletedEventDataMID = ctx->GetMethodID( - inboxEntryDeletedEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - inboxEntryDeletedEventDataCls, - initInboxEntryDeletedEventDataMID, - ctx->NewStringUTF(inboxEntryDeletedEventData_c.inboxId.c_str()), - ctx->NewStringUTF(inboxEntryDeletedEventData_c.entryId.c_str()) - ); - } + jobject changesList = ctx->NewObject( + arrayListCls, + arrayListInitMID + ); - jobject contextCustomEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::event::ContextCustomEventData contextCustomEventData_c - ) { - jclass contextCustomEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ContextCustomEventData"); - jmethodID initContextCustomEventDataMID = ctx->GetMethodID( - contextCustomEventDataCls, - "", - "(" - "Ljava/lang/String;" // contextId - "Ljava/lang/String;" // userId - "[B" // payload - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - ")V" - ); - jbyteArray payload = ctx->NewByteArray(contextCustomEventData_c.payload.size()); - ctx->SetByteArrayRegion(payload, 0, contextCustomEventData_c.payload.size(), - (jbyte *) contextCustomEventData_c.payload.data()); - return ctx->NewObject( - contextCustomEventDataCls, - initContextCustomEventDataMID, - ctx->NewStringUTF(contextCustomEventData_c.contextId.c_str()), - ctx->NewStringUTF(contextCustomEventData_c.userId.c_str()), - payload, - ctx.long2jLong(contextCustomEventData_c.statusCode), - ctx.long2jLong(contextCustomEventData_c.schemaVersion) - ); - } + for (const auto &change: storeFileUpdatedEventData_c.changes) { + jobject javaFileChange = fileChange2Java(ctx, change); + ctx->CallBooleanMethod(changesList, arrayListAddMID, javaFileChange); + } + return ctx->NewObject( + storeFileUpdatedEventDataCls, + initStoreFileUpdatedEventDataMID, + file2Java(ctx, storeFileUpdatedEventData_c.file), + changesList + ); + } - jobject kvdbDeletedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::kvdb::KvdbDeletedEventData kvdbDeletedEventData_c - ) { - jclass kvdbDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/KvdbDeletedEventData"); - jmethodID initKvdbDeletedEventDataMID = ctx->GetMethodID( - kvdbDeletedEventDataCls, - "", - "(" - "Ljava/lang/String;" // kvdbId - ")V" - ); + jobject threadStatsEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::thread::ThreadStatsEventData threadStatsEventData_c + ) { + jclass threadStatsEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/ThreadStatsEventData"); + jmethodID initThreadStatsEventDataMID = ctx->GetMethodID( + threadStatsEventDataCls, + "", + "(Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;)V" + ); + return ctx->NewObject( + threadStatsEventDataCls, + initThreadStatsEventDataMID, + ctx->NewStringUTF(threadStatsEventData_c.threadId.c_str()), + ctx.long2jLong(threadStatsEventData_c.lastMsgDate), + ctx.long2jLong(threadStatsEventData_c.messagesCount) + ); + } - return ctx->NewObject( - kvdbDeletedEventDataCls, - initKvdbDeletedEventDataMID, - ctx->NewStringUTF(kvdbDeletedEventData_c.kvdbId.c_str()) - ); - } + jobject inboxDeletedEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::inbox::InboxDeletedEventData inboxDeletedEventData_c + ) { + jclass inboxDeletedEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/InboxDeletedEventData"); + jmethodID initInboxDeletedEventDataMID = ctx->GetMethodID( + inboxDeletedEventDataCls, + "", + "(Ljava/lang/String;)V" + ); + return ctx->NewObject( + inboxDeletedEventDataCls, + initInboxDeletedEventDataMID, + ctx->NewStringUTF(inboxDeletedEventData_c.inboxId.c_str()) + ); + } - jobject kvdbStatsEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::kvdb::KvdbStatsEventData kvdbStatsEventData_c - ) { - jclass kvdbStatsEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/KvdbStatsEventData"); - jmethodID initKvdbStatsEventDataMID = ctx->GetMethodID( - kvdbStatsEventDataCls, - "", - "(" - "Ljava/lang/String;" // kvdbId - "Ljava/lang/Long;" // lastEntryDate - "Ljava/lang/Long;" // entries - ")V" - ); + jobject inboxEntryDeletedEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::inbox::InboxEntryDeletedEventData inboxEntryDeletedEventData_c + ) { + jclass inboxEntryDeletedEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/InboxEntryDeletedEventData"); + jmethodID initInboxEntryDeletedEventDataMID = ctx->GetMethodID( + inboxEntryDeletedEventDataCls, + "", + "(Ljava/lang/String;Ljava/lang/String;)V" + ); + return ctx->NewObject( + inboxEntryDeletedEventDataCls, + initInboxEntryDeletedEventDataMID, + ctx->NewStringUTF(inboxEntryDeletedEventData_c.inboxId.c_str()), + ctx->NewStringUTF(inboxEntryDeletedEventData_c.entryId.c_str()) + ); + } - return ctx->NewObject( - kvdbStatsEventDataCls, - initKvdbStatsEventDataMID, - ctx->NewStringUTF(kvdbStatsEventData_c.kvdbId.c_str()), - ctx.long2jLong(kvdbStatsEventData_c.lastEntryDate), - ctx.long2jLong(kvdbStatsEventData_c.entries) - ); - } + jobject contextCustomEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::event::ContextCustomEventData contextCustomEventData_c + ) { + jclass contextCustomEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/ContextCustomEventData"); + jmethodID initContextCustomEventDataMID = ctx->GetMethodID( + contextCustomEventDataCls, + "", + "(" + "Ljava/lang/String;" // contextId + "Ljava/lang/String;" // userId + "[B" // payload + "Ljava/lang/Long;" // statusCode + "Ljava/lang/Long;" // schemaVersion + ")V" + ); + jbyteArray payload = ctx->NewByteArray(contextCustomEventData_c.payload.size()); + ctx->SetByteArrayRegion(payload, 0, contextCustomEventData_c.payload.size(), + (jbyte *) contextCustomEventData_c.payload.data()); + return ctx->NewObject( + contextCustomEventDataCls, + initContextCustomEventDataMID, + ctx->NewStringUTF(contextCustomEventData_c.contextId.c_str()), + ctx->NewStringUTF(contextCustomEventData_c.userId.c_str()), + payload, + ctx.long2jLong(contextCustomEventData_c.statusCode), + ctx.long2jLong(contextCustomEventData_c.schemaVersion) + ); + } - jobject kvdbDeletedEntryEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::kvdb::KvdbDeletedEntryEventData kvdbDeletedEntryEventData_c - ) { - jclass kvdbDeletedEntryEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/KvdbDeletedEntryEventData"); - jmethodID initKvdbDeletedEntryEventDataMID = ctx->GetMethodID( - kvdbDeletedEntryEventDataCls, - "", - "(" - "Ljava/lang/String;" // kvdbId - "Ljava/lang/String;" // kvdbEntryKey - ")V" - ); - return ctx->NewObject( - kvdbDeletedEntryEventDataCls, - initKvdbDeletedEntryEventDataMID, - ctx->NewStringUTF(kvdbDeletedEntryEventData_c.kvdbId.c_str()), - ctx->NewStringUTF(kvdbDeletedEntryEventData_c.kvdbEntryKey.c_str()) - ); - } + jobject kvdbDeletedEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::kvdb::KvdbDeletedEventData kvdbDeletedEventData_c + ) { + jclass kvdbDeletedEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/KvdbDeletedEventData"); + jmethodID initKvdbDeletedEventDataMID = ctx->GetMethodID( + kvdbDeletedEventDataCls, + "", + "(" + "Ljava/lang/String;" // kvdbId + ")V" + ); - //Kvdb - jobject kvdb2Java( - JniContextUtils &ctx, - privmx::endpoint::kvdb::Kvdb kvdb_c - ) { - jclass kvdbCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Kvdb"); - jmethodID initKvdbMID = ctx->GetMethodID( - kvdbCls, - "", - "(" - "Ljava/lang/String;" //contextId - "Ljava/lang/String;" //kvdbId - "Ljava/lang/Long;" //createDate - "Ljava/lang/String;" //creator - "Ljava/lang/Long;" //lastModificationDate - "Ljava/lang/String;" //lastModifier - "Ljava/util/List;" //users - "Ljava/util/List;" //managers - "Ljava/lang/Long;" //version - "[B" //publicMeta - "[B" //privateMeta - "Ljava/lang/Long;" //entries - "Ljava/lang/Long;" //lastEntryDate - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy - "Ljava/lang/Long;" //statusCode - "Ljava/lang/Long;" //schemaVersion - ")V" - ); - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jobject users = ctx->NewObject(arrayCls, initArrayMID); - jobject managers = ctx->NewObject(arrayCls, initArrayMID); - jbyteArray publicMeta = ctx->NewByteArray(kvdb_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(kvdb_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, kvdb_c.publicMeta.size(), - (jbyte *) kvdb_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, kvdb_c.privateMeta.size(), - (jbyte *) kvdb_c.privateMeta.data()); - for (auto &user: kvdb_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - ctx->NewStringUTF(user.c_str())); + return ctx->NewObject( + kvdbDeletedEventDataCls, + initKvdbDeletedEventDataMID, + ctx->NewStringUTF(kvdbDeletedEventData_c.kvdbId.c_str()) + ); } - for (auto &manager: kvdb_c.managers) { - ctx->CallBooleanMethod(managers, - addToArrayMID, - ctx->NewStringUTF(manager.c_str())); + + jobject kvdbStatsEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::kvdb::KvdbStatsEventData kvdbStatsEventData_c + ) { + jclass kvdbStatsEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/KvdbStatsEventData"); + jmethodID initKvdbStatsEventDataMID = ctx->GetMethodID( + kvdbStatsEventDataCls, + "", + "(" + "Ljava/lang/String;" // kvdbId + "Ljava/lang/Long;" // lastEntryDate + "Ljava/lang/Long;" // entries + ")V" + ); + + return ctx->NewObject( + kvdbStatsEventDataCls, + initKvdbStatsEventDataMID, + ctx->NewStringUTF(kvdbStatsEventData_c.kvdbId.c_str()), + ctx.long2jLong(kvdbStatsEventData_c.lastEntryDate), + ctx.long2jLong(kvdbStatsEventData_c.entries) + ); } - return ctx->NewObject( - kvdbCls, - initKvdbMID, - ctx->NewStringUTF(kvdb_c.contextId.c_str()), - ctx->NewStringUTF(kvdb_c.kvdbId.c_str()), - ctx.long2jLong(kvdb_c.createDate), - ctx->NewStringUTF(kvdb_c.creator.c_str()), - ctx.long2jLong(kvdb_c.lastModificationDate), - ctx->NewStringUTF(kvdb_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(kvdb_c.version), - publicMeta, - privateMeta, - ctx.long2jLong(kvdb_c.entries), - ctx.long2jLong(kvdb_c.lastEntryDate), - containerPolicy2Java(ctx, kvdb_c.policy), - ctx.long2jLong(kvdb_c.statusCode), - ctx.long2jLong(kvdb_c.schemaVersion) - ); - } + jobject kvdbDeletedEntryEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::kvdb::KvdbDeletedEntryEventData kvdbDeletedEntryEventData_c + ) { + jclass kvdbDeletedEntryEventDataCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/KvdbDeletedEntryEventData"); + jmethodID initKvdbDeletedEntryEventDataMID = ctx->GetMethodID( + kvdbDeletedEntryEventDataCls, + "", + "(" + "Ljava/lang/String;" // kvdbId + "Ljava/lang/String;" // kvdbEntryKey + ")V" + ); - jobject serverKvdbEntryInfo2Java( - JniContextUtils &ctx, - privmx::endpoint::kvdb::ServerKvdbEntryInfo serverKvdbEntryInfo_c - ) { - jclass serverItemInfoCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ServerKvdbEntryInfo"); - jmethodID initServerItemInfoMID = ctx->GetMethodID( - serverItemInfoCls, - "", - "(Ljava/lang/String;" // kvdbId - "Ljava/lang/String;" // key - "Ljava/lang/Long;" // createDate - "Ljava/lang/String;" // author - ")V" - ); - return ctx->NewObject( - serverItemInfoCls, - initServerItemInfoMID, - ctx->NewStringUTF(serverKvdbEntryInfo_c.kvdbId.c_str()), - ctx->NewStringUTF(serverKvdbEntryInfo_c.key.c_str()), - ctx.long2jLong(serverKvdbEntryInfo_c.createDate), - ctx->NewStringUTF(serverKvdbEntryInfo_c.author.c_str()) - ); - } + return ctx->NewObject( + kvdbDeletedEntryEventDataCls, + initKvdbDeletedEntryEventDataMID, + ctx->NewStringUTF(kvdbDeletedEntryEventData_c.kvdbId.c_str()), + ctx->NewStringUTF(kvdbDeletedEntryEventData_c.kvdbEntryKey.c_str()) + ); + } - jobject kvdbEntry2Java( - JniContextUtils &ctx, - privmx::endpoint::kvdb::KvdbEntry kvdbEntry_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/KvdbEntry"); - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/ServerKvdbEntryInfo;" // info - "[B" // publicMeta - "[B" // privateMeta - "[B" // data - "Ljava/lang/String;" // authorPubKey - "Ljava/lang/Long;" // version - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - ")V" - ); + //Kvdb + jobject kvdb2Java( + JniContextUtils &ctx, + privmx::endpoint::kvdb::Kvdb kvdb_c + ) { + jclass kvdbCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/Kvdb"); + jmethodID initKvdbMID = ctx->GetMethodID( + kvdbCls, + "", + "(" + "Ljava/lang/String;" //contextId + "Ljava/lang/String;" //kvdbId + "Ljava/lang/Long;" //createDate + "Ljava/lang/String;" //creator + "Ljava/lang/Long;" //lastModificationDate + "Ljava/lang/String;" //lastModifier + "Ljava/util/List;" //users + "Ljava/util/List;" //managers + "Ljava/lang/Long;" //version + "[B" //publicMeta + "[B" //privateMeta + "Ljava/lang/Long;" //entries + "Ljava/lang/Long;" //lastEntryDate + "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy + "Ljava/lang/Long;" //statusCode + "Ljava/lang/Long;" //schemaVersion + ")V" + ); + jclass arrayCls = ctx->FindClass("java/util/ArrayList"); + jmethodID initArrayMID = ctx->GetMethodID( + arrayCls, + "", + "()V"); + jmethodID addToArrayMID = ctx->GetMethodID( + arrayCls, + "add", + "(Ljava/lang/Object;)Z" + ); + jobject users = ctx->NewObject(arrayCls, initArrayMID); + jobject managers = ctx->NewObject(arrayCls, initArrayMID); + jbyteArray publicMeta = ctx->NewByteArray(kvdb_c.publicMeta.size()); + jbyteArray privateMeta = ctx->NewByteArray(kvdb_c.privateMeta.size()); + ctx->SetByteArrayRegion(publicMeta, 0, kvdb_c.publicMeta.size(), + (jbyte *) kvdb_c.publicMeta.data()); + ctx->SetByteArrayRegion(privateMeta, 0, kvdb_c.privateMeta.size(), + (jbyte *) kvdb_c.privateMeta.data()); + for (auto &user: kvdb_c.users) { + ctx->CallBooleanMethod(users, + addToArrayMID, + ctx->NewStringUTF(user.c_str())); + } + for (auto &manager: kvdb_c.managers) { + ctx->CallBooleanMethod(managers, + addToArrayMID, + ctx->NewStringUTF(manager.c_str())); + } - jbyteArray publicMeta = ctx->NewByteArray(kvdbEntry_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(kvdbEntry_c.privateMeta.size()); - jbyteArray data = ctx->NewByteArray(kvdbEntry_c.data.size()); + return ctx->NewObject( + kvdbCls, + initKvdbMID, + ctx->NewStringUTF(kvdb_c.contextId.c_str()), + ctx->NewStringUTF(kvdb_c.kvdbId.c_str()), + ctx.long2jLong(kvdb_c.createDate), + ctx->NewStringUTF(kvdb_c.creator.c_str()), + ctx.long2jLong(kvdb_c.lastModificationDate), + ctx->NewStringUTF(kvdb_c.lastModifier.c_str()), + users, + managers, + ctx.long2jLong(kvdb_c.version), + publicMeta, + privateMeta, + ctx.long2jLong(kvdb_c.entries), + ctx.long2jLong(kvdb_c.lastEntryDate), + containerPolicy2Java(ctx, kvdb_c.policy), + ctx.long2jLong(kvdb_c.statusCode), + ctx.long2jLong(kvdb_c.schemaVersion) + ); + } - ctx->SetByteArrayRegion(publicMeta, 0, kvdbEntry_c.publicMeta.size(), - (jbyte *) kvdbEntry_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, kvdbEntry_c.privateMeta.size(), - (jbyte *) kvdbEntry_c.privateMeta.data()); - ctx->SetByteArrayRegion(data, 0, kvdbEntry_c.data.size(), - (jbyte *) kvdbEntry_c.data.data()); + jobject serverKvdbEntryInfo2Java( + JniContextUtils &ctx, + privmx::endpoint::kvdb::ServerKvdbEntryInfo serverKvdbEntryInfo_c + ) { + jclass serverItemInfoCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/ServerKvdbEntryInfo"); + jmethodID initServerItemInfoMID = ctx->GetMethodID( + serverItemInfoCls, + "", + "(Ljava/lang/String;" // kvdbId + "Ljava/lang/String;" // key + "Ljava/lang/Long;" // createDate + "Ljava/lang/String;" // author + ")V" + ); + return ctx->NewObject( + serverItemInfoCls, + initServerItemInfoMID, + ctx->NewStringUTF(serverKvdbEntryInfo_c.kvdbId.c_str()), + ctx->NewStringUTF(serverKvdbEntryInfo_c.key.c_str()), + ctx.long2jLong(serverKvdbEntryInfo_c.createDate), + ctx->NewStringUTF(serverKvdbEntryInfo_c.author.c_str()) + ); + } - return ctx->NewObject( - itemCls, - initItemMID, - serverKvdbEntryInfo2Java(ctx, kvdbEntry_c.info), - publicMeta, - privateMeta, - data, - ctx->NewStringUTF(kvdbEntry_c.authorPubKey.c_str()), - ctx.long2jLong(kvdbEntry_c.version), - ctx.long2jLong(kvdbEntry_c.statusCode), - ctx.long2jLong(kvdbEntry_c.schemaVersion) - ); - } + jobject kvdbEntry2Java( + JniContextUtils &ctx, + privmx::endpoint::kvdb::KvdbEntry kvdbEntry_c + ) { + jclass itemCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/KvdbEntry"); + jmethodID initItemMID = ctx->GetMethodID( + itemCls, + "", + "(" + "Lcom/simplito/java/privmx_endpoint/model/ServerKvdbEntryInfo;" // info + "[B" // publicMeta + "[B" // privateMeta + "[B" // data + "Ljava/lang/String;" // authorPubKey + "Ljava/lang/Long;" // version + "Ljava/lang/Long;" // statusCode + "Ljava/lang/Long;" // schemaVersion + ")V" + ); + + jbyteArray publicMeta = ctx->NewByteArray(kvdbEntry_c.publicMeta.size()); + jbyteArray privateMeta = ctx->NewByteArray(kvdbEntry_c.privateMeta.size()); + jbyteArray data = ctx->NewByteArray(kvdbEntry_c.data.size()); + + ctx->SetByteArrayRegion(publicMeta, 0, kvdbEntry_c.publicMeta.size(), + (jbyte *) kvdbEntry_c.publicMeta.data()); + ctx->SetByteArrayRegion(privateMeta, 0, kvdbEntry_c.privateMeta.size(), + (jbyte *) kvdbEntry_c.privateMeta.data()); + ctx->SetByteArrayRegion(data, 0, kvdbEntry_c.data.size(), + (jbyte *) kvdbEntry_c.data.data()); + + return ctx->NewObject( + itemCls, + initItemMID, + serverKvdbEntryInfo2Java(ctx, kvdbEntry_c.info), + publicMeta, + privateMeta, + data, + ctx->NewStringUTF(kvdbEntry_c.authorPubKey.c_str()), + ctx.long2jLong(kvdbEntry_c.version), + ctx.long2jLong(kvdbEntry_c.statusCode), + ctx.long2jLong(kvdbEntry_c.schemaVersion) + ); + } //Streams @@ -2013,7 +2013,7 @@ namespace privmx { endpoint::stream::UpdatedStreamData data ) { jclass cls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/UpdatedStreamData"); + "com/simplito/java/privmx_endpoint/model/stream/events/UpdatedStreamData"); jmethodID initItemMID = ctx->GetMethodID( cls, "", @@ -2061,13 +2061,12 @@ namespace privmx { ); } - jobject - streamRoomDeletedEventData2Java( + jobject streamRoomDeletedEventData2Java( JniContextUtils &ctx, privmx::endpoint::stream::StreamRoomDeletedEventData data ) { jclass cls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StreamRoomDeletedEventData"); + "com/simplito/java/privmx_endpoint/model/stream/events/StreamRoomDeletedEventData"); jmethodID initItemMID = ctx->GetMethodID( cls, "", @@ -2083,13 +2082,12 @@ namespace privmx { ); } - jobject - streamPublishedEventData2Java( + jobject streamPublishedEventData2Java( JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishedEventData data ) { jclass cls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StreamPublishedEventData"); + "com/simplito/java/privmx_endpoint/model/stream/events/StreamPublishedEventData"); jmethodID initItemMID = ctx->GetMethodID( cls, "", @@ -2114,7 +2112,7 @@ namespace privmx { privmx::endpoint::stream::StreamUpdatedEventData data ) { jclass cls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StreamUpdatedEventData"); + "com/simplito/java/privmx_endpoint/model/stream/events/StreamUpdatedEventData"); jmethodID initItemMID = ctx->GetMethodID( cls, "", @@ -2160,7 +2158,7 @@ namespace privmx { privmx::endpoint::stream::StreamEventData data ) { jclass cls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StreamEventData"); + "com/simplito/java/privmx_endpoint/model/stream/events/StreamEventData"); jmethodID initItemMID = ctx->GetMethodID( cls, "", @@ -2192,7 +2190,7 @@ namespace privmx { privmx::endpoint::stream::StreamUnpublishedEventData data ) { jclass cls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StreamUnpublishedEventData"); + "com/simplito/java/privmx_endpoint/model/stream/events/StreamUnpublishedEventData"); jmethodID initItemMID = ctx->GetMethodID( cls, "", @@ -2216,7 +2214,7 @@ namespace privmx { privmx::endpoint::stream::NewStreams data ) { jclass cls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/NewStreams"); + "com/simplito/java/privmx_endpoint/model/stream/events/NewStreams"); jmethodID initItemMID = ctx->GetMethodID( cls, "", @@ -2245,7 +2243,7 @@ namespace privmx { JniContextUtils &ctx, privmx::endpoint::stream::StreamsUpdatedData data ) { - jclass cls = ctx->FindClass("com/simplito/java/privmx_endpoint/model/events/StreamsUpdatedData"); + jclass cls = ctx->FindClass("com/simplito/java/privmx_endpoint/model/stream/events/StreamsUpdatedData"); jmethodID initItemMID = ctx->GetMethodID( cls, "", diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java deleted file mode 100644 index bb800451..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java +++ /dev/null @@ -1,28 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -public class Key { - public String keyId; - public byte[] key; - public KeyType type; - - public Key( - String keyId, - byte[] key, - KeyType type - ) { - this.keyId = keyId; - this.key = key; - this.type = type; - } -} diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java deleted file mode 100644 index dae4e4a8..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class StreamHandle { - private final Long value; - - public StreamHandle(Long value) { - this.value = value; - } - - public Long getValue() { - return value; - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java deleted file mode 100644 index aaa28fb6..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class StreamSubscription { - public long streamId; - public String streamTrackId; - - public StreamSubscription(long streamId, String streamTrackId) { - this.streamId = streamId; - this.streamTrackId = streamTrackId; - } - - public StreamSubscription(long streamId) { - this.streamId = streamId; - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java index 39e4b67f..0750641b 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java @@ -3,10 +3,8 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.simplito.java.privmx_endpoint.model.ConnectionType; -import com.simplito.java.privmx_endpoint.model.StreamHandle; +import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; -import org.webrtc.PeerConnection; import org.webrtc.PeerConnectionFactory; import java.util.HashMap; diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java index 1557c700..190f81e9 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java @@ -15,16 +15,15 @@ import com.simplito.java.privmx_endpoint.model.DeviceType; import com.simplito.java.privmx_endpoint.model.MediaDevice; import com.simplito.java.privmx_endpoint.model.PagingList; -import com.simplito.java.privmx_endpoint.model.Settings; -import com.simplito.java.privmx_endpoint.model.StreamHandle; -import com.simplito.java.privmx_endpoint.model.StreamInfo; -import com.simplito.java.privmx_endpoint.model.StreamPublishResult; -import com.simplito.java.privmx_endpoint.model.StreamRoom; -import com.simplito.java.privmx_endpoint.model.StreamSettings; -import com.simplito.java.privmx_endpoint.model.StreamSubscription; import com.simplito.java.privmx_endpoint.model.UserWithPubKey; -import com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes.StreamEventSelectorType; -import com.simplito.java.privmx_endpoint.model.events.eventTypes.StreamEventType; +import com.simplito.java.privmx_endpoint.model.stream.Settings; +import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; +import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; +import com.simplito.java.privmx_endpoint.model.stream.StreamPublishResult; +import com.simplito.java.privmx_endpoint.model.stream.StreamRoom; +import com.simplito.java.privmx_endpoint.model.stream.StreamSubscription; +import com.simplito.java.privmx_endpoint.model.stream.events.eventSelectorTypes.StreamEventSelectorType; +import com.simplito.java.privmx_endpoint.model.stream.events.eventTypes.StreamEventType; import org.webrtc.AudioSource; import org.webrtc.AudioTrack; diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/AudioTrackInfo.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/AudioTrackInfo.java deleted file mode 100644 index 344c75e3..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/AudioTrackInfo.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - - -import org.webrtc.AudioTrack; -import org.webrtc.PmxFrameCryptor; -import org.webrtc.RtpSender; - -public class AudioTrackInfo { - public org.webrtc.AudioTrack track; - public org.webrtc.RtpSender sender; - public PmxFrameCryptor frameCryptor; - - public AudioTrackInfo( - AudioTrack track, - RtpSender sender, - PmxFrameCryptor frameCryptor - ) { - this.track = track; - this.sender = sender; - this.frameCryptor = frameCryptor; - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/JanusConnection.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/JanusConnection.java deleted file mode 100644 index 215d61fb..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/JanusConnection.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -import com.simplito.java.privmx_endpoint_streams.model.PeerConnection2; - -public class JanusConnection { - public final PeerConnection2 peerConnection; - public final long sessionId; - public final boolean hasSubscriptions; - - public JanusConnection(PeerConnection2 peerConnection, long sessionId, boolean hasSubscriptions) { - this.peerConnection = peerConnection; - this.sessionId = sessionId; - this.hasSubscriptions = hasSubscriptions; - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java deleted file mode 100644 index 76329292..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java +++ /dev/null @@ -1,17 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -public enum KeyType { - LOCAL, - REMOTE -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PcObserver.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PcObserver.java deleted file mode 100644 index 9da315cc..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PcObserver.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -import org.webrtc.DataChannel; -import org.webrtc.IceCandidate; -import org.webrtc.MediaStream; -import org.webrtc.MediaStreamTrack; -import org.webrtc.PeerConnection; -import org.webrtc.PeerConnectionFactory; -import org.webrtc.PmxFrameCryptor; -import org.webrtc.PmxFrameCryptorFactory; -import org.webrtc.PmxKeyStore; -import org.webrtc.RtpReceiver; -import org.webrtc.RtpTransceiver; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.function.BiConsumer; -import java.util.function.Consumer; - -public class PcObserver implements PeerConnection.Observer { - Map frameCryptorMap = new HashMap<>(); - PmxKeyStore keyStore; - private PeerConnectionFactory peerConnectionFactory; - private String streamRoomId; - private PmxFrameCryptor.PmxFrameCryptorOptions options; - - private BiConsumer, RtpReceiver> onAddTrack; - private Consumer onVideoTrack; - private OnFrameCallback onFrameCallback = null; - private Consumer onRemoveVideoTrack = null; - - private Consumer onSignalingState; - private Consumer onPeerConnectionState; - private Consumer onIceGatheringState; - private Consumer onIceConnectionState; - private Consumer onIceCandidate; - private Consumer onAddStream; - private Consumer onRemoveStream; - private Consumer onDataChannel; - private Runnable onRenegotiationNeeded; - private Consumer onTrack; - private Consumer onRemoveTrack; - - - public PcObserver(PeerConnectionFactory peerConnectionFactory, String streamRoomId, PmxKeyStore store, PmxFrameCryptor.PmxFrameCryptorOptions options) { - this.peerConnectionFactory = peerConnectionFactory; - this.streamRoomId = streamRoomId; - this.keyStore = store; - this.options = options; - } - - public void setOnAddTrack(BiConsumer, RtpReceiver> onAddTrack) { - this.onAddTrack = onAddTrack; - } - - public void setOnVideoTrack(Consumer onVideoTrack) { - this.onVideoTrack = onVideoTrack; - } - - @Override - public void onSignalingChange(PeerConnection.SignalingState signalingState) { - - } - - @Override - public void onIceConnectionChange(PeerConnection.IceConnectionState iceConnectionState) { - - } - - @Override - public void onIceConnectionReceivingChange(boolean b) { - - } - - @Override - public void onIceGatheringChange(PeerConnection.IceGatheringState iceGatheringState) { - - } - - @Override - public void onIceCandidate(IceCandidate iceCandidate) { - - } - - @Override - public void onIceCandidatesRemoved(IceCandidate[] iceCandidates) { - - } - - @Override - public void onAddStream(MediaStream mediaStream) { - - } - - @Override - public void onRemoveStream(MediaStream mediaStream) { - - } - - @Override - public void onDataChannel(DataChannel dataChannel) { - - } - - @Override - public void onRenegotiationNeeded() { - - } - - @Override - public void onAddTrack(RtpReceiver receiver, MediaStream[] mediaStreams) { - if (peerConnectionFactory != null && receiver.track() != null && receiver.track().id().equals(null)) { - frameCryptorMap.put( - receiver.track().id(), - PmxFrameCryptorFactory.createPmxFrameCryptorForRtpReceiver( - peerConnectionFactory, - receiver, - keyStore - ) - ); - } - if (onAddTrack != null) { - onAddTrack.accept(Arrays.asList(mediaStreams), receiver); - - if (Objects.equals(receiver.track().kind(), MediaStreamTrack.VIDEO_TRACK_KIND)) { - onVideoTrack.accept(receiver.track().id()); - } - } - } - - @Override - public void onTrack(RtpTransceiver transceiver) { - // todo -check -// RtpReceiver rtpReceiver = transceiver.getReceiver(); -// MediaStreamTrack track = rtpReceiver.track(); -// if (trackObserver != null) trackObserver.onTrack(track); -// // TODO: check if no duplication -// PmxFrameCryptorFactory.createPmxFrameCryptorForRtpReceiver(peerConnectionFactory, rtpReceiver, store); - - onTrack.accept(transceiver); - } - - public void setFrameCryptorOptions(PmxFrameCryptor.PmxFrameCryptorOptions options) { - this.options = options; - frameCryptorMap.forEach((k, v) -> v.setOptions(options)); - } - - public void setOnFrame(OnFrameCallback onFrame) { - this.onFrameCallback = onFrame; - } - - public void setOnRemoveVideoTrack(Consumer onRemoveVideoTrack) { - this.onRemoveVideoTrack = onRemoveVideoTrack; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnection2.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnection2.java deleted file mode 100644 index 1d6df9dd..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnection2.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -import com.simplito.java.privmx_endpoint_streams.model.AudioTrackInfo; - -import org.webrtc.PeerConnection; -import org.webrtc.PmxFrameCryptor; -import org.webrtc.PmxKeyStore; - -import java.util.HashMap; -import java.util.Map; - -public class PeerConnection2 { - public PeerConnection pc; - public PcObserver observer; - public PmxKeyStore keys; - public Map audioTracks = new HashMap<>(); - public Map videoTracks = new HashMap<>(); - - public PeerConnection2(PeerConnection pc, PcObserver observer, PmxKeyStore keys) { - this.pc = pc; - this.observer = observer; - this.keys = keys; - } - - public void addVideoTrack(String id, VideoTrackInfo track) { - videoTracks.put(id, track); - } - - public void addAudioTrack(String id, AudioTrackInfo track) { - audioTracks.put(id, track); - } - - public void removeAudioTrack(String id) { - AudioTrackInfo audioTrack = audioTracks.get(id); - assert audioTrack != null; - pc.removeTrack(audioTrack.sender); - audioTracks.remove(id); - } - - public void removeVideoTrack(String id) { - VideoTrackInfo videoTrack = videoTracks.get(id); - assert videoTrack != null; - pc.removeTrack(videoTrack.sender); - videoTracks.remove(id); - } - - public void setFrameCryptorOptions(PmxFrameCryptor.PmxFrameCryptorOptions options) { - observer.setFrameCryptorOptions(options); - } - - - // std::map audioTracks; -// std::map videoTracks; -// std::shared_mutex trackMutex; -// std::shared_ptr keys; -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnectionManager.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnectionManager.java deleted file mode 100644 index f71c35a6..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnectionManager.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -import org.webrtc.PeerConnection; - -import java.util.HashMap; -import java.util.Map; -import java.util.function.Function; - -public class PeerConnectionManager { - - private Map> connections = new HashMap<>(); - - public PeerConnectionManager( - Function peerConnectionCreator, - Function onTrickle - ) { - - } - - public void initialize (String streamRoomId, ConnectionType connectionType, Long sessionId){ - if(connections.containsKey(streamRoomId)) { - Map roomConnections = connections.get(streamRoomId); - - assert roomConnections != null; - if(roomConnections.getOrDefault(connectionType, null) == null){ - // throw exception - } - } - -// PeerConnection pc = createPeerConnection(streamRoomId); -// setOnIceCandidate - - } - - public void initialize (String streamRoomId, ConnectionType connectionType){ - initialize(streamRoomId, connectionType, -1L); - } - - void updateSessionForConnection(String streamRoomId, ConnectionType connectionType, long sessionId){ - - } - -// boolean hasConnection(String streamRoomId, ConnectionType connectionType){ -// -// } -// - JanusConnection getConnectionWithSession(String streamRoomId, ConnectionType connectionType){ - - return new JanusConnection(null, 0, false); // todo - } - - private PeerConnection createPeerConnection(String streamRoomId){ - return null; // todo - } -} - - diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java deleted file mode 100644 index 18bd9d82..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class PublishedStreamData { - public String streamRoomId; - public StreamInfo stream; - public String userId; - - public PublishedStreamData(String streamRoomId, StreamInfo stream, String userId) { - this.streamRoomId = streamRoomId; - this.stream = stream; - this.userId = userId; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java deleted file mode 100644 index 69dd1cdd..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java +++ /dev/null @@ -1,25 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2025 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -public class SdpWithTypeModel { - public String sdp; - public String type; - - public SdpWithTypeModel( - String sdp, - String type - ) { - this.sdp = sdp; - this.type = type; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java deleted file mode 100644 index 94808012..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class Settings { - public Settings() { - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java deleted file mode 100644 index 1b55388a..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java +++ /dev/null @@ -1,47 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -import java.util.List; - -public class StreamInfo { - public Long id; - public String userId; - public List tracks; - public Long streamId; - public String metadata; // optional - public Boolean dummy; // optional - public Boolean talking; // optional - - - public StreamInfo(Long id, String userId, List tracks, Long streamId) { - this(id, userId, tracks, streamId, null, null, null); - } - - public StreamInfo(Long id, String userId, List tracks, Long streamId, String metadata) { - this(id, userId, tracks, streamId, metadata, null, null); - } - - public StreamInfo(Long id, String userId, List tracks, Long streamId, String metadata, Boolean dummy) { - this(id, userId, tracks, streamId, metadata, dummy, null); - } - - public StreamInfo(Long id, String userId, List tracks, Long streamId, String metadata, Boolean dummy, Boolean talking) { - this.id = id; - this.userId = userId; - this.tracks = tracks; - this.streamId = streamId; - this.metadata = metadata; - this.dummy = dummy; - this.talking = talking; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java deleted file mode 100644 index 52df82c8..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class StreamPublishResult { -public Boolean published; -public PublishedStreamData data; - - public StreamPublishResult(boolean published) { - this(published, null); - } - public StreamPublishResult(boolean published, PublishedStreamData data) { - this.published = published; - this.data = data; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java deleted file mode 100644 index 3ee66ce7..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -import java.util.List; - -public class StreamRoom { - public String contextId; - public String streamRoomId; - public Long createDate; - public String creator; - public Long lastModificationDate; - public String lastModifier; - public List users; - public List managers; - public Long version; - public byte[] publicMeta; - public byte[] privateMeta; - public ContainerPolicy policy; - public Long statusCode; - public Long schemaVersion; - - public StreamRoom( - String contextId, - String streamRoomId, - Long createDate, - String creator, - Long lastModificationDate, - String lastModifier, - List users, - List managers, - Long version, - byte[] publicMeta, - byte[] privateMeta, - ContainerPolicy policy, - Long statusCode, - Long schemaVersion - ) { - this.contextId = contextId; - this.streamRoomId = streamRoomId; - this.createDate = createDate; - this.creator = creator; - this.lastModificationDate = lastModificationDate; - this.lastModifier = lastModifier; - this.users = users; - this.managers = managers; - this.version = version; - this.publicMeta = publicMeta; - this.privateMeta = privateMeta; - this.policy = policy; - this.statusCode = statusCode; - this.schemaVersion = schemaVersion; - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSettings.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSettings.java index 139acb6a..1ef30373 100644 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSettings.java +++ b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSettings.java @@ -1,5 +1,7 @@ package com.simplito.java.privmx_endpoint.model; +import com.simplito.java.privmx_endpoint.model.stream.Settings; + import java.util.function.Consumer; public class StreamSettings { diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java deleted file mode 100644 index b9e5840c..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java +++ /dev/null @@ -1,31 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2025 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -public class TurnCredentials { - public String url; - public String username; - public String password; - public Long expirationTime; - - public TurnCredentials( - String url, - String username, - String password, - Long expirationTime - ) { - this.url = url; - this.username = username; - this.password = password; - this.expirationTime = expirationTime; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/VideoTrackInfo.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/VideoTrackInfo.java deleted file mode 100644 index 44d397ad..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/VideoTrackInfo.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -import org.webrtc.PmxFrameCryptor; -import org.webrtc.RtpSender; -import org.webrtc.VideoTrack; - -public class VideoTrackInfo { - public VideoTrack track; - public RtpSender sender; - public PmxFrameCryptor frameCryptor; - - public VideoTrackInfo( - VideoTrack track, - RtpSender sender, - PmxFrameCryptor frameCryptor - ) { - this.track = track; - this.sender = sender; - this.frameCryptor = frameCryptor; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java index 14f71c7e..373e1460 100644 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java +++ b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java @@ -4,15 +4,15 @@ import com.simplito.java.privmx_endpoint.model.MediaDevice; import com.simplito.java.privmx_endpoint.model.RemoteStreamId; import com.simplito.java.privmx_endpoint.model.Stream; -import com.simplito.java.privmx_endpoint.model.StreamHandle; import com.simplito.java.privmx_endpoint.model.StreamSettings; -import com.simplito.java.privmx_endpoint.model.StreamSubscription; import com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes.StreamEventSelectorType; import com.simplito.java.privmx_endpoint.model.events.eventTypes.StreamEventType; import com.simplito.java.privmx_endpoint.model.ContainerPolicy; import com.simplito.java.privmx_endpoint.model.PagingList; import com.simplito.java.privmx_endpoint.model.UserWithPubKey; -import com.simplito.java.privmx_endpoint.model.StreamRoom; +import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; +import com.simplito.java.privmx_endpoint.model.stream.StreamRoom; +import com.simplito.java.privmx_endpoint.model.stream.StreamSubscription; import com.simplito.java.privmx_endpoint.modules.core.Connection; import com.simplito.java.privmx_endpoint.modules.event.EventApi; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventSelectorTypes/StreamEventSelectorType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventSelectorTypes/StreamEventSelectorType.java deleted file mode 100644 index 8d487955..00000000 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventSelectorTypes/StreamEventSelectorType.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes; - -public enum StreamEventSelectorType implements EventSelectorType{ - CONTEXT_ID, - STREAMROOM_ID, - STREAM_ID -} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventTypes/StreamEventType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventTypes/StreamEventType.java deleted file mode 100644 index 99e18c0f..00000000 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventTypes/StreamEventType.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.simplito.java.privmx_endpoint.model.events.eventTypes; - -public enum StreamEventType implements EventType{ - STREAMROOM_CREATE, - STREAMROOM_UPDATE, - STREAMROOM_DELETE, - EMPTY, - STREAM_JOIN, - STREAM_LEAVE, - STREAM_PUBLISH, - STREAM_UNPUBLISH -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/Key.java similarity index 91% rename from privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/Key.java index bb800451..f016494e 100644 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/Key.java @@ -9,7 +9,7 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; public class Key { public String keyId; diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/KeyType.java similarity index 86% rename from privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/KeyType.java index 76329292..515e0537 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/KeyType.java @@ -9,7 +9,7 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; public enum KeyType { LOCAL, diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/PublishedStreamData.java similarity index 85% rename from privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/PublishedStreamData.java index 18bd9d82..4df54f01 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/PublishedStreamData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; public class PublishedStreamData { public String streamRoomId; diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/SdpWithTypeModel.java similarity index 90% rename from privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/SdpWithTypeModel.java index 69dd1cdd..6d4132b1 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/SdpWithTypeModel.java @@ -9,7 +9,7 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; public class SdpWithTypeModel { public String sdp; diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/Settings.java similarity index 50% rename from privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/Settings.java index 94808012..225fdd24 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/Settings.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; public class Settings { public Settings() { diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamHandle.java similarity index 77% rename from privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamHandle.java index dae4e4a8..8a4e7b51 100644 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamHandle.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; public class StreamHandle { private final Long value; diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamInfo.java similarity index 96% rename from privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamInfo.java index 4e9e3f1e..61afba04 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamInfo.java @@ -9,7 +9,7 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; import java.util.List; diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamPublishResult.java similarity index 85% rename from privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamPublishResult.java index 6fdc0e14..cf3022a9 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamPublishResult.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; public class StreamPublishResult { public Boolean published; diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamRoom.java similarity index 93% rename from privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamRoom.java index 722c0ac8..36546587 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamRoom.java @@ -9,7 +9,9 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; + +import com.simplito.java.privmx_endpoint.model.ContainerPolicy; import java.util.List; diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamSubscription.java similarity index 85% rename from privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamSubscription.java index aaa28fb6..f9462643 100644 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamSubscription.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; public class StreamSubscription { public long streamId; diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackInfo.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackInfo.java similarity index 97% rename from privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackInfo.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackInfo.java index a6f470a0..98ebe871 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackInfo.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackInfo.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; public class StreamTrackInfo { public String type; diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModification.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackModification.java similarity index 84% rename from privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModification.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackModification.java index b0cbbf1b..2b368dce 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModification.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackModification.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; import java.util.List; diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModificationPair.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackModificationPair.java similarity index 88% rename from privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModificationPair.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackModificationPair.java index bdb0e3dd..5ff41eb7 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModificationPair.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackModificationPair.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; public class StreamTrackModificationPair { public StreamTrackInfo before; diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/TurnCredentials.java similarity index 92% rename from privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/TurnCredentials.java index b9e5840c..88990e89 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/TurnCredentials.java @@ -9,7 +9,7 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.model; +package com.simplito.java.privmx_endpoint.model.stream; public class TurnCredentials { public String url; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/NewStreams.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/NewStreams.java new file mode 100644 index 00000000..f05caf94 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/NewStreams.java @@ -0,0 +1,15 @@ +package com.simplito.java.privmx_endpoint.model.stream.events; + + +import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; + +import java.util.List; + +public class NewStreams { + public String room; + public List streams; + public NewStreams(String room, List streams) { + this.room = room; + this.streams = streams; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamEventData.java new file mode 100644 index 00000000..71114a60 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamEventData.java @@ -0,0 +1,15 @@ +package com.simplito.java.privmx_endpoint.model.stream.events; + +import java.util.List; + +public class StreamEventData { + public String streamRoomId; + public List streamIds; + public String userId; + + public StreamEventData(String streamRoomId, List streamIds, String userId) { + this.streamRoomId = streamRoomId; + this.streamIds = streamIds; + this.userId = userId; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamPublishedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamPublishedEventData.java new file mode 100644 index 00000000..0e834766 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamPublishedEventData.java @@ -0,0 +1,27 @@ +package com.simplito.java.privmx_endpoint.model.stream.events; + + +import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; + +// todo: which to choose +// same as StreamPublishedEventData +public class StreamPublishedEventData { + + /** + * StreamRoom ID + */ + public String streamRoomId; + + /** + * Stream ID's + */ + public StreamInfo stream; + + public String userId; + + public StreamPublishedEventData(String streamRoomId, StreamInfo stream, String userId) { + this.streamRoomId = streamRoomId; + this.stream = stream; + this.userId = userId; + } +} \ No newline at end of file diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamRoomDeletedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamRoomDeletedEventData.java new file mode 100644 index 00000000..eb81ce94 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamRoomDeletedEventData.java @@ -0,0 +1,9 @@ +package com.simplito.java.privmx_endpoint.model.stream.events; + +public class StreamRoomDeletedEventData { + public String streamRoomId; + + public StreamRoomDeletedEventData(String streamRoomId) { + this.streamRoomId = streamRoomId; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamUnpublishedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamUnpublishedEventData.java new file mode 100644 index 00000000..f0b8935e --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamUnpublishedEventData.java @@ -0,0 +1,11 @@ +package com.simplito.java.privmx_endpoint.model.stream.events; + +public class StreamUnpublishedEventData { + public String streamRoomId; + public Long streamId; + + public StreamUnpublishedEventData(String streamRoomId, Long streamId) { + this.streamRoomId = streamRoomId; + this.streamId = streamId; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamUpdatedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamUpdatedEventData.java new file mode 100644 index 00000000..274825d9 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamUpdatedEventData.java @@ -0,0 +1,21 @@ +package com.simplito.java.privmx_endpoint.model.stream.events; + + +import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; +import com.simplito.java.privmx_endpoint.model.stream.StreamTrackModification; + +import java.util.List; + +public class StreamUpdatedEventData { + public String streamRoomId; + public List streamsAdded; + public List streamsRemoved; + public List streamsModified; + + public StreamUpdatedEventData(String streamRoomId, List streamsAdded, List streamsRemoved, List streamsModified) { + this.streamRoomId = streamRoomId; + this.streamsAdded = streamsAdded; + this.streamsRemoved = streamsRemoved; + this.streamsModified = streamsModified; + } +} \ No newline at end of file diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamsUpdatedData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamsUpdatedData.java new file mode 100644 index 00000000..66231546 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamsUpdatedData.java @@ -0,0 +1,14 @@ +package com.simplito.java.privmx_endpoint.model.stream.events; + + +import java.util.List; + +public class StreamsUpdatedData { + public String room; + public List streams; + + public StreamsUpdatedData(String room, List streams) { + this.room = room; + this.streams = streams; + } +} \ No newline at end of file diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/UpdatedStreamData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/UpdatedStreamData.java new file mode 100644 index 00000000..86325aec --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/UpdatedStreamData.java @@ -0,0 +1,41 @@ +package com.simplito.java.privmx_endpoint.model.stream.events; + +public class UpdatedStreamData { + public String type; + public String codec = null; // optional + public Long streamId = null; // optional + public String streamMid = null; // optional + public String streamDisplay = null; // optional + public Long mindex; + public String mid; + Boolean send; + Boolean ready; + + public UpdatedStreamData(String type, Long mindex, String mid, Boolean send, Boolean ready, String codec, Long streamId, String streamMid, String streamDisplay) { + this.type = type; + this.codec = codec; + this.streamId = streamId; + this.streamMid = streamMid; + this.streamDisplay = streamDisplay; + this.mindex = mindex; + this.mid = mid; + this.send = send; + this.ready = ready; + } + + public UpdatedStreamData(String type, Long mindex, String mid, Boolean send, Boolean ready, String codec, Long streamId, String streamMid) { + this(type, mindex, mid, send, ready, codec, streamId, streamMid, null); + } + + public UpdatedStreamData(String type, Long mindex, String mid, Boolean send, Boolean ready, String codec, Long streamId) { + this(type, mindex, mid, send, ready, codec, streamId, null, null); + } + + public UpdatedStreamData(String type, Long mindex, String mid, Boolean send, Boolean ready, String codec) { + this(type, mindex, mid, send, ready, codec, null, null, null); + } + + public UpdatedStreamData(String type, Long mindex, String mid, Boolean send, Boolean ready) { + this(type, mindex, mid, send, ready, null, null, null, null); + } +} \ No newline at end of file diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/eventSelectorTypes/StreamEventSelectorType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/eventSelectorTypes/StreamEventSelectorType.java new file mode 100644 index 00000000..3ab7e769 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/eventSelectorTypes/StreamEventSelectorType.java @@ -0,0 +1,9 @@ +package com.simplito.java.privmx_endpoint.model.stream.events.eventSelectorTypes; + +import com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes.EventSelectorType; + +public enum StreamEventSelectorType implements EventSelectorType { + CONTEXT_ID, + STREAMROOM_ID, + STREAM_ID +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/eventTypes/StreamEventType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/eventTypes/StreamEventType.java new file mode 100644 index 00000000..44d290fd --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/eventTypes/StreamEventType.java @@ -0,0 +1,16 @@ +package com.simplito.java.privmx_endpoint.model.stream.events.eventTypes; + +import com.simplito.java.privmx_endpoint.model.events.eventTypes.EventType; + +public enum StreamEventType implements EventType { + STREAMROOM_CREATE, + STREAMROOM_UPDATE, + STREAMROOM_DELETE, + EMPTY, + STREAM_JOIN, + STREAM_LEAVE, + STREAM_PUBLISH, + STREAM_UNPUBLISH +} + + diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java similarity index 80% rename from privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java index e4d0b662..ff809f7e 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java @@ -13,21 +13,23 @@ import com.simplito.java.privmx_endpoint.model.ContainerPolicy; import com.simplito.java.privmx_endpoint.model.PagingList; -import com.simplito.java.privmx_endpoint.model.SdpWithTypeModel; -import com.simplito.java.privmx_endpoint.model.Settings; -import com.simplito.java.privmx_endpoint.model.StreamHandle; -import com.simplito.java.privmx_endpoint.model.StreamInfo; -import com.simplito.java.privmx_endpoint.model.StreamPublishResult; -import com.simplito.java.privmx_endpoint.model.StreamRoom; -import com.simplito.java.privmx_endpoint.model.StreamSubscription; -import com.simplito.java.privmx_endpoint.model.TurnCredentials; import com.simplito.java.privmx_endpoint.model.UserWithPubKey; -import com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes.StreamEventSelectorType; -import com.simplito.java.privmx_endpoint.model.events.eventTypes.StreamEventType; +import com.simplito.java.privmx_endpoint.model.stream.SdpWithTypeModel; +import com.simplito.java.privmx_endpoint.model.stream.Settings; +import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; +import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; +import com.simplito.java.privmx_endpoint.model.stream.StreamPublishResult; +import com.simplito.java.privmx_endpoint.model.stream.StreamRoom; +import com.simplito.java.privmx_endpoint.model.stream.StreamSubscription; +import com.simplito.java.privmx_endpoint.model.stream.TurnCredentials; +import com.simplito.java.privmx_endpoint.model.stream.events.eventSelectorTypes.StreamEventSelectorType; +import com.simplito.java.privmx_endpoint.model.stream.events.eventTypes.StreamEventType; import com.simplito.java.privmx_endpoint.modules.core.Connection; import com.simplito.java.privmx_endpoint.modules.event.EventApi; import java.util.List; +import java.util.Objects; +import java.util.Optional; public class StreamApiLow implements AutoCloseable { static { @@ -44,34 +46,30 @@ private StreamApiLow(Long api) { this.api = api; } -// private native Long init(Connection connection, EventApi eventApi) throws IllegalStateException; + private native Long init(Connection connection, EventApi eventApi) throws IllegalStateException; - public static native StreamApiLow create( + public StreamApiLow( + Connection connection + ) throws IllegalStateException { + this.api = init(connection, null); + } + + public StreamApiLow( Connection connection, EventApi eventApi - ); + ) throws IllegalStateException { + Objects.requireNonNull(connection); + EventApi tmpEventApi = eventApi == null ? new EventApi(connection) : null; + this.api = init( + connection, + Optional.ofNullable(eventApi).orElse(tmpEventApi) + ); -// public StreamApiLow( -// Connection connection -// ) throws IllegalStateException { -// this(connection, null); -// } - -// public StreamApiLow( -// Connection connection, -// EventApi eventApi -// ) throws IllegalStateException { -// Objects.requireNonNull(connection); -// EventApi tmpEventApi = eventApi == null ? new EventApi(connection) : null; -// this.api = init( -// connection, -// Optional.ofNullable(eventApi).orElse(tmpEventApi) -// ); -// try { -// if (eventApi != null) tmpEventApi.close(); -// } catch (Exception ignore) { -// } -// } + try { + if (eventApi != null) tmpEventApi.close(); + } catch (Exception ignore) { + } + } public native List getTurnCredentials(); @@ -137,16 +135,17 @@ public PagingList listStreamRooms( String sortOrder, String lastId, String sortBy - ){ + ) { return listStreamRooms(contextId, skip, limit, sortOrder, lastId, sortBy, null); } + public PagingList listStreamRooms( String contextId, long skip, long limit, String sortOrder, String lastId - ){ + ) { return listStreamRooms(contextId, skip, limit, sortOrder, lastId, null, null); } @@ -155,7 +154,7 @@ public PagingList listStreamRooms( long skip, long limit, String sortOrder - ){ + ) { return listStreamRooms(contextId, skip, limit, sortOrder, null, null, null); } @@ -163,7 +162,7 @@ public PagingList listStreamRooms( String contextId, long skip, long limit - ){ + ) { return listStreamRooms(contextId, skip, limit, "desc", null, null, null); } @@ -222,7 +221,6 @@ public String buildSubscriptionQuery( ); } - public native void keyManagement(String streamRoomId, boolean disable); private native void deinit() throws IllegalStateException; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/WebRTCInterface.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/WebRTCInterface.java new file mode 100644 index 00000000..a7bbb8c7 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/WebRTCInterface.java @@ -0,0 +1,30 @@ +// +// PrivMX Endpoint Java. +// Copyright © 2024 Simplito sp. z o.o. +// +// This file is part of the PrivMX Platform (https://privmx.dev). +// This software is Licensed under the MIT License. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package com.simplito.java.privmx_endpoint.modules.stream; + +import com.simplito.java.privmx_endpoint.model.stream.Key; + +import java.util.List; + +public interface WebRTCInterface { + String createOfferAndSetLocalDescription(String streamRoomId); + + String createAnswerAndSetDescriptions(String streamRoomId, String sdp, String type); + + void setAnswerAndSetRemoteDescription(String streamRoomId, String sdp, String type); + + void updateSessionId(String streamRoomId, Long sessionId, String connectionType); + + void close(String streamRoomId); + + void updateKeys(String streamRoomId, List keys); +}