diff --git a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/parsers/parser.h b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/parsers/parser.h index b5aaa262..696db804 100644 --- a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/parsers/parser.h +++ b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/parsers/parser.h @@ -18,6 +18,8 @@ #include "privmx/endpoint/core/Types.hpp" #include "privmx/endpoint/core/Events.hpp" #include "privmx/endpoint/inbox/Types.hpp" +#include "privmx/endpoint/stream/Events.hpp" +#include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h" std::vector usersToVector(JniContextUtils &ctx, jobjectArray users); diff --git a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h index 772c19dc..502d6793 100644 --- a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h +++ b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h @@ -63,6 +63,46 @@ namespace privmx { jobject sdpWithTypeModel2Java(JniContextUtils &ctx, privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c); + jobject + streamTrackModificationPair2Java(JniContextUtils & ctx, endpoint::stream::StreamTrackModificationPair + streamTrackModificationPair); + + jobject + streamTrackModification2Java(JniContextUtils & ctx, endpoint::stream::StreamTrackModification + streamTrackModification); + + jobject + streamUpdatedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamUpdatedEventData + data); + + jobject + updatedStreamData2Java(JniContextUtils & ctx, endpoint::stream::UpdatedStreamData + updatedStreamData); + + jobject + streamRoomDeletedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamRoomDeletedEventData + data); + + jobject + streamPublishedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamPublishedEventData + data); + + jobject + streamEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamEventData + data); + + jobject + streamUnpublishedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamUnpublishedEventData + data); + + jobject + newStreams2Java(JniContextUtils & ctx, privmx::endpoint::stream::NewStreams + data); + + jobject + streamsUpdated2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamsUpdatedData + data); + } // streams } // wrapper } // privmx diff --git a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/parser.h b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/parser.h index f9421230..136ad2ab 100644 --- a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/parser.h +++ b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/parser.h @@ -31,4 +31,4 @@ privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env, jobjec privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription); -//#endif //PRIVMX_POCKET_LIB_PARSER_H +privmx::endpoint::stream::SdpWithTypeModel parseSdpWithTypeModel(JniContextUtils &ctx, jobject sdpWithTypeModel); diff --git a/jni-wrappers/privmx-endpoint/src/cpp/modules/EventQueue.cpp b/jni-wrappers/privmx-endpoint/src/cpp/modules/EventQueue.cpp index 22af8d15..b5a2b810 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/modules/EventQueue.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/modules/EventQueue.cpp @@ -54,8 +54,8 @@ Java_com_simplito_java_privmx_1endpoint_modules_core_EventQueue_getEvent( ctx.callResultEndpointApi(&result, [&ctx]() { auto eventHolder = EventQueue::getInstance().getEvent(); return !eventHolder.has_value() ? - nullptr : - parseEvent(ctx, eventHolder.value().get()); + nullptr : + parseEvent(ctx, eventHolder.value().get()); }); if (ctx->ExceptionCheck()) { return nullptr; diff --git a/jni-wrappers/privmx-endpoint/src/cpp/parsers/parser.cpp b/jni-wrappers/privmx-endpoint/src/cpp/parsers/parser.cpp index c14a2497..64587b35 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/parsers/parser.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/parsers/parser.cpp @@ -647,6 +647,135 @@ parseEvent(JniContextUtils &ctx, std::shared_ptr event_cast.timestamp, privmx::wrapper::kvdbDeletedEntryEventData2Java(ctx, event_cast.data) ); + } else if (stream::Events::isStreamRoomCreatedEvent(event)) { + privmx::endpoint::stream::StreamRoomCreatedEvent event_cast = stream::Events::extractStreamRoomCreatedEvent( + event); + return initEvent( + ctx, + event_cast.type, + event_cast.channel, + event_cast.connectionId, + event_cast.subscriptions, + event_cast.timestamp, + privmx::wrapper::streams::streamRoom2Java(ctx, event_cast.data) + ); + } else if (stream::Events::isStreamRoomUpdatedEvent(event)) { + privmx::endpoint::stream::StreamRoomUpdatedEvent event_cast = + stream::Events::extractStreamRoomUpdatedEvent(event); + + return initEvent( + ctx, + event_cast.type, + event_cast.channel, + event_cast.connectionId, + event_cast.subscriptions, + event_cast.timestamp, + privmx::wrapper::streams::streamRoom2Java(ctx, event_cast.data) + ); + } else if (stream::Events::isStreamRoomDeletedEvent(event)) { + privmx::endpoint::stream::StreamRoomDeletedEvent event_cast = + stream::Events::extractStreamRoomDeletedEvent(event); + + return initEvent( + ctx, + event_cast.type, + event_cast.channel, + event_cast.connectionId, + event_cast.subscriptions, + event_cast.timestamp, + privmx::wrapper::streams::streamRoomDeletedEventData2Java(ctx, event_cast.data) + ); + } else if (stream::Events::isStreamPublishedEvent(event)) { + privmx::endpoint::stream::StreamPublishedEvent event_cast = + stream::Events::extractStreamPublishedEvent(event); + + return initEvent( + ctx, + event_cast.type, + event_cast.channel, + event_cast.connectionId, + event_cast.subscriptions, + event_cast.timestamp, + privmx::wrapper::streams::streamPublishedEventData2Java(ctx, event_cast.data) + ); + } else if (stream::Events::isStreamUpdatedEvent(event)) { + privmx::endpoint::stream::StreamUpdatedEvent event_cast = + stream::Events::extractStreamUpdatedEvent(event); + + return initEvent( + ctx, + event_cast.type, + event_cast.channel, + event_cast.connectionId, + event_cast.subscriptions, + event_cast.timestamp, + privmx::wrapper::streams::streamUpdatedEventData2Java(ctx, event_cast.data) + ); + } else if (stream::Events::isStreamJoinedEvent(event)) { + privmx::endpoint::stream::StreamJoinedEvent event_cast = + stream::Events::extractStreamJoinedEvent(event); + + return initEvent( + ctx, + event_cast.type, + event_cast.channel, + event_cast.connectionId, + event_cast.subscriptions, + event_cast.timestamp, + privmx::wrapper::streams::streamEventData2Java(ctx, event_cast.data) + ); + } else if (stream::Events::isStreamUnpublishedEvent(event)) { + privmx::endpoint::stream::StreamUnpublishedEvent event_cast = + stream::Events::extractStreamUnpublishedEvent(event); + + return initEvent( + ctx, + event_cast.type, + event_cast.channel, + event_cast.connectionId, + event_cast.subscriptions, + event_cast.timestamp, + privmx::wrapper::streams::streamUnpublishedEventData2Java(ctx, event_cast.data) + ); + } else if (stream::Events::isStreamLeftEvent(event)) { + privmx::endpoint::stream::StreamLeftEvent event_cast = + stream::Events::extractStreamLeftEvent(event); + + return initEvent( + ctx, + event_cast.type, + event_cast.channel, + event_cast.connectionId, + event_cast.subscriptions, + event_cast.timestamp, + privmx::wrapper::streams::streamEventData2Java(ctx, event_cast.data) + ); + } else if (stream::Events::isStreamNewStreamsEvent(event)) { + privmx::endpoint::stream::StreamNewStreamsEvent event_cast = + stream::Events::extractStreamNewStreamsEvent(event); + + return initEvent( + ctx, + event_cast.type, + event_cast.channel, + event_cast.connectionId, + event_cast.subscriptions, + event_cast.timestamp, + privmx::wrapper::streams::newStreams2Java(ctx, event_cast.data) + ); + } else if (stream::Events::isStreamsUpdatedEvent(event)) { + privmx::endpoint::stream::StreamsUpdatedEvent event_cast = + stream::Events::extractStreamsUpdatedEvent(event); + + return initEvent( + ctx, + event_cast.type, + event_cast.channel, + event_cast.connectionId, + event_cast.subscriptions, + event_cast.timestamp, + privmx::wrapper::streams::streamsUpdated2Java(ctx, event_cast.data) + ); } else { return initEvent( ctx, diff --git a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp b/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp index 8a73037d..32a23873 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp @@ -13,8 +13,6 @@ #include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h" #include "privmx/endpoint/wrapper/streams/parsers/parser.h" -//#include - using namespace privmx::endpoint::stream; using namespace privmx::endpoint; //using namespace privmx::wrapper; @@ -649,6 +647,38 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeF }); } +extern "C" +JNIEXPORT jstring JNICALL +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_buildSubscriptionQuery( + JNIEnv *env, + jobject thiz, + jlong event_type, + jlong selector_type, + jstring selector_id +) { + JniContextUtils ctx(env); + if (ctx.nullCheck(selector_id, "SelectorID")) { + return nullptr; + } + + jstring result = nullptr; + ctx.callResultEndpointApi( + &result, + [&ctx, &thiz, &event_type, &selector_type, &selector_id]() { + std::string query_result_c = getStreamApi(ctx, thiz)->buildSubscriptionQuery( + static_cast(event_type), + static_cast(selector_type), + ctx.jString2string(selector_id) + ); + return ctx->NewStringUTF(query_result_c.c_str()); + } + ); + if (ctx->ExceptionCheck()) { + return nullptr; + } + return result; +} + extern "C" JNIEXPORT void JNICALL Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_keyManagement( diff --git a/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/model_native_initializers.cpp b/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/model_native_initializers.cpp index 0e43daa9..58563a1e 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/model_native_initializers.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/model_native_initializers.cpp @@ -258,30 +258,6 @@ namespace privmx { 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, @@ -486,6 +462,7 @@ namespace privmx { ); } + jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c) { jclass itemCls = ctx->FindClass( "com/simplito/java/privmx_endpoint/model/PublishedStreamData"); @@ -525,17 +502,21 @@ namespace privmx { 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 + ); + } else { + return ctx->NewObject( + itemCls, + initItemMID, + ctx.bool2jBoolean(streamPublishResult_c.published) + ); } - - 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( @@ -571,6 +552,331 @@ namespace privmx { initItemMID ); } + + jobject + streamTrackModificationPair2Java( + JniContextUtils &ctx, + endpoint::stream::StreamTrackModificationPair streamTrackModificationPair + ) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/StreamTrackModificationPair"); + jmethodID ctor = ctx->GetMethodID( + cls, + "", + "(" + "Lcom/privmx/stream/StreamTrackInfo;" + "Lcom/privmx/stream/StreamTrackInfo;" + ")V" + ); + + jobject before = streamTrackModificationPair.before + ? streamTrackInfo2Java(ctx, streamTrackModificationPair.before.value()) + : nullptr; + + jobject after = streamTrackModificationPair.after + ? streamTrackInfo2Java(ctx, streamTrackModificationPair.after.value()) + : nullptr; + + return ctx->NewObject( + cls, + ctor, + before, + after + ); + } + + jobject + streamTrackModification2Java( + JniContextUtils &ctx, + endpoint::stream::StreamTrackModification streamTrackModification + ) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/StreamTrackModification"); + jmethodID ctor = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/Long;" + "Ljava/util/List;" + ")V" + ); + + jobject tracksList = vectorTojArray( + ctx, + streamTrackModification.tracks, + streamTrackModificationPair2Java + ); + + return ctx->NewObject( + cls, + ctor, + ctx.long2jLong(streamTrackModification.streamId), + tracksList + ); + } + + jobject + updatedStreamData2Java( + JniContextUtils &ctx, + endpoint::stream::UpdatedStreamData data + ) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/UpdatedStreamData"); + jmethodID ctor = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + "Ljava/lang/Long;" + "Ljava/lang/String;" + "Ljava/lang/Boolean;" + "Ljava/lang/Boolean;" + "Ljava/lang/String;" + "Ljava/lang/Long;" + "Ljava/lang/String;" + "Ljava/lang/String;" + ")V" + ); + + jobject jCodec = data.codec + ? ctx->NewStringUTF(data.codec->c_str()) + : nullptr; + + jobject jStreamId = data.streamId + ? ctx.long2jLong(data.streamId.value()) + : nullptr; + + jobject jStreamMid = data.streamMid + ? ctx->NewStringUTF(data.streamMid->c_str()) + : nullptr; + + jobject jStreamDisplay = data.stream_display + ? ctx->NewStringUTF(data.stream_display->c_str()) + : nullptr; + + return ctx->NewObject( + cls, + ctor, + ctx->NewStringUTF(data.type.c_str()), + ctx.long2jLong(data.mindex), + ctx->NewStringUTF(data.mid.c_str()), + ctx.bool2jBoolean(data.send), + ctx.bool2jBoolean(data.ready), + jCodec, + jStreamId, + jStreamMid, + jStreamDisplay + ); + } + + jobject + streamRoomDeletedEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamRoomDeletedEventData data + ) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/StreamRoomDeletedEventData"); + jmethodID ctor = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + ")V" + ); + + return ctx->NewObject( + cls, + ctor, + ctx->NewStringUTF(data.streamRoomId.c_str()) + ); + } + + jobject + streamPublishedEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamPublishedEventData data + ) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/StreamPublishedEventData"); + jmethodID ctor = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + "Lcom/simplito/java/privmx_endpoint/model/StreamInfo;" + "Ljava/lang/String;" + ")V" + ); + + return ctx->NewObject( + cls, + ctor, + ctx->NewStringUTF(data.streamRoomId.c_str()), + streamInfo2Java(ctx, data.stream), + ctx->NewStringUTF(data.userId.c_str()) + ); + } + + jobject streamUpdatedEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamUpdatedEventData data + ) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/StreamUpdatedEventData"); + jmethodID ctor = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + "Ljava/util/List;" + "Ljava/util/List;" + "Ljava/util/List;" + ")V" + ); + + jobject addedList = vectorTojArray( + ctx, + data.streamsAdded, + streamInfo2Java + ); + + jobject removedList = vectorTojArray( + ctx, + data.streamsRemoved, + streamInfo2Java + ); + + jobject modifiedList = vectorTojArray( + ctx, + data.streamsModified, + streamTrackModification2Java + ); + + return ctx->NewObject( + cls, + ctor, + ctx->NewStringUTF(data.streamRoomId.c_str()), + addedList, + removedList, + modifiedList + ); + } + + jobject + streamEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamEventData data + ) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/StreamEventData"); + jmethodID ctor = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + "Ljava/util/List;" + "Ljava/lang/String;" + ")V" + ); + + jobject streamIds = vectorTojArray( + ctx, + data.streamIds, + long2jobject + ); + + return ctx->NewObject( + cls, + ctor, + ctx->NewStringUTF(data.streamRoomId.c_str()), + streamIds, + ctx->NewStringUTF(data.userId.c_str()) + ); + } + + jobject + streamUnpublishedEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamUnpublishedEventData data + ) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/StreamUnpublishedEventData"); + jmethodID ctor = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + "Ljava/lang/Long;" + ")V" + ); + + return ctx->NewObject( + cls, + ctor, + ctx->NewStringUTF(data.streamRoomId.c_str()), + ctx.long2jLong(data.streamId) + ); + } + + jobject + newStreams2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::NewStreams data + ) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/NewStreams"); + jmethodID ctor = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + "Ljava/util/List;" + ")V" + ); + + jobject streamsList = vectorTojArray( + ctx, + data.streams, + streamInfo2Java + ); + + return ctx->NewObject( + cls, + ctor, + ctx->NewStringUTF(data.room.c_str()), + streamsList + ); + } + + jobject + streamsUpdated2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamsUpdatedData data + ) { + jclass cls = ctx->FindClass("com/simplito/java/privmx_endpoint/model/events/StreamsUpdatedData"); + jmethodID ctor = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + "Ljava/util/List;" + ")V" + ); + + jobject streamsList = vectorTojArray( + ctx, + data.streams, + updatedStreamData2Java + ); + + return ctx->NewObject( + cls, + ctor, + ctx->NewStringUTF(data.room.c_str()), + streamsList + ); + } + } // streams } // wrapper } // privmx \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/parser.cpp b/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/parser.cpp index 5edbfa33..e16d244f 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/parser.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/parser.cpp @@ -103,4 +103,4 @@ privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextU if(streamTrackId != nullptr) result.streamTrackId = jobject2string(ctx, streamTrackId); return result; -} \ No newline at end of file +} diff --git a/privmx-endpoint-streams-android/src/main/java/com/simplito/java/privmx_endpoint_streams/model/StreamPublishResult.java b/privmx-endpoint-streams-android/src/main/java/com/simplito/java/privmx_endpoint_streams/model/StreamPublishResult.java index 42a89b42..e322f97e 100644 --- a/privmx-endpoint-streams-android/src/main/java/com/simplito/java/privmx_endpoint_streams/model/StreamPublishResult.java +++ b/privmx-endpoint-streams-android/src/main/java/com/simplito/java/privmx_endpoint_streams/model/StreamPublishResult.java @@ -1,15 +1,17 @@ package com.simplito.java.privmx_endpoint_streams.model; -import com.simplito.java.privmx_endpoint.model.PublishedStreamData; - public class StreamPublishResult { -public Boolean published; -public PublishedStreamData data; + public Boolean published; + public PublishedStreamData data; - public StreamPublishResult(boolean published) { + public StreamPublishResult(Boolean published) { this(published, null); } - public StreamPublishResult(boolean published, PublishedStreamData data) { + + public StreamPublishResult( + Boolean published, + PublishedStreamData data + ) { this.published = published; this.data = data; } diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java index 52df82c8..6fdc0e14 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java @@ -4,10 +4,10 @@ public class StreamPublishResult { public Boolean published; public PublishedStreamData data; - public StreamPublishResult(boolean published) { + public StreamPublishResult(Boolean published) { this(published, null); } - public StreamPublishResult(boolean published, PublishedStreamData data) { + public StreamPublishResult(Boolean published, PublishedStreamData data) { this.published = published; this.data = data; } diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModification.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModification.java index 39f13b73..b0cbbf1b 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModification.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModification.java @@ -3,10 +3,10 @@ import java.util.List; public class StreamTrackModification { - public long streamId; + public Long streamId; public List tracks; - public StreamTrackModification(long streamId, List tracks) { + public StreamTrackModification(Long streamId, List tracks) { this.streamId = streamId; this.tracks = tracks; } diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/NewStreams.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/NewStreams.java new file mode 100644 index 00000000..2e18d386 --- /dev/null +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/NewStreams.java @@ -0,0 +1,15 @@ +package com.simplito.java.privmx_endpoint.model.events; + +import com.simplito.java.privmx_endpoint.model.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-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamEventData.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamEventData.java new file mode 100644 index 00000000..dead3835 --- /dev/null +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamEventData.java @@ -0,0 +1,15 @@ +package com.simplito.java.privmx_endpoint.model.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-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamPublishedEventData.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamPublishedEventData.java new file mode 100644 index 00000000..2daa75e4 --- /dev/null +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamPublishedEventData.java @@ -0,0 +1,26 @@ +package com.simplito.java.privmx_endpoint.model.events; + +import com.simplito.java.privmx_endpoint.model.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-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamRoomDeletedEventData.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamRoomDeletedEventData.java new file mode 100644 index 00000000..ea6ba838 --- /dev/null +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamRoomDeletedEventData.java @@ -0,0 +1,9 @@ +package com.simplito.java.privmx_endpoint.model.events; + +public class StreamRoomDeletedEventData { + public String streamRoomId; + + public StreamRoomDeletedEventData(String streamRoomId) { + this.streamRoomId = streamRoomId; + } +} diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamUnpublishedEventData.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamUnpublishedEventData.java new file mode 100644 index 00000000..41f0eb6b --- /dev/null +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamUnpublishedEventData.java @@ -0,0 +1,11 @@ +package com.simplito.java.privmx_endpoint.model.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-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamUpdatedEventData.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamUpdatedEventData.java new file mode 100644 index 00000000..01f6e1b8 --- /dev/null +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamUpdatedEventData.java @@ -0,0 +1,20 @@ +package com.simplito.java.privmx_endpoint.model.events; + +import com.simplito.java.privmx_endpoint.model.StreamInfo; +import com.simplito.java.privmx_endpoint.model.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-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamsUpdatedData.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamsUpdatedData.java new file mode 100644 index 00000000..d98b824c --- /dev/null +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamsUpdatedData.java @@ -0,0 +1,13 @@ +package com.simplito.java.privmx_endpoint.model.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-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/UpdatedStreamData.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/UpdatedStreamData.java new file mode 100644 index 00000000..870ae035 --- /dev/null +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/UpdatedStreamData.java @@ -0,0 +1,41 @@ +package com.simplito.java.privmx_endpoint.model.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-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java index 96cf1d44..b8741b1c 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java @@ -220,14 +220,18 @@ public void acceptOfferOnReconfigure( public native void unsubscribeFrom(List subscriptionIds); - // todo - // public native String buildSubscriptionQuery( - public String buildSubscriptionQuery ( + private native String buildSubscriptionQuery(long eventType, long selectorType, String selectorId); + + public String buildSubscriptionQuery( StreamEventType eventType, StreamEventSelectorType selectorType, String selectorId - ){ - return ""; + ) { + return buildSubscriptionQuery( + eventType.ordinal(), + selectorType.ordinal(), + selectorId + ); } 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 index cc89f60b..44d397ad 100644 --- 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 @@ -1,5 +1,6 @@ package com.simplito.java.privmx_endpoint.model; +import org.webrtc.PmxFrameCryptor; import org.webrtc.RtpSender; import org.webrtc.VideoTrack;