From d2b7b38710941744189408bb3a8d0ca65c0fff31 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 10:50:37 +0100 Subject: [PATCH 01/18] feat: add VideoTrackInfo class --- .../parsers/model_native_initializers.h | 3 ++ .../parsers/model_native_initializers.cpp | 33 +++++++++++++++++++ .../privmx_endpoint/model/VideoTrackInfo.java | 1 + 3 files changed, 37 insertions(+) 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..2b935860 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,9 @@ namespace privmx { jobject sdpWithTypeModel2Java(JniContextUtils &ctx, privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c); + jobject + streamTrackModificationPair2Java(JniContextUtils & ctx, endpoint::stream::StreamTrackModificationPair + streamTrackModificationPair); } // streams } // wrapper } // privmx 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..b3decfc1 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 @@ -571,6 +571,39 @@ 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 + ); + } + } // streams } // wrapper } // privmx \ No newline at end of file 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; From 5237e900742f2a5cb81631a01afc674ca8340a0b Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 10:52:34 +0100 Subject: [PATCH 02/18] feat: add StreamTrackModification class --- .../parsers/model_native_initializers.h | 4 + .../parsers/model_native_initializers.cpp | 84 +++++++++++++++++++ .../model/StreamTrackModification.java | 4 +- 3 files changed, 90 insertions(+), 2 deletions(-) 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 2b935860..a125194b 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 @@ -66,6 +66,10 @@ namespace privmx { jobject streamTrackModificationPair2Java(JniContextUtils & ctx, endpoint::stream::StreamTrackModificationPair streamTrackModificationPair); + + jobject + streamTrackModification2Java(JniContextUtils & ctx, endpoint::stream::StreamTrackModification + streamTrackModification); } // streams } // wrapper } // privmx 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 b3decfc1..ca711102 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 @@ -604,6 +604,90 @@ namespace privmx { ); } + 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 + ); + } + } // streams } // wrapper } // privmx \ No newline at end of file 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; } From b7107fdf2c306cd7d63e43ae78233cdbf345b038 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 10:54:34 +0100 Subject: [PATCH 03/18] feat: add StreamUpdatedEventData class --- .../parsers/model_native_initializers.h | 4 ++ .../parsers/model_native_initializers.cpp | 45 +++++++++++++++++++ .../model/events/StreamUpdatedEventData.java | 20 +++++++++ 3 files changed, 69 insertions(+) create mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamUpdatedEventData.java 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 a125194b..b2b36ec7 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 @@ -70,6 +70,10 @@ namespace privmx { jobject streamTrackModification2Java(JniContextUtils & ctx, endpoint::stream::StreamTrackModification streamTrackModification); + + jobject + streamUpdatedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamUpdatedEventData + data); } // streams } // wrapper } // privmx 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 ca711102..bc83af44 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 @@ -688,6 +688,51 @@ namespace privmx { ); } + 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 + ); + } + } // streams } // wrapper } // privmx \ No newline at end of file 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 From 0014c4be4f225c40640cd5627f548d4a560dc76c Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 10:57:25 +0100 Subject: [PATCH 04/18] feat: add UpdatedStreamData class --- .../parsers/model_native_initializers.h | 5 +++ .../model/events/UpdatedStreamData.java | 41 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/UpdatedStreamData.java 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 b2b36ec7..60a70be6 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 @@ -74,6 +74,11 @@ namespace privmx { jobject streamUpdatedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamUpdatedEventData data); + + jobject + updatedStreamData2Java(JniContextUtils & ctx, endpoint::stream::UpdatedStreamData + updatedStreamData); + } // streams } // wrapper } // privmx 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 From 3c1588e76c161bad25b5aae3b498a7e6a2a3c8d6 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 10:58:58 +0100 Subject: [PATCH 05/18] feat: add StreamRoomDeletedEventData class --- .../parsers/model_native_initializers.h | 4 ++++ .../parsers/model_native_initializers.cpp | 22 +++++++++++++++++++ .../events/StreamRoomDeletedEventData.java | 9 ++++++++ 3 files changed, 35 insertions(+) create mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamRoomDeletedEventData.java 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 60a70be6..13c2b1e7 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 @@ -79,6 +79,10 @@ namespace privmx { updatedStreamData2Java(JniContextUtils & ctx, endpoint::stream::UpdatedStreamData updatedStreamData); + jobject + streamRoomDeleted2EventDataJava(JniContextUtils & ctx, privmx::endpoint::stream::StreamRoomDeletedEventData + data); + } // streams } // wrapper } // privmx 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 bc83af44..f4313b31 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 @@ -688,6 +688,28 @@ namespace privmx { ); } + 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 streamUpdatedEventData2Java( JniContextUtils &ctx, privmx::endpoint::stream::StreamUpdatedEventData data 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; + } +} From 79a6692ee342f4f9945313bf261ccaa9543fb374 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 11:00:51 +0100 Subject: [PATCH 06/18] fix: add StreamRoomDeletedEventData class --- .../wrapper/streams/parsers/model_native_initializers.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 13c2b1e7..c4745e08 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 @@ -80,7 +80,7 @@ namespace privmx { updatedStreamData); jobject - streamRoomDeleted2EventDataJava(JniContextUtils & ctx, privmx::endpoint::stream::StreamRoomDeletedEventData + streamRoomDeletedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamRoomDeletedEventData data); } // streams From d67ca31919c779931486dc810197d097ebaf02bc Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 11:02:44 +0100 Subject: [PATCH 07/18] feat: add StreamPublishedEventData class --- .../parsers/model_native_initializers.h | 5 ++++ .../parsers/model_native_initializers.cpp | 26 +++++++++++++++++++ .../model/events/PublishedStreamData.java | 26 +++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/PublishedStreamData.java 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 c4745e08..d8ac9fd3 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 @@ -83,6 +83,11 @@ namespace privmx { streamRoomDeletedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamRoomDeletedEventData data); + jobject + streamPublishedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamPublishedEventData + data); + + } // streams } // wrapper } // privmx 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 f4313b31..d6b546af 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 @@ -710,6 +710,32 @@ namespace privmx { ); } + jobject + streamPublishedEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamPublishedEventData data + ) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/events/PublishedStreamData"); + 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 diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/PublishedStreamData.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/PublishedStreamData.java new file mode 100644 index 00000000..b356b4f6 --- /dev/null +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/PublishedStreamData.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 PublishedStreamData { + + /** + * StreamRoom ID + */ + public String streamRoomId; + + /** + * Stream ID's + */ + public StreamInfo stream; + + public String userId; + + public PublishedStreamData(String streamRoomId, StreamInfo stream, String userId) { + this.streamRoomId = streamRoomId; + this.stream = stream; + this.userId = userId; + } +} \ No newline at end of file From 366c681d11fa17350bdead303a53d74fbd54fb6c Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 11:03:30 +0100 Subject: [PATCH 08/18] feat: add StreamEventData class --- .../parsers/model_native_initializers.h | 4 +++ .../parsers/model_native_initializers.cpp | 32 +++++++++++++++++++ .../model/events/StreamEventData.java | 15 +++++++++ 3 files changed, 51 insertions(+) create mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamEventData.java 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 d8ac9fd3..7440696c 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 @@ -87,6 +87,10 @@ namespace privmx { streamPublishedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamPublishedEventData data); + jobject + streamEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamEventData + data); + } // streams } // wrapper 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 d6b546af..ee711804 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 @@ -781,6 +781,38 @@ namespace privmx { ); } + 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()) + ); + } + } // streams } // wrapper } // privmx \ No newline at end of file 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; + } +} From e311fe09b960c7894b10c77769fe234d7e9ae700 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 11:05:28 +0100 Subject: [PATCH 09/18] feat: add StreamUnpublishedEventData class --- .../parsers/model_native_initializers.h | 4 ++ .../parsers/model_native_initializers.cpp | 69 ++++++++++--------- .../events/StreamUnpublishedEventData.java | 11 +++ 3 files changed, 52 insertions(+), 32 deletions(-) create mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamUnpublishedEventData.java 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 7440696c..5738e9f6 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 @@ -91,6 +91,10 @@ namespace privmx { streamEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamEventData data); + jobject + streamUnpublishedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamUnpublishedEventData + data); + } // streams } // wrapper 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 ee711804..4275e572 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( @@ -813,6 +794,30 @@ namespace privmx { ); } + 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) + ); + } + } // streams } // wrapper } // privmx \ No newline at end of file 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; + } +} From 1eabb47c13972d0965f55a4fa69de64528ce108a Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 11:06:28 +0100 Subject: [PATCH 10/18] feat: add NewStreams class --- .../parsers/model_native_initializers.h | 4 +++ .../parsers/model_native_initializers.cpp | 30 +++++++++++++++++++ .../model/events/NewStreams.java | 15 ++++++++++ 3 files changed, 49 insertions(+) create mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/NewStreams.java 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 5738e9f6..60d375a4 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 @@ -95,6 +95,10 @@ namespace privmx { streamUnpublishedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamUnpublishedEventData data); + jobject + newStreams2Java(JniContextUtils & ctx, privmx::endpoint::stream::NewStreams + data); + } // streams } // wrapper 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 4275e572..6cd50a43 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 @@ -818,6 +818,36 @@ namespace privmx { ); } + 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 + ); + } + } // streams } // wrapper } // privmx \ No newline at end of file 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; + } +} From fc2c394a01f763bd49db688c3f546c152ab53591 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 11:07:33 +0100 Subject: [PATCH 11/18] feat: add StreamsUpdatedData class --- .../parsers/model_native_initializers.h | 3 ++ .../parsers/model_native_initializers.cpp | 29 +++++++++++++++++++ .../model/events/StreamsUpdatedData.java | 13 +++++++++ 3 files changed, 45 insertions(+) create mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamsUpdatedData.java 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 60d375a4..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 @@ -99,6 +99,9 @@ namespace privmx { newStreams2Java(JniContextUtils & ctx, privmx::endpoint::stream::NewStreams data); + jobject + streamsUpdated2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamsUpdatedData + data); } // streams } // wrapper 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 6cd50a43..2b904b13 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 @@ -848,6 +848,35 @@ namespace privmx { ); } + 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/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 From 85d1c070aa0096a40d7b9e5492deef646c75f6e6 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 11:16:58 +0100 Subject: [PATCH 12/18] feat: update StreamPublishResult class --- .../model/StreamPublishResult.java | 14 ++++++++------ .../privmx_endpoint/model/StreamPublishResult.java | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) 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; } From 556833bd5a07b86b4ad0868daa7a8ff721858d69 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 11:21:08 +0100 Subject: [PATCH 13/18] feat: add parse streams event function --- .../endpoint/wrapper/streams/parsers/parser.h | 2 + .../src/cpp/streams/parsers/parser.cpp | 143 ++++++++++++++++++ 2 files changed, 145 insertions(+) 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..5f17fdf9 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 @@ -32,3 +32,5 @@ privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env, jobjec privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription); //#endif //PRIVMX_POCKET_LIB_PARSER_H + jobject parseStreamEvent(JniContextUtils &ctx, std::shared_ptr event); + 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..68e5c18e 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,147 @@ privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextU if(streamTrackId != nullptr) result.streamTrackId = jobject2string(ctx, streamTrackId); return result; +} + +jobject +parseStreamEvent(JniContextUtils &ctx, std::shared_ptr event) { + try { + 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 nullptr; + } + + } catch (const std::exception &e) { + throw e; + } + return nullptr; } \ No newline at end of file From 9d2de70464b3f8a1bb6a22c62d38341922ea59fa Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 11:22:08 +0100 Subject: [PATCH 14/18] feat: add initEvent function to header --- .../includes/privmx/endpoint/wrapper/parsers/parser.h | 5 +++++ 1 file changed, 5 insertions(+) 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..a8df0ade 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); @@ -35,6 +37,9 @@ privmx::endpoint::core::ItemPolicy parseItemPolicy(JniContextUtils &ctx, jobject privmx::endpoint::inbox::FilesConfig parseFilesConfig(JniContextUtils &ctx, jobject filesConfig); +jobject initEvent(JniContextUtils &ctx, std::string type, std::string channel, int64_t connectionId, + std::vector &subscriptions, int64_t timestamp, jobject data_j) ; + jobject parseEvent(JniContextUtils &ctx, std::shared_ptr event); privmx::endpoint::core::PagingQuery parsePagingQuery(JniContextUtils &ctx, jobject pagingQuery); From 61a45d0a1df4633f02c07d945a600c96b0f9a8da Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 11:29:25 +0100 Subject: [PATCH 15/18] refactor: rename StreamPublishedEventData --- .../src/cpp/streams/parsers/model_native_initializers.cpp | 2 +- ...PublishedStreamData.java => StreamPublishedEventData.java} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/{PublishedStreamData.java => StreamPublishedEventData.java} (77%) 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 2b904b13..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 @@ -697,7 +697,7 @@ namespace privmx { privmx::endpoint::stream::StreamPublishedEventData data ) { jclass cls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/PublishedStreamData"); + "com/simplito/java/privmx_endpoint/model/events/StreamPublishedEventData"); jmethodID ctor = ctx->GetMethodID( cls, "", diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/PublishedStreamData.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamPublishedEventData.java similarity index 77% rename from privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/PublishedStreamData.java rename to privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamPublishedEventData.java index b356b4f6..2daa75e4 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/PublishedStreamData.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/events/StreamPublishedEventData.java @@ -4,7 +4,7 @@ // todo: which to choose // same as StreamPublishedEventData -public class PublishedStreamData { +public class StreamPublishedEventData { /** * StreamRoom ID @@ -18,7 +18,7 @@ public class PublishedStreamData { public String userId; - public PublishedStreamData(String streamRoomId, StreamInfo stream, String userId) { + public StreamPublishedEventData(String streamRoomId, StreamInfo stream, String userId) { this.streamRoomId = streamRoomId; this.stream = stream; this.userId = userId; From c5bedd19fae9662d2c162b13769aa4660626f334 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 11:32:15 +0100 Subject: [PATCH 16/18] feat: add buildSubscriptionQuery to StreamApiLow --- .../src/cpp/streams/modules/StreamApiLow.cpp | 32 +++++++++++++++++++ .../modules/stream/StreamApiLow.java | 14 +++++--- 2 files changed, 41 insertions(+), 5 deletions(-) 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..afbc03d5 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp @@ -649,6 +649,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/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 + ); } From 30f71a135fd035bdb1e336b8ef7947dd06a7128c Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 4 Feb 2026 11:38:01 +0100 Subject: [PATCH 17/18] feat: add class for handling parsing functions used by EventQueue --- jni-wrappers/privmx-endpoint/CMakeLists.txt | 1 + .../endpoint/wrapper/modules/EventsList.h | 42 +++++++++++++++++++ .../src/cpp/modules/EventQueue.cpp | 7 ++-- .../src/cpp/streams/modules/StreamApiLow.cpp | 4 +- 4 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/modules/EventsList.h diff --git a/jni-wrappers/privmx-endpoint/CMakeLists.txt b/jni-wrappers/privmx-endpoint/CMakeLists.txt index 91ce8815..bca774ac 100644 --- a/jni-wrappers/privmx-endpoint/CMakeLists.txt +++ b/jni-wrappers/privmx-endpoint/CMakeLists.txt @@ -29,6 +29,7 @@ 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 + ${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/modules/EventsList.cpp src/cpp/streams/modules/StreamApiLow.cpp src/cpp/streams/modules/WebRTCInterfaceJNI.cpp src/cpp/streams/modules/StreamSettingsJNI.cpp diff --git a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/modules/EventsList.h b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/modules/EventsList.h new file mode 100644 index 00000000..cf77091c --- /dev/null +++ b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/modules/EventsList.h @@ -0,0 +1,42 @@ +#ifndef PRIVMXENDPOINT_EVENTSLIST_H +#define PRIVMXENDPOINT_EVENTSLIST_H + +#include "privmx/endpoint/wrapper/parsers/parser.h" + +class EventsList { +private: + EventsList() { + addParser(parseEvent); + } + +public: + static EventsList &instance(){ + static EventsList eventsList; + return eventsList; + } + + void addParser( jobject (*fun)(JniContextUtils&, std::shared_ptr)){ + list_of_parsers.push_back(fun); + } + + jobject getEvent( + JniContextUtils& ctx, + std::shared_ptr event + ) { + int size = list_of_parsers.size() -1; + for(int i=size; i>=0; --i) + { + jobject res = list_of_parsers[i](ctx, event); + if (res != nullptr) { + return res; + } + } + + return nullptr; + } + + std::vector< jobject (*)(JniContextUtils &ctx, std::shared_ptr event)> list_of_parsers; +}; + + +#endif //PRIVMXENDPOINT_EVENTSLIST_H diff --git a/jni-wrappers/privmx-endpoint/src/cpp/modules/EventQueue.cpp b/jni-wrappers/privmx-endpoint/src/cpp/modules/EventQueue.cpp index 22af8d15..6c5b833c 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/modules/EventQueue.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/modules/EventQueue.cpp @@ -13,6 +13,7 @@ #include #include "privmx/endpoint/wrapper/utils/utils.hpp" #include "privmx/endpoint/wrapper/parsers/parser.h" +#include "privmx/endpoint/wrapper/modules/EventsList.h" using namespace privmx::endpoint::core; @@ -36,7 +37,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_core_EventQueue_waitEvent( JniContextUtils ctx(env); jobject result; ctx.callResultEndpointApi(&result, [&ctx]() { - return parseEvent(ctx, EventQueue::getInstance().waitEvent().get()); + return EventsList::instance().getEvent(ctx, EventQueue::getInstance().waitEvent().get()); }); if (ctx->ExceptionCheck()) { return nullptr; @@ -54,8 +55,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 : + EventsList::instance().getEvent(ctx, eventHolder.value().get()); }); if (ctx->ExceptionCheck()) { return nullptr; 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 afbc03d5..568c4276 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp @@ -13,7 +13,7 @@ #include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h" #include "privmx/endpoint/wrapper/streams/parsers/parser.h" -//#include +#include "privmx/endpoint/wrapper/modules/EventsList.h" using namespace privmx::endpoint::stream; using namespace privmx::endpoint; @@ -75,6 +75,8 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_create( return nullptr; } + EventsList::instance().addParser(parseStreamEvent); + // jobject result; // ctx.callResultEndpointApi(&result, [&ctx, &env, &clazz, &connection, &eventApi] { jmethodID initMID = ctx->GetMethodID(clazz, "", From f82213cbce8fe81fb8afc6c5e87bc43b63d5fc8c Mon Sep 17 00:00:00 2001 From: Doominika Date: Fri, 6 Feb 2026 10:53:03 +0100 Subject: [PATCH 18/18] refactor: move stream events to core events and remove EventsList class --- jni-wrappers/privmx-endpoint/CMakeLists.txt | 1 - .../endpoint/wrapper/modules/EventsList.h | 42 ----- .../privmx/endpoint/wrapper/parsers/parser.h | 3 - .../endpoint/wrapper/streams/parsers/parser.h | 4 +- .../src/cpp/modules/EventQueue.cpp | 5 +- .../src/cpp/parsers/parser.cpp | 129 ++++++++++++++++ .../src/cpp/streams/modules/StreamApiLow.cpp | 4 - .../src/cpp/streams/parsers/parser.cpp | 143 ------------------ 8 files changed, 132 insertions(+), 199 deletions(-) delete mode 100644 jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/modules/EventsList.h diff --git a/jni-wrappers/privmx-endpoint/CMakeLists.txt b/jni-wrappers/privmx-endpoint/CMakeLists.txt index bca774ac..91ce8815 100644 --- a/jni-wrappers/privmx-endpoint/CMakeLists.txt +++ b/jni-wrappers/privmx-endpoint/CMakeLists.txt @@ -29,7 +29,6 @@ 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 - ${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/modules/EventsList.cpp src/cpp/streams/modules/StreamApiLow.cpp src/cpp/streams/modules/WebRTCInterfaceJNI.cpp src/cpp/streams/modules/StreamSettingsJNI.cpp diff --git a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/modules/EventsList.h b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/modules/EventsList.h deleted file mode 100644 index cf77091c..00000000 --- a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/modules/EventsList.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef PRIVMXENDPOINT_EVENTSLIST_H -#define PRIVMXENDPOINT_EVENTSLIST_H - -#include "privmx/endpoint/wrapper/parsers/parser.h" - -class EventsList { -private: - EventsList() { - addParser(parseEvent); - } - -public: - static EventsList &instance(){ - static EventsList eventsList; - return eventsList; - } - - void addParser( jobject (*fun)(JniContextUtils&, std::shared_ptr)){ - list_of_parsers.push_back(fun); - } - - jobject getEvent( - JniContextUtils& ctx, - std::shared_ptr event - ) { - int size = list_of_parsers.size() -1; - for(int i=size; i>=0; --i) - { - jobject res = list_of_parsers[i](ctx, event); - if (res != nullptr) { - return res; - } - } - - return nullptr; - } - - std::vector< jobject (*)(JniContextUtils &ctx, std::shared_ptr event)> list_of_parsers; -}; - - -#endif //PRIVMXENDPOINT_EVENTSLIST_H 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 a8df0ade..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 @@ -37,9 +37,6 @@ privmx::endpoint::core::ItemPolicy parseItemPolicy(JniContextUtils &ctx, jobject privmx::endpoint::inbox::FilesConfig parseFilesConfig(JniContextUtils &ctx, jobject filesConfig); -jobject initEvent(JniContextUtils &ctx, std::string type, std::string channel, int64_t connectionId, - std::vector &subscriptions, int64_t timestamp, jobject data_j) ; - jobject parseEvent(JniContextUtils &ctx, std::shared_ptr event); privmx::endpoint::core::PagingQuery parsePagingQuery(JniContextUtils &ctx, jobject pagingQuery); 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 5f17fdf9..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,6 +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 - jobject parseStreamEvent(JniContextUtils &ctx, std::shared_ptr event); - +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 6c5b833c..b5a2b810 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/modules/EventQueue.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/modules/EventQueue.cpp @@ -13,7 +13,6 @@ #include #include "privmx/endpoint/wrapper/utils/utils.hpp" #include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/wrapper/modules/EventsList.h" using namespace privmx::endpoint::core; @@ -37,7 +36,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_core_EventQueue_waitEvent( JniContextUtils ctx(env); jobject result; ctx.callResultEndpointApi(&result, [&ctx]() { - return EventsList::instance().getEvent(ctx, EventQueue::getInstance().waitEvent().get()); + return parseEvent(ctx, EventQueue::getInstance().waitEvent().get()); }); if (ctx->ExceptionCheck()) { return nullptr; @@ -56,7 +55,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_core_EventQueue_getEvent( auto eventHolder = EventQueue::getInstance().getEvent(); return !eventHolder.has_value() ? nullptr : - EventsList::instance().getEvent(ctx, eventHolder.value().get()); + 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 568c4276..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 "privmx/endpoint/wrapper/modules/EventsList.h" - using namespace privmx::endpoint::stream; using namespace privmx::endpoint; //using namespace privmx::wrapper; @@ -75,8 +73,6 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_create( return nullptr; } - EventsList::instance().addParser(parseStreamEvent); - // jobject result; // ctx.callResultEndpointApi(&result, [&ctx, &env, &clazz, &connection, &eventApi] { jmethodID initMID = ctx->GetMethodID(clazz, "", 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 68e5c18e..e16d244f 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/parser.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/parser.cpp @@ -104,146 +104,3 @@ privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextU return result; } - -jobject -parseStreamEvent(JniContextUtils &ctx, std::shared_ptr event) { - try { - 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 nullptr; - } - - } catch (const std::exception &e) { - throw e; - } - return nullptr; -} \ No newline at end of file