From 3928fc03589419d6b16bf78c9758fdfddf42c4d3 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 11 Feb 2026 11:48:28 +0100 Subject: [PATCH 01/19] refactor: move streamApiLow and required classes to privmx-endpoint --- .../privmx_endpoint/streams/StreamApiLow.java | 242 ++++++++++++++++++ .../streams/WebRTCInterface.java | 30 +++ .../privmx_endpoint/streams/model/Key.java | 28 ++ .../streams/model/KeyType.java | 17 ++ .../streams/model/PublishedStreamData.java | 13 + .../streams/model/SdpWithTypeModel.java | 25 ++ .../streams/model/Settings.java | 6 + .../streams/model/StreamHandle.java | 13 + .../streams/model/StreamInfo.java | 45 ++++ .../streams/model/StreamPublishResult.java | 14 + .../streams/model/StreamRoom.java | 65 +++++ .../streams/model/StreamSubscription.java | 15 ++ .../streams/model/StreamTrackInfo.java | 99 +++++++ .../model/StreamTrackModification.java | 13 + .../model/StreamTrackModificationPair.java | 19 ++ .../streams/model/TurnCredentials.java | 31 +++ .../streams/model/events/NewStreams.java | 16 ++ .../streams/model/events/StreamEventData.java | 15 ++ .../events/StreamPublishedEventData.java | 27 ++ .../events/StreamRoomDeletedEventData.java | 9 + .../events/StreamUnpublishedEventData.java | 11 + .../model/events/StreamUpdatedEventData.java | 21 ++ .../model/events/StreamsUpdatedData.java | 14 + .../model/events/UpdatedStreamData.java | 41 +++ .../StreamEventSelectorType.java | 9 + .../events/eventTypes/StreamEventType.java | 16 ++ 26 files changed, 854 insertions(+) create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/StreamApiLow.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/WebRTCInterface.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Key.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/KeyType.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/PublishedStreamData.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/SdpWithTypeModel.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Settings.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamHandle.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamInfo.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamPublishResult.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamRoom.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamSubscription.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackInfo.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModification.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModificationPair.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/TurnCredentials.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/NewStreams.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamEventData.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamPublishedEventData.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamRoomDeletedEventData.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUnpublishedEventData.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUpdatedEventData.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamsUpdatedData.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/UpdatedStreamData.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventSelectorTypes/StreamEventSelectorType.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventTypes/StreamEventType.java diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/StreamApiLow.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/StreamApiLow.java new file mode 100644 index 00000000..82cbec1f --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/StreamApiLow.java @@ -0,0 +1,242 @@ +// +// PrivMX Endpoint Java. +// Copyright © 2025 Simplito sp. z o.o. +// +// This file is part of the PrivMX Platform (https://privmx.dev). +// This software is Licensed under the MIT License. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package com.simplito.java.privmx_endpoint.streams; + +import com.simplito.java.privmx_endpoint.model.ContainerPolicy; +import com.simplito.java.privmx_endpoint.model.PagingList; +import com.simplito.java.privmx_endpoint.model.UserWithPubKey; +import com.simplito.java.privmx_endpoint.streams.model.events.eventSelectorTypes.StreamEventSelectorType; +import com.simplito.java.privmx_endpoint.streams.model.events.eventTypes.StreamEventType; +import com.simplito.java.privmx_endpoint.modules.core.Connection; +import com.simplito.java.privmx_endpoint.modules.event.EventApi; +import com.simplito.java.privmx_endpoint.streams.model.SdpWithTypeModel; +import com.simplito.java.privmx_endpoint.streams.model.Settings; +import com.simplito.java.privmx_endpoint.streams.model.StreamHandle; +import com.simplito.java.privmx_endpoint.streams.model.StreamInfo; +import com.simplito.java.privmx_endpoint.streams.model.StreamPublishResult; +import com.simplito.java.privmx_endpoint.streams.model.StreamRoom; +import com.simplito.java.privmx_endpoint.streams.model.StreamSubscription; +import com.simplito.java.privmx_endpoint.streams.model.TurnCredentials; + +import java.util.List; +import java.util.Objects; +import java.util.Optional; + +public class StreamApiLow implements AutoCloseable { + static { +// System.loadLibrary("crypto"); +// System.loadLibrary("ssl"); +// System.loadLibrary("privmx-endpoint-java"); +// System.loadLibrary("privmx-endpoint-streams-android"); + } + + @SuppressWarnings("FieldCanBeLocal") + private final Long api; + + private StreamApiLow(Long api) { + this.api = api; + } + +// private native Long init(Connection connection, EventApi eventApi) throws IllegalStateException; + + private static native StreamApiLow create( + Connection connection, + EventApi eventApi + ); + + public StreamApiLow( + Connection connection + ) throws IllegalStateException { + this(connection, null); + } + + public StreamApiLow( + Connection connection, + EventApi eventApi + ) throws IllegalStateException { + Objects.requireNonNull(connection); + EventApi tmpEventApi = eventApi == null ? new EventApi(connection) : null; + StreamApiLow streamApiLow = create( + connection, + Optional.ofNullable(eventApi).orElse(tmpEventApi) + ); +// api = streamApiLow.api; + + try { + if (eventApi != null) tmpEventApi.close(); + } catch (Exception ignore) { + } + } + + public native List getTurnCredentials(); + + public String createStreamRoom( + String contextId, + List users, + List managers, + byte[] publicMeta, + byte[] privateMeta + ) { + return this.createStreamRoom(contextId, users, managers, publicMeta, privateMeta, null); + } + + public native String createStreamRoom( + String contextId, + List users, + List managers, + byte[] publicMeta, + byte[] privateMeta, + ContainerPolicy policies + ); + + //TODO: write methods with default values for force and forceGenerateNewKey parameters + public void updateStreamRoom( + String streamRoomId, + List users, + List managers, + byte[] publicMeta, + byte[] privateMeta, + long version, + boolean force, + boolean forceGenerateNewKey + ) { + this.updateStreamRoom(streamRoomId, users, managers, publicMeta, privateMeta, version, force, forceGenerateNewKey, null); + } + + public native void updateStreamRoom( + String streamRoomId, + List users, + List managers, + byte[] publicMeta, + byte[] privateMeta, + long version, + boolean force, + boolean forceGenerateNewKey, + ContainerPolicy policies + ); + + public native PagingList listStreamRooms( + String contextId, + long skip, + long limit, + String sortOrder, + String lastId, + String sortBy, + String queryAsJson + ); + + public PagingList listStreamRooms( + String contextId, + long skip, + long limit, + String sortOrder, + String lastId, + String sortBy + ){ + return listStreamRooms(contextId, skip, limit, sortOrder, lastId, sortBy, null); + } + + public PagingList listStreamRooms( + String contextId, + long skip, + long limit, + String sortOrder, + String lastId + ){ + return listStreamRooms(contextId, skip, limit, sortOrder, lastId, null, null); + } + + public PagingList listStreamRooms( + String contextId, + long skip, + long limit, + String sortOrder + ){ + return listStreamRooms(contextId, skip, limit, sortOrder, null, null, null); + } + + public PagingList listStreamRooms( + String contextId, + long skip, + long limit + ){ + return listStreamRooms(contextId, skip, limit, "desc", null, null, null); + } + + public native StreamRoom getStreamRoom(String streamRoomId); + + public native void deleteStreamRoom(String streamRoomId); + + // Stream + public native List listStreams(String streamRoomId); + + public native void joinStreamRoom( + String streamRoomId, + WebRTCInterface webRtc + ); + + public native void leaveStreamRoom(String streamRoomId); + + public native StreamHandle createStream( + String streamRoomId + ); + + public native StreamPublishResult publishStream(StreamHandle streamHandle); + + // todo + public native StreamPublishResult updateStream(StreamHandle streamHandle); + + public native void unpublishStream(StreamHandle streamHandle); + + public native void subscribeToRemoteStreams(String streamRoomId, List subscriptions, Settings options); + + public native void modifyRemoteStreamsSubscriptions(String streamRoomId, List subscriptionsToAdd, List subscriptionsToRemove, Settings options); + + public native void unsubscribeFromRemoteStreams(String streamRoomId, List subscriptionsToRemove); + + public native void trickle(long sessionId, String candidateAsJson); + + + // todo + public native void acceptOfferOnReconfigure( + long sessionId, + SdpWithTypeModel sdp + ); + + public native List subscribeFor(List subscriptionQueries); + + public native void unsubscribeFrom(List subscriptionIds); + + private native String buildSubscriptionQuery(long eventType, long selectorType, String selectorId); + + public String buildSubscriptionQuery( + StreamEventType eventType, + StreamEventSelectorType selectorType, + String selectorId + ) { + return buildSubscriptionQuery( + eventType.ordinal(), + selectorType.ordinal(), + selectorId + ); + } + + + public native void keyManagement(String streamRoomId, boolean disable); + + private native void deinit() throws IllegalStateException; + + @Override + public void close() throws Exception { + deinit(); + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/WebRTCInterface.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/WebRTCInterface.java new file mode 100644 index 00000000..8dc867ec --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/WebRTCInterface.java @@ -0,0 +1,30 @@ +// +// PrivMX Endpoint Java. +// Copyright © 2024 Simplito sp. z o.o. +// +// This file is part of the PrivMX Platform (https://privmx.dev). +// This software is Licensed under the MIT License. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package com.simplito.java.privmx_endpoint.streams; + +import com.simplito.java.privmx_endpoint.streams.model.Key; + +import java.util.List; + +public interface WebRTCInterface { + String createOfferAndSetLocalDescription(String streamRoomId); + + String createAnswerAndSetDescriptions(String streamRoomId, String sdp, String type); + + void setAnswerAndSetRemoteDescription(String streamRoomId, String sdp, String type); + + void updateSessionId(String streamRoomId, Long sessionId, String connectionType); + + void close(String streamRoomId); + + void updateKeys(String streamRoomId, List keys); +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Key.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Key.java new file mode 100644 index 00000000..7d2c078b --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Key.java @@ -0,0 +1,28 @@ +// +// PrivMX Endpoint Java. +// Copyright © 2024 Simplito sp. z o.o. +// +// This file is part of the PrivMX Platform (https://privmx.dev). +// This software is Licensed under the MIT License. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package com.simplito.java.privmx_endpoint.streams.model; + +public class Key { + public String keyId; + public byte[] key; + public KeyType type; + + public Key( + String keyId, + byte[] key, + KeyType type + ) { + this.keyId = keyId; + this.key = key; + this.type = type; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/KeyType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/KeyType.java new file mode 100644 index 00000000..71a304ee --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/KeyType.java @@ -0,0 +1,17 @@ +// +// PrivMX Endpoint Java. +// Copyright © 2024 Simplito sp. z o.o. +// +// This file is part of the PrivMX Platform (https://privmx.dev). +// This software is Licensed under the MIT License. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package com.simplito.java.privmx_endpoint.streams.model; + +public enum KeyType { + LOCAL, + REMOTE +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/PublishedStreamData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/PublishedStreamData.java new file mode 100644 index 00000000..163115cd --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/PublishedStreamData.java @@ -0,0 +1,13 @@ +package com.simplito.java.privmx_endpoint.streams.model; + +public class PublishedStreamData { + public String streamRoomId; + public StreamInfo stream; + public String userId; + + public PublishedStreamData(String streamRoomId, StreamInfo stream, String userId) { + this.streamRoomId = streamRoomId; + this.stream = stream; + this.userId = userId; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/SdpWithTypeModel.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/SdpWithTypeModel.java new file mode 100644 index 00000000..55093619 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/SdpWithTypeModel.java @@ -0,0 +1,25 @@ +// +// PrivMX Endpoint Java. +// Copyright © 2025 Simplito sp. z o.o. +// +// This file is part of the PrivMX Platform (https://privmx.dev). +// This software is Licensed under the MIT License. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package com.simplito.java.privmx_endpoint.streams.model; + +public class SdpWithTypeModel { + public String sdp; + public String type; + + public SdpWithTypeModel( + String sdp, + String type + ) { + this.sdp = sdp; + this.type = type; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Settings.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Settings.java new file mode 100644 index 00000000..12b6f6f1 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Settings.java @@ -0,0 +1,6 @@ +package com.simplito.java.privmx_endpoint.streams.model; + +public class Settings { + public Settings() { + } +} \ No newline at end of file diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamHandle.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamHandle.java new file mode 100644 index 00000000..08bba873 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamHandle.java @@ -0,0 +1,13 @@ +package com.simplito.java.privmx_endpoint.streams.model; + +public class StreamHandle { + private final Long value; + + public StreamHandle(Long value) { + this.value = value; + } + + public Long getValue() { + return value; + } +} \ No newline at end of file diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamInfo.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamInfo.java new file mode 100644 index 00000000..53abbdde --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamInfo.java @@ -0,0 +1,45 @@ +// +// PrivMX Endpoint Java. +// Copyright © 2024 Simplito sp. z o.o. +// +// This file is part of the PrivMX Platform (https://privmx.dev). +// This software is Licensed under the MIT License. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package com.simplito.java.privmx_endpoint.streams.model; + +import java.util.List; + +public class StreamInfo { + public Long id; + public String userId; + public List tracks; + public String metadata; // optional + public Boolean dummy; // optional + public Boolean talking; // optional + + + public StreamInfo(Long id, String userId, List tracks) { + this(id, userId, tracks, null, null, null); + } + + public StreamInfo(Long id, String userId, List tracks, String metadata) { + this(id, userId, tracks, metadata, null, null); + } + + public StreamInfo(Long id, String userId, List tracks, String metadata, Boolean dummy) { + this(id, userId, tracks, metadata, dummy, null); + } + + public StreamInfo(Long id, String userId, List tracks, String metadata, Boolean dummy, Boolean talking) { + this.id = id; + this.userId = userId; + this.tracks = tracks; + this.metadata = metadata; + this.dummy = dummy; + this.talking = talking; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamPublishResult.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamPublishResult.java new file mode 100644 index 00000000..f9941b3b --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamPublishResult.java @@ -0,0 +1,14 @@ +package com.simplito.java.privmx_endpoint.streams.model; + +public class StreamPublishResult { +public Boolean published; +public PublishedStreamData data; + + public StreamPublishResult(Boolean published) { + this(published, null); + } + public StreamPublishResult(Boolean published, PublishedStreamData data) { + this.published = published; + this.data = data; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamRoom.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamRoom.java new file mode 100644 index 00000000..6fd6f0f9 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamRoom.java @@ -0,0 +1,65 @@ +// +// PrivMX Endpoint Java. +// Copyright © 2024 Simplito sp. z o.o. +// +// This file is part of the PrivMX Platform (https://privmx.dev). +// This software is Licensed under the MIT License. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package com.simplito.java.privmx_endpoint.streams.model; + +import com.simplito.java.privmx_endpoint.model.ContainerPolicy; + +import java.util.List; + +public class StreamRoom { + public String contextId; + public String streamRoomId; + public Long createDate; + public String creator; + public Long lastModificationDate; + public String lastModifier; + public List users; + public List managers; + public Long version; + public byte[] publicMeta; + public byte[] privateMeta; + public ContainerPolicy policy; + public Long statusCode; + public Long schemaVersion; + + public StreamRoom( + String contextId, + String streamRoomId, + Long createDate, + String creator, + Long lastModificationDate, + String lastModifier, + List users, + List managers, + Long version, + byte[] publicMeta, + byte[] privateMeta, + ContainerPolicy policy, + Long statusCode, + Long schemaVersion + ) { + this.contextId = contextId; + this.streamRoomId = streamRoomId; + this.createDate = createDate; + this.creator = creator; + this.lastModificationDate = lastModificationDate; + this.lastModifier = lastModifier; + this.users = users; + this.managers = managers; + this.version = version; + this.publicMeta = publicMeta; + this.privateMeta = privateMeta; + this.policy = policy; + this.statusCode = statusCode; + this.schemaVersion = schemaVersion; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamSubscription.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamSubscription.java new file mode 100644 index 00000000..2c4bd433 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamSubscription.java @@ -0,0 +1,15 @@ +package com.simplito.java.privmx_endpoint.streams.model; + +public class StreamSubscription { + public long streamId; + public String streamTrackId; + + public StreamSubscription(long streamId, String streamTrackId) { + this.streamId = streamId; + this.streamTrackId = streamTrackId; + } + + public StreamSubscription(long streamId) { + this.streamId = streamId; + } +} \ No newline at end of file diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackInfo.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackInfo.java new file mode 100644 index 00000000..46d3dd9c --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackInfo.java @@ -0,0 +1,99 @@ +package com.simplito.java.privmx_endpoint.streams.model; + +public class StreamTrackInfo { + public String type; + public Long mindex; + public String mid; + + public Boolean disabled; // optional + public String codec; // optional + public String description; // optional + public Boolean moderated; // optional + public Boolean simulcast; // optional + public Boolean talking; // optional + + public StreamTrackInfo( + String type, + Long mindex, + String mid + ) { + this(type, mindex, mid, null, null, null, null, null, null); + } + + public StreamTrackInfo( + String type, + Long mindex, + String mid, + Boolean disabled + ) { + this(type, mindex, mid, disabled, null, null, null, null, null); + } + + public StreamTrackInfo( + String type, + Long mindex, + String mid, + Boolean disabled, + String codec + ) { + this(type, mindex, mid, disabled, codec, null, null, null, null); + } + + public StreamTrackInfo( + String type, + Long mindex, + String mid, + Boolean disabled, + String codec, + String description + ) { + this(type, mindex, mid, disabled, codec, description, null, null, null); + } + + public StreamTrackInfo( + String type, + Long mindex, + String mid, + Boolean disabled, + String codec, + String description, + Boolean moderated + ) { + this(type, mindex, mid, disabled, codec, description, moderated, null, null); + } + + public StreamTrackInfo( + String type, + Long mindex, + String mid, + Boolean disabled, + String codec, + String description, + Boolean moderated, + Boolean simulcast + ) { + this(type, mindex, mid, disabled, codec, description, moderated, simulcast, null); + } + + public StreamTrackInfo( + String type, + Long mindex, + String mid, + Boolean disabled, + String codec, + String description, + Boolean moderated, + Boolean simulcast, + Boolean talking + ) { + this.type = type; + this.mindex = mindex; + this.mid = mid; + this.disabled = disabled; + this.codec = codec; + this.description = description; + this.moderated = moderated; + this.simulcast = simulcast; + this.talking = talking; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModification.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModification.java new file mode 100644 index 00000000..99cfec34 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModification.java @@ -0,0 +1,13 @@ +package com.simplito.java.privmx_endpoint.streams.model; + +import java.util.List; + +public class StreamTrackModification { + public Long streamId; + public List tracks; + + public StreamTrackModification(Long streamId, List tracks) { + this.streamId = streamId; + this.tracks = tracks; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModificationPair.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModificationPair.java new file mode 100644 index 00000000..61339826 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModificationPair.java @@ -0,0 +1,19 @@ +package com.simplito.java.privmx_endpoint.streams.model; + +public class StreamTrackModificationPair { + public StreamTrackInfo before; + public StreamTrackInfo after; + + public StreamTrackModificationPair(StreamTrackInfo before, StreamTrackInfo after) { + this.before = before; + this.after = after; + } + + public StreamTrackModificationPair(StreamTrackInfo before) { + this(before, null); + } + + public StreamTrackModificationPair() { + this(null, null); + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/TurnCredentials.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/TurnCredentials.java new file mode 100644 index 00000000..08ab8f40 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/TurnCredentials.java @@ -0,0 +1,31 @@ +// +// PrivMX Endpoint Java. +// Copyright © 2025 Simplito sp. z o.o. +// +// This file is part of the PrivMX Platform (https://privmx.dev). +// This software is Licensed under the MIT License. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package com.simplito.java.privmx_endpoint.streams.model; + +public class TurnCredentials { + public String url; + public String username; + public String password; + public Long expirationTime; + + public TurnCredentials( + String url, + String username, + String password, + Long expirationTime + ) { + this.url = url; + this.username = username; + this.password = password; + this.expirationTime = expirationTime; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/NewStreams.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/NewStreams.java new file mode 100644 index 00000000..9288b87b --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/NewStreams.java @@ -0,0 +1,16 @@ +package com.simplito.java.privmx_endpoint.streams.model.events; + + +import com.simplito.java.privmx_endpoint.streams.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/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamEventData.java new file mode 100644 index 00000000..4b9b3dda --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamEventData.java @@ -0,0 +1,15 @@ +package com.simplito.java.privmx_endpoint.streams.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/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamPublishedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamPublishedEventData.java new file mode 100644 index 00000000..29305e69 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamPublishedEventData.java @@ -0,0 +1,27 @@ +package com.simplito.java.privmx_endpoint.streams.model.events; + + +import com.simplito.java.privmx_endpoint.streams.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/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamRoomDeletedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamRoomDeletedEventData.java new file mode 100644 index 00000000..5946301f --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamRoomDeletedEventData.java @@ -0,0 +1,9 @@ +package com.simplito.java.privmx_endpoint.streams.model.events; + +public class StreamRoomDeletedEventData { + public String streamRoomId; + + public StreamRoomDeletedEventData(String streamRoomId) { + this.streamRoomId = streamRoomId; + } +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUnpublishedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUnpublishedEventData.java new file mode 100644 index 00000000..04f06ac4 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUnpublishedEventData.java @@ -0,0 +1,11 @@ +package com.simplito.java.privmx_endpoint.streams.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/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUpdatedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUpdatedEventData.java new file mode 100644 index 00000000..bbf894a0 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUpdatedEventData.java @@ -0,0 +1,21 @@ +package com.simplito.java.privmx_endpoint.streams.model.events; + + +import com.simplito.java.privmx_endpoint.streams.model.StreamInfo; +import com.simplito.java.privmx_endpoint.streams.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/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamsUpdatedData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamsUpdatedData.java new file mode 100644 index 00000000..4b691148 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamsUpdatedData.java @@ -0,0 +1,14 @@ +package com.simplito.java.privmx_endpoint.streams.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/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/UpdatedStreamData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/UpdatedStreamData.java new file mode 100644 index 00000000..563b77e6 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/UpdatedStreamData.java @@ -0,0 +1,41 @@ +package com.simplito.java.privmx_endpoint.streams.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/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventSelectorTypes/StreamEventSelectorType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventSelectorTypes/StreamEventSelectorType.java new file mode 100644 index 00000000..ca4f44be --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventSelectorTypes/StreamEventSelectorType.java @@ -0,0 +1,9 @@ +package com.simplito.java.privmx_endpoint.streams.model.events.eventSelectorTypes; + +import com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes.EventSelectorType; + +public enum StreamEventSelectorType implements EventSelectorType { + CONTEXT_ID, + STREAMROOM_ID, + STREAM_ID +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventTypes/StreamEventType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventTypes/StreamEventType.java new file mode 100644 index 00000000..92350080 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventTypes/StreamEventType.java @@ -0,0 +1,16 @@ +package com.simplito.java.privmx_endpoint.streams.model.events.eventTypes; + +import com.simplito.java.privmx_endpoint.model.events.eventTypes.EventType; + +public enum StreamEventType implements EventType { + STREAMROOM_CREATE, + STREAMROOM_UPDATE, + STREAMROOM_DELETE, + EMPTY, + STREAM_JOIN, + STREAM_LEAVE, + STREAM_PUBLISH, + STREAM_UNPUBLISH +} + + From 1d8936ac832acd8d06db12dcfe4a7ae3a4447265 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 11 Feb 2026 12:09:28 +0100 Subject: [PATCH 02/19] chore: comment unimplemented methods in streamApiLow --- .../privmx_endpoint/streams/StreamApiLow.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/StreamApiLow.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/StreamApiLow.java index 82cbec1f..d4e398f6 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/StreamApiLow.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/StreamApiLow.java @@ -193,7 +193,7 @@ public native StreamHandle createStream( public native StreamPublishResult publishStream(StreamHandle streamHandle); // todo - public native StreamPublishResult updateStream(StreamHandle streamHandle); +// public native StreamPublishResult updateStream(StreamHandle streamHandle); public native void unpublishStream(StreamHandle streamHandle); @@ -207,28 +207,28 @@ public native StreamHandle createStream( // todo - public native void acceptOfferOnReconfigure( - long sessionId, - SdpWithTypeModel sdp - ); +// public native void acceptOfferOnReconfigure( +// long sessionId, +// SdpWithTypeModel sdp +// ); public native List subscribeFor(List subscriptionQueries); public native void unsubscribeFrom(List subscriptionIds); - private native String buildSubscriptionQuery(long eventType, long selectorType, String selectorId); - - public String buildSubscriptionQuery( - StreamEventType eventType, - StreamEventSelectorType selectorType, - String selectorId - ) { - return buildSubscriptionQuery( - eventType.ordinal(), - selectorType.ordinal(), - selectorId - ); - } +// private native String buildSubscriptionQuery(long eventType, long selectorType, String selectorId); +// +// public String buildSubscriptionQuery( +// StreamEventType eventType, +// StreamEventSelectorType selectorType, +// String selectorId +// ) { +// return buildSubscriptionQuery( +// eventType.ordinal(), +// selectorType.ordinal(), +// selectorId +// ); +// } public native void keyManagement(String streamRoomId, boolean disable); From 944f0097c439be5b34c69d68b03e1452c6c0e97c Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 11 Feb 2026 12:10:04 +0100 Subject: [PATCH 03/19] refactor: change jni functions names after moving java classes to new dir --- .../src/cpp/streams/modules/StreamApiLow.cpp | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 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..0c13221f 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp @@ -64,7 +64,7 @@ StreamApiLow *getStreamApi(JniContextUtils &ctx, jobject streamApiInstance) { extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_create( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_create( JNIEnv *env, jclass clazz, jobject connection, @@ -104,7 +104,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_create( extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deinit( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_deinit( JNIEnv *env, jobject thiz ) { @@ -126,7 +126,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deinit( extern "C" JNIEXPORT jstring JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStreamRoom( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_createStreamRoom( JNIEnv *env, jobject thiz, jstring context_id, @@ -184,7 +184,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStream extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_updateStreamRoom( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_updateStreamRoom( JNIEnv *env, jobject thiz, jstring stream_room_id, @@ -244,7 +244,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_updateStream extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreamRooms( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_listStreamRooms( JNIEnv *env, jobject thiz, jstring context_id, @@ -334,7 +334,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreamRo extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getStreamRoom( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_getStreamRoom( JNIEnv *env, jobject thiz, jstring stream_room_id @@ -361,7 +361,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getStreamRoo extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deleteStreamRoom( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_deleteStreamRoom( JNIEnv *env, jobject thiz, jstring stream_room_id @@ -379,7 +379,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deleteStream extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStream( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_createStream( JNIEnv *env, jobject thiz, jstring stream_room_id @@ -408,7 +408,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStream extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_publishStream( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_publishStream( JNIEnv *env, jobject thiz, jobject stream_handle @@ -439,7 +439,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_publishStrea extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_joinStreamRoom( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_joinStreamRoom( JNIEnv *env, jobject thiz, jstring stream_room_id, @@ -465,7 +465,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_joinStreamRo extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreams( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_listStreams( JNIEnv *env, jobject thiz, jstring stream_room_id @@ -502,7 +502,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreams( extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unpublishStream( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_unpublishStream( JNIEnv *env, jobject thiz, jobject stream_handle @@ -522,7 +522,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unpublishStr extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_leaveStreamRoom( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_leaveStreamRoom( JNIEnv *env, jobject thiz, jstring stream_room_id @@ -542,7 +542,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_leaveStreamR extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getTurnCredentials( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_getTurnCredentials( JNIEnv *env, jobject thiz ) { @@ -574,7 +574,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getTurnCrede extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeFor( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_subscribeFor( JNIEnv *env, jobject thiz, jobject subscription_queries @@ -620,7 +620,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeFor extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeFrom( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_unsubscribeFrom( JNIEnv *env, jobject thiz, jobject subscription_ids @@ -651,7 +651,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeF extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_keyManagement( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_keyManagement( JNIEnv *env, jobject thiz, jstring stream_room_id, @@ -676,7 +676,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_keyManagemen extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_trickle( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_trickle( JNIEnv *env, jobject thiz, jlong session_id, @@ -697,7 +697,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_trickle( extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeFromRemoteStreams( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_unsubscribeFromRemoteStreams( JNIEnv *env, jobject thiz, jstring stream_room_id, @@ -736,7 +736,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeF extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_modifyRemoteStreamsSubscriptions( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_modifyRemoteStreamsSubscriptions( JNIEnv *env, jobject thiz, jstring stream_room_id, @@ -800,7 +800,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_modifyRemote extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeToRemoteStreams( +Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_subscribeToRemoteStreams( JNIEnv *env, jobject thiz, jstring stream_room_id, From c8852eb6c57bdc496cabd643b85390f81d092271 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 11 Feb 2026 12:27:04 +0100 Subject: [PATCH 04/19] refactor: change paths to java classes in jni after refactor --- .../streams/modules/WebRTCInterfaceJNI.cpp | 2 +- .../parsers/model_native_initializers.cpp | 30 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/WebRTCInterfaceJNI.cpp b/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/WebRTCInterfaceJNI.cpp index 880be79e..1ed01800 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/WebRTCInterfaceJNI.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/WebRTCInterfaceJNI.cpp @@ -37,7 +37,7 @@ JNIEnv *WebRTCInterfaceJNI::AttachCurrentThreadIfNeeded() { WebRTCInterfaceJNI::WebRTCInterfaceJNI(JNIEnv *env, jobject jwebRTCInterface) { jclass jwebRTCInterfaceClass = env->FindClass( - "com/simplito/java/privmx_endpoint/modules/stream/WebRTCInterface"); + "com/simplito/java/privmx_endpoint/streams/WebRTCInterface"); javaVM = nullptr; if (!env->IsInstanceOf(jwebRTCInterface, jwebRTCInterfaceClass)) { env->ThrowNew( 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..e99995f8 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 @@ -17,20 +17,20 @@ namespace privmx { //Streams jobject keyType2Java(JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c) { - jclass keyTypeClass = ctx.findClass("com/simplito/java/privmx_endpoint/model/KeyType"); + jclass keyTypeClass = ctx.findClass("com/simplito/java/privmx_endpoint/streams/model/KeyType"); jfieldID caseFieldId = nullptr; switch (keyType_c) { case privmx::endpoint::stream::KeyType::LOCAL: caseFieldId = ctx->GetStaticFieldID( keyTypeClass, "LOCAL", - "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); + "Lcom/simplito/java/privmx_endpoint/streams/model/KeyType;"); break; default: caseFieldId = ctx->GetStaticFieldID( keyTypeClass, "REMOTE", - "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); + "Lcom/simplito/java/privmx_endpoint/streams/model/KeyType;"); break; } return ctx->GetStaticObjectField(keyTypeClass, caseFieldId); @@ -38,13 +38,13 @@ namespace privmx { jobject key2Java(JniContextUtils &ctx, privmx::endpoint::stream::Key key_c) { jclass keyCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/Key"); + "com/simplito/java/privmx_endpoint/streams/model/Key"); jmethodID initKeyMID = ctx->GetMethodID( keyCls, "", "(Ljava/lang/String;" "[B" - "Lcom/simplito/java/privmx_endpoint/model/KeyType;" + "Lcom/simplito/java/privmx_endpoint/streams/model/KeyType;" ")V" ); @@ -158,7 +158,7 @@ namespace privmx { turnCredentials2Java(JniContextUtils &ctx, privmx::endpoint::stream::TurnCredentials turnCredentials_c) { jclass turnCredentialsCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/TurnCredentials"); + "com/simplito/java/privmx_endpoint/streams/model/TurnCredentials"); jmethodID initTurnCredentialsMID = ctx->GetMethodID( turnCredentialsCls, "", @@ -183,7 +183,7 @@ namespace privmx { sdpWithTypeModel2Java(JniContextUtils &ctx, privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c) { jclass sdpWithTypeModelCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/stream/SdpWithTypeModel"); + "com/simplito/java/privmx_endpoint/streams/model/SdpWithTypeModel"); jmethodID initSdpWithTypeModelMID = ctx->GetMethodID( sdpWithTypeModelCls, "", @@ -206,7 +206,7 @@ namespace privmx { privmx::endpoint::stream::StreamRoom streamRoom_c ) { jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamRoom"); + "com/simplito/java/privmx_endpoint/streams/model/StreamRoom"); jmethodID initItemMID = ctx->GetMethodID( itemCls, "", @@ -332,7 +332,7 @@ namespace privmx { privmx::endpoint::stream::StreamHandle streamHandle_c ) { jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamHandle"); + "com/simplito/java/privmx_endpoint/streams/model/StreamHandle"); jmethodID initItemMID = ctx->GetMethodID( itemCls, @@ -354,7 +354,7 @@ namespace privmx { privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c ) { jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamTrackInfo"); + "com/simplito/java/privmx_endpoint/streams/model/StreamTrackInfo"); jmethodID initItemMID = ctx->GetMethodID( itemCls, @@ -432,7 +432,7 @@ namespace privmx { ); jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamInfo"); + "com/simplito/java/privmx_endpoint/streams/model/StreamInfo"); jmethodID initItemMID = ctx->GetMethodID( itemCls, @@ -488,14 +488,14 @@ namespace privmx { } jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c) { jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/PublishedStreamData"); + "com/simplito/java/privmx_endpoint/streams/model/PublishedStreamData"); jmethodID initItemMID = ctx->GetMethodID( itemCls, "", "(" "Ljava/lang/String;" // streamRoomId - "Lcom/simplito/java/privmx_endpoint/model/StreamInfo;" // stream + "Lcom/simplito/java/privmx_endpoint/streams/model/StreamInfo;" // stream "Ljava/lang/String;" //userId ")V" ); @@ -511,14 +511,14 @@ namespace privmx { jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c) { jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamPublishResult"); + "com/simplito/java/privmx_endpoint/streams/model/StreamPublishResult"); jmethodID initItemMID = ctx->GetMethodID( itemCls, "", "(" "Ljava/lang/Boolean;" // published - "Lcom/simplito/java/privmx_endpoint/model/PublishedStreamData;" // data + "Lcom/simplito/java/privmx_endpoint/streams/model/PublishedStreamData;" // data ")V" ); From 401cf8ffb2c6393ee4706866d1e53f3ef465b938 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 11 Feb 2026 12:27:55 +0100 Subject: [PATCH 05/19] chore: remove redundant functions in jni --- .../parsers/model_native_initializers.cpp | 99 ------------------- 1 file changed, 99 deletions(-) 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 e99995f8..8075de9a 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 @@ -60,81 +60,6 @@ namespace privmx { ); } -// jobject -// streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c) { -// jclass streamRoomCls = ctx.findClass( -// "com/simplito/java/privmx_endpoint/model/StreamRoom"); -// jmethodID initStreamRoomMID = ctx->GetMethodID( -// streamRoomCls, -// "", -// "(" -// "Ljava/lang/String;" //contextId -// "Ljava/lang/String;" //streamRoomId -// "Ljava/lang/Long;" //createDate -// "Ljava/lang/String;" //creator -// "Ljava/lang/Long;" //lastModificationDate -// "Ljava/lang/String;" //lastModifier -// "Ljava/util/List;" //users -// "Ljava/util/List;" //managers -// "Ljava/lang/Long;" //version -// "[B" //publicMeta -// "[B" //privateMeta -// "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy -// "Ljava/lang/Long;" //statusCode -// ")V" -// ); -// -// jclass arrayCls = ctx.findClass("java/util/ArrayList"); -// jmethodID initArrayMID = ctx->GetMethodID( -// arrayCls, -// "", -// "()V"); -// jmethodID addToArrayMID = ctx->GetMethodID( -// arrayCls, -// "add", -// "(Ljava/lang/Object;)Z" -// ); -// jstring contextId = ctx->NewStringUTF(streamRoom_c.contextId.c_str()); -// jstring streamRoomId = ctx->NewStringUTF(streamRoom_c.streamRoomId.c_str()); -// jstring creator = ctx->NewStringUTF(streamRoom_c.creator.c_str()); -// jstring lastModifier = ctx->NewStringUTF(streamRoom_c.lastModifier.c_str()); -// jobject users = ctx->NewObject(arrayCls, initArrayMID); -// jobject managers = ctx->NewObject(arrayCls, initArrayMID); -// jbyteArray publicMeta = ctx->NewByteArray(streamRoom_c.publicMeta.size()); -// jbyteArray privateMeta = ctx->NewByteArray(streamRoom_c.privateMeta.size()); -// ctx->SetByteArrayRegion(publicMeta, 0, streamRoom_c.publicMeta.size(), -// (jbyte *) streamRoom_c.publicMeta.data()); -// ctx->SetByteArrayRegion(privateMeta, 0, streamRoom_c.privateMeta.size(), -// (jbyte *) streamRoom_c.privateMeta.data()); -// for (auto &user: streamRoom_c.users) { -// ctx->CallBooleanMethod(users, -// addToArrayMID, -// ctx->NewStringUTF(user.c_str())); -// } -// for (auto &manager: streamRoom_c.managers) { -// ctx->CallBooleanMethod(managers, -// addToArrayMID, -// ctx->NewStringUTF(manager.c_str())); -// } -// return ctx->NewObject( -// streamRoomCls, -// initStreamRoomMID, -// contextId, -// streamRoomId, -// ctx.long2jLong(streamRoom_c.createDate), -// creator, -// ctx.long2jLong(streamRoom_c.lastModificationDate), -// lastModifier, -// users, -// managers, -// ctx.long2jLong(streamRoom_c.version), -// publicMeta, -// privateMeta, -// containerPolicy2Java(ctx, streamRoom_c.policy), -// ctx.long2jLong(streamRoom_c.statusCode) -// ); -// } - jobject stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c) { jclass streamCls = ctx.findClass( "com/simplito/java/privmx_endpoint/model/Stream"); @@ -258,30 +183,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, From b635b5887a41684f3166c2d50568b5b07fc6e0be Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 11 Feb 2026 12:30:43 +0100 Subject: [PATCH 06/19] chore: reformat file --- .../parsers/model_native_initializers.cpp | 58 +++++++++++++------ 1 file changed, 41 insertions(+), 17 deletions(-) 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 8075de9a..aafeddad 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 @@ -14,9 +14,11 @@ namespace privmx { namespace wrapper { namespace streams { - //Streams - jobject keyType2Java(JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c) { + jobject keyType2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::KeyType keyType_c + ) { jclass keyTypeClass = ctx.findClass("com/simplito/java/privmx_endpoint/streams/model/KeyType"); jfieldID caseFieldId = nullptr; switch (keyType_c) { @@ -36,7 +38,10 @@ namespace privmx { return ctx->GetStaticObjectField(keyTypeClass, caseFieldId); } - jobject key2Java(JniContextUtils &ctx, privmx::endpoint::stream::Key key_c) { + jobject key2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::Key key_c + ) { jclass keyCls = ctx.findClass( "com/simplito/java/privmx_endpoint/streams/model/Key"); jmethodID initKeyMID = ctx->GetMethodID( @@ -60,7 +65,10 @@ namespace privmx { ); } - jobject stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c) { + jobject stream2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::Stream stream_c + ) { jclass streamCls = ctx.findClass( "com/simplito/java/privmx_endpoint/model/Stream"); jmethodID initStreamMID = ctx->GetMethodID( @@ -79,9 +87,10 @@ namespace privmx { ); } - jobject - turnCredentials2Java(JniContextUtils &ctx, - privmx::endpoint::stream::TurnCredentials turnCredentials_c) { + jobject turnCredentials2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::TurnCredentials turnCredentials_c + ) { jclass turnCredentialsCls = ctx.findClass( "com/simplito/java/privmx_endpoint/streams/model/TurnCredentials"); jmethodID initTurnCredentialsMID = ctx->GetMethodID( @@ -104,9 +113,10 @@ namespace privmx { ); } - jobject - sdpWithTypeModel2Java(JniContextUtils &ctx, - privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c) { + jobject sdpWithTypeModel2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c + ) { jclass sdpWithTypeModelCls = ctx.findClass( "com/simplito/java/privmx_endpoint/streams/model/SdpWithTypeModel"); jmethodID initSdpWithTypeModelMID = ctx->GetMethodID( @@ -319,8 +329,10 @@ namespace privmx { ); } - jobject - streamInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamInfo streamInfo_c) { + jobject streamInfo2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamInfo streamInfo_c + ) { jclass arrayCls = ctx->FindClass("java/util/ArrayList"); jmethodID initArrayMID = ctx->GetMethodID( arrayCls, @@ -387,7 +399,11 @@ namespace privmx { ); } - jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c) { + + jobject publishedStreamData2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::PublishedStreamData publishedStreamData_c + ) { jclass itemCls = ctx->FindClass( "com/simplito/java/privmx_endpoint/streams/model/PublishedStreamData"); @@ -410,7 +426,10 @@ namespace privmx { ); } - jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c) { + jobject streamPublishResult2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamPublishResult streamPublishResult_c + ) { jclass itemCls = ctx->FindClass( "com/simplito/java/privmx_endpoint/streams/model/StreamPublishResult"); @@ -437,8 +456,10 @@ namespace privmx { } - jobject remoteStreamId2Java(JniContextUtils &ctx, - privmx::endpoint::stream::RemoteStreamId remoteStreamId_c) { + jobject remoteStreamId2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::RemoteStreamId remoteStreamId_c + ) { jclass itemCls = ctx->FindClass( "com/simplito/java/privmx_endpoint/model/RemoteStreamId"); @@ -457,7 +478,10 @@ namespace privmx { ); } - jobject frame2Java(JniContextUtils &ctx, privmx::endpoint::stream::Frame &frame_c) { + jobject frame2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::Frame &frame_c + ) { jclass itemCls = ctx->FindClass( "com/simplito/java/privmx_endpoint/model/Frame"); From 3ed7c4e3be2a1870420a4725177eb5866d44c572 Mon Sep 17 00:00:00 2001 From: Doominika Date: Tue, 17 Feb 2026 15:45:12 +0100 Subject: [PATCH 07/19] refactor: move streamApiLow to privmx-endpoint --- .../src/cpp/streams/modules/StreamApiLow.cpp | 44 +++++++++---------- .../streams/modules/WebRTCInterfaceJNI.cpp | 2 +- .../parsers/model_native_initializers.cpp | 31 +++++++------ .../StreamEventSelectorType.java | 2 +- .../events/eventTypes/StreamEventType.java | 5 ++- .../events/stream}/NewStreams.java | 5 +-- .../events/stream}/StreamEventData.java | 2 +- .../stream}/StreamPublishedEventData.java | 4 +- .../stream}/StreamRoomDeletedEventData.java | 2 +- .../stream}/StreamUnpublishedEventData.java | 2 +- .../stream}/StreamUpdatedEventData.java | 6 +-- .../events/stream}/StreamsUpdatedData.java | 2 +- .../events/stream}/UpdatedStreamData.java | 2 +- .../{streams/model => model/stream}/Key.java | 2 +- .../model => model/stream}/KeyType.java | 2 +- .../stream}/PublishedStreamData.java | 2 +- .../stream}/SdpWithTypeModel.java | 2 +- .../model/stream/Settings.java | 6 +++ .../model => model/stream}/StreamHandle.java | 2 +- .../model => model/stream}/StreamInfo.java | 2 +- .../stream}/StreamPublishResult.java | 2 +- .../model => model/stream}/StreamRoom.java | 2 +- .../stream}/StreamSubscription.java | 2 +- .../stream}/StreamTrackInfo.java | 2 +- .../stream}/StreamTrackModification.java | 2 +- .../stream}/StreamTrackModificationPair.java | 2 +- .../stream}/TurnCredentials.java | 2 +- .../stream}/StreamApiLow.java | 19 ++++---- .../stream}/WebRTCInterface.java | 4 +- .../streams/model/Settings.java | 6 --- .../StreamEventSelectorType.java | 9 ---- .../events/eventTypes/StreamEventType.java | 16 ------- 32 files changed, 84 insertions(+), 111 deletions(-) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model/events => model/events/stream}/NewStreams.java (64%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model/events => model/events/stream}/StreamEventData.java (84%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model/events => model/events/stream}/StreamPublishedEventData.java (78%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model/events => model/events/stream}/StreamRoomDeletedEventData.java (74%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model/events => model/events/stream}/StreamUnpublishedEventData.java (80%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model/events => model/events/stream}/StreamUpdatedEventData.java (73%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model/events => model/events/stream}/StreamsUpdatedData.java (80%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model/events => model/events/stream}/UpdatedStreamData.java (96%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model => model/stream}/Key.java (91%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model => model/stream}/KeyType.java (85%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model => model/stream}/PublishedStreamData.java (85%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model => model/stream}/SdpWithTypeModel.java (90%) create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/Settings.java rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model => model/stream}/StreamHandle.java (77%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model => model/stream}/StreamInfo.java (95%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model => model/stream}/StreamPublishResult.java (85%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model => model/stream}/StreamRoom.java (97%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model => model/stream}/StreamSubscription.java (85%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model => model/stream}/StreamTrackInfo.java (97%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model => model/stream}/StreamTrackModification.java (84%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model => model/stream}/StreamTrackModificationPair.java (88%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams/model => model/stream}/TurnCredentials.java (92%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams => modules/stream}/StreamApiLow.java (89%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/{streams => modules/stream}/WebRTCInterface.java (87%) delete mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Settings.java delete mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventSelectorTypes/StreamEventSelectorType.java delete mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventTypes/StreamEventType.java 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 0c13221f..8d7e7048 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp @@ -64,7 +64,7 @@ StreamApiLow *getStreamApi(JniContextUtils &ctx, jobject streamApiInstance) { extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_create( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_create( JNIEnv *env, jclass clazz, jobject connection, @@ -104,7 +104,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_create( extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_deinit( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deinit( JNIEnv *env, jobject thiz ) { @@ -126,7 +126,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_deinit( extern "C" JNIEXPORT jstring JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_createStreamRoom( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStreamRoom( JNIEnv *env, jobject thiz, jstring context_id, @@ -184,7 +184,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_createStreamRoom( extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_updateStreamRoom( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_updateStreamRoom( JNIEnv *env, jobject thiz, jstring stream_room_id, @@ -244,7 +244,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_updateStreamRoom( extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_listStreamRooms( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreamRooms( JNIEnv *env, jobject thiz, jstring context_id, @@ -334,7 +334,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_listStreamRooms( extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_getStreamRoom( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getStreamRoom( JNIEnv *env, jobject thiz, jstring stream_room_id @@ -361,7 +361,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_getStreamRoom( extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_deleteStreamRoom( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deleteStreamRoom( JNIEnv *env, jobject thiz, jstring stream_room_id @@ -379,7 +379,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_deleteStreamRoom( extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_createStream( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStream( JNIEnv *env, jobject thiz, jstring stream_room_id @@ -408,7 +408,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_createStream( extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_publishStream( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_publishStream( JNIEnv *env, jobject thiz, jobject stream_handle @@ -439,7 +439,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_publishStream( extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_joinStreamRoom( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_joinStreamRoom( JNIEnv *env, jobject thiz, jstring stream_room_id, @@ -465,7 +465,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_joinStreamRoom( extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_listStreams( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreams( JNIEnv *env, jobject thiz, jstring stream_room_id @@ -502,7 +502,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_listStreams( extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_unpublishStream( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unpublishStream( JNIEnv *env, jobject thiz, jobject stream_handle @@ -522,7 +522,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_unpublishStream( extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_leaveStreamRoom( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_leaveStreamRoom( JNIEnv *env, jobject thiz, jstring stream_room_id @@ -542,7 +542,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_leaveStreamRoom( extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_getTurnCredentials( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getTurnCredentials( JNIEnv *env, jobject thiz ) { @@ -574,7 +574,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_getTurnCredentials( extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_subscribeFor( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeFor( JNIEnv *env, jobject thiz, jobject subscription_queries @@ -620,7 +620,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_subscribeFor( extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_unsubscribeFrom( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeFrom( JNIEnv *env, jobject thiz, jobject subscription_ids @@ -651,7 +651,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_unsubscribeFrom( extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_keyManagement( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_keyManagement( JNIEnv *env, jobject thiz, jstring stream_room_id, @@ -676,7 +676,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_keyManagement( extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_trickle( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_trickle( JNIEnv *env, jobject thiz, jlong session_id, @@ -697,7 +697,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_trickle( extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_unsubscribeFromRemoteStreams( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeFromRemoteStreams( JNIEnv *env, jobject thiz, jstring stream_room_id, @@ -736,7 +736,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_unsubscribeFromRemo extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_modifyRemoteStreamsSubscriptions( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_modifyRemoteStreamsSubscriptions( JNIEnv *env, jobject thiz, jstring stream_room_id, @@ -800,7 +800,7 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_modifyRemoteStreams extern "C" JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_subscribeToRemoteStreams( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeToRemoteStreams( JNIEnv *env, jobject thiz, jstring stream_room_id, @@ -837,4 +837,4 @@ Java_com_simplito_java_privmx_1endpoint_streams_StreamApiLow_subscribeToRemoteSt parseSettings(ctx, options) ); }); -} \ No newline at end of file +} diff --git a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/WebRTCInterfaceJNI.cpp b/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/WebRTCInterfaceJNI.cpp index 1ed01800..880be79e 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/WebRTCInterfaceJNI.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/WebRTCInterfaceJNI.cpp @@ -37,7 +37,7 @@ JNIEnv *WebRTCInterfaceJNI::AttachCurrentThreadIfNeeded() { WebRTCInterfaceJNI::WebRTCInterfaceJNI(JNIEnv *env, jobject jwebRTCInterface) { jclass jwebRTCInterfaceClass = env->FindClass( - "com/simplito/java/privmx_endpoint/streams/WebRTCInterface"); + "com/simplito/java/privmx_endpoint/modules/stream/WebRTCInterface"); javaVM = nullptr; if (!env->IsInstanceOf(jwebRTCInterface, jwebRTCInterfaceClass)) { env->ThrowNew( 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 aafeddad..9f91efa4 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 @@ -19,20 +19,20 @@ namespace privmx { JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c ) { - jclass keyTypeClass = ctx.findClass("com/simplito/java/privmx_endpoint/streams/model/KeyType"); + jclass keyTypeClass = ctx.findClass("com/simplito/java/privmx_endpoint/model/stream/KeyType"); jfieldID caseFieldId = nullptr; switch (keyType_c) { case privmx::endpoint::stream::KeyType::LOCAL: caseFieldId = ctx->GetStaticFieldID( keyTypeClass, "LOCAL", - "Lcom/simplito/java/privmx_endpoint/streams/model/KeyType;"); + "Lcom/simplito/java/privmx_endpoint/model/stream/KeyType;"); break; default: caseFieldId = ctx->GetStaticFieldID( keyTypeClass, "REMOTE", - "Lcom/simplito/java/privmx_endpoint/streams/model/KeyType;"); + "Lcom/simplito/java/privmx_endpoint/model/stream/KeyType;"); break; } return ctx->GetStaticObjectField(keyTypeClass, caseFieldId); @@ -43,13 +43,13 @@ namespace privmx { privmx::endpoint::stream::Key key_c ) { jclass keyCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/streams/model/Key"); + "com/simplito/java/privmx_endpoint/model/stream/Key"); jmethodID initKeyMID = ctx->GetMethodID( keyCls, "", "(Ljava/lang/String;" "[B" - "Lcom/simplito/java/privmx_endpoint/streams/model/KeyType;" + "Lcom/simplito/java/privmx_endpoint/model/stream/KeyType;" ")V" ); @@ -92,7 +92,7 @@ namespace privmx { privmx::endpoint::stream::TurnCredentials turnCredentials_c ) { jclass turnCredentialsCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/streams/model/TurnCredentials"); + "com/simplito/java/privmx_endpoint/model/stream/TurnCredentials"); jmethodID initTurnCredentialsMID = ctx->GetMethodID( turnCredentialsCls, "", @@ -118,7 +118,7 @@ namespace privmx { privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c ) { jclass sdpWithTypeModelCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/streams/model/SdpWithTypeModel"); + "com/simplito/java/privmx_endpoint/model/stream/SdpWithTypeModel"); jmethodID initSdpWithTypeModelMID = ctx->GetMethodID( sdpWithTypeModelCls, "", @@ -141,7 +141,7 @@ namespace privmx { privmx::endpoint::stream::StreamRoom streamRoom_c ) { jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/streams/model/StreamRoom"); + "com/simplito/java/privmx_endpoint/model/stream/StreamRoom"); jmethodID initItemMID = ctx->GetMethodID( itemCls, "", @@ -243,7 +243,7 @@ namespace privmx { privmx::endpoint::stream::StreamHandle streamHandle_c ) { jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/streams/model/StreamHandle"); + "com/simplito/java/privmx_endpoint/model/stream/StreamHandle"); jmethodID initItemMID = ctx->GetMethodID( itemCls, @@ -265,7 +265,7 @@ namespace privmx { privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c ) { jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/streams/model/StreamTrackInfo"); + "com/simplito/java/privmx_endpoint/model/stream/StreamTrackInfo"); jmethodID initItemMID = ctx->GetMethodID( itemCls, @@ -345,7 +345,7 @@ namespace privmx { ); jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/streams/model/StreamInfo"); + "com/simplito/java/privmx_endpoint/model/stream/StreamInfo"); jmethodID initItemMID = ctx->GetMethodID( itemCls, @@ -405,14 +405,14 @@ namespace privmx { privmx::endpoint::stream::PublishedStreamData publishedStreamData_c ) { jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/streams/model/PublishedStreamData"); + "com/simplito/java/privmx_endpoint/model/stream/PublishedStreamData"); jmethodID initItemMID = ctx->GetMethodID( itemCls, "", "(" "Ljava/lang/String;" // streamRoomId - "Lcom/simplito/java/privmx_endpoint/streams/model/StreamInfo;" // stream + "Lcom/simplito/java/privmx_endpoint/model/stream/StreamInfo;" // stream "Ljava/lang/String;" //userId ")V" ); @@ -431,14 +431,14 @@ namespace privmx { privmx::endpoint::stream::StreamPublishResult streamPublishResult_c ) { jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/streams/model/StreamPublishResult"); + "com/simplito/java/privmx_endpoint/model/stream/StreamPublishResult"); jmethodID initItemMID = ctx->GetMethodID( itemCls, "", "(" "Ljava/lang/Boolean;" // published - "Lcom/simplito/java/privmx_endpoint/streams/model/PublishedStreamData;" // data + "Lcom/simplito/java/privmx_endpoint/model/stream/PublishedStreamData;" // data ")V" ); @@ -455,7 +455,6 @@ namespace privmx { ); } - jobject remoteStreamId2Java( JniContextUtils &ctx, privmx::endpoint::stream::RemoteStreamId remoteStreamId_c diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventSelectorTypes/StreamEventSelectorType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventSelectorTypes/StreamEventSelectorType.java index 8d487955..f2bc9b73 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventSelectorTypes/StreamEventSelectorType.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventSelectorTypes/StreamEventSelectorType.java @@ -1,6 +1,6 @@ package com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes; -public enum StreamEventSelectorType implements EventSelectorType{ +public enum StreamEventSelectorType implements EventSelectorType { CONTEXT_ID, STREAMROOM_ID, STREAM_ID diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventTypes/StreamEventType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventTypes/StreamEventType.java index 54f7f7ad..347aecf6 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventTypes/StreamEventType.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventTypes/StreamEventType.java @@ -1,11 +1,14 @@ package com.simplito.java.privmx_endpoint.model.events.eventTypes; -public enum StreamEventType implements EventType{ +public enum StreamEventType implements EventType { STREAMROOM_CREATE, STREAMROOM_UPDATE, STREAMROOM_DELETE, + EMPTY, STREAM_JOIN, STREAM_LEAVE, STREAM_PUBLISH, STREAM_UNPUBLISH } + + diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/NewStreams.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/NewStreams.java similarity index 64% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/NewStreams.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/NewStreams.java index 9288b87b..b9552e04 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/NewStreams.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/NewStreams.java @@ -1,14 +1,13 @@ -package com.simplito.java.privmx_endpoint.streams.model.events; +package com.simplito.java.privmx_endpoint.model.events.stream; -import com.simplito.java.privmx_endpoint.streams.model.StreamInfo; +import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; import java.util.List; public class NewStreams { public String room; public List streams; - public NewStreams(String room, List streams) { this.room = room; this.streams = streams; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamEventData.java similarity index 84% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamEventData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamEventData.java index 4b9b3dda..52f6ff5a 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamEventData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamEventData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.streams.model.events; +package com.simplito.java.privmx_endpoint.model.events.stream; import java.util.List; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamPublishedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamPublishedEventData.java similarity index 78% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamPublishedEventData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamPublishedEventData.java index 29305e69..2dda611e 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamPublishedEventData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamPublishedEventData.java @@ -1,7 +1,7 @@ -package com.simplito.java.privmx_endpoint.streams.model.events; +package com.simplito.java.privmx_endpoint.model.events.stream; -import com.simplito.java.privmx_endpoint.streams.model.StreamInfo; +import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; // todo: which to choose // same as StreamPublishedEventData diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamRoomDeletedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamRoomDeletedEventData.java similarity index 74% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamRoomDeletedEventData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamRoomDeletedEventData.java index 5946301f..4b5e3d72 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamRoomDeletedEventData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamRoomDeletedEventData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.streams.model.events; +package com.simplito.java.privmx_endpoint.model.events.stream; public class StreamRoomDeletedEventData { public String streamRoomId; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUnpublishedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamUnpublishedEventData.java similarity index 80% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUnpublishedEventData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamUnpublishedEventData.java index 04f06ac4..20e266e0 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUnpublishedEventData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamUnpublishedEventData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.streams.model.events; +package com.simplito.java.privmx_endpoint.model.events.stream; public class StreamUnpublishedEventData { public String streamRoomId; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUpdatedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamUpdatedEventData.java similarity index 73% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUpdatedEventData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamUpdatedEventData.java index bbf894a0..007fb31d 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamUpdatedEventData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamUpdatedEventData.java @@ -1,8 +1,8 @@ -package com.simplito.java.privmx_endpoint.streams.model.events; +package com.simplito.java.privmx_endpoint.model.events.stream; -import com.simplito.java.privmx_endpoint.streams.model.StreamInfo; -import com.simplito.java.privmx_endpoint.streams.model.StreamTrackModification; +import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; +import com.simplito.java.privmx_endpoint.model.stream.StreamTrackModification; import java.util.List; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamsUpdatedData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamsUpdatedData.java similarity index 80% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamsUpdatedData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamsUpdatedData.java index 4b691148..53aa400c 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/StreamsUpdatedData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamsUpdatedData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.streams.model.events; +package com.simplito.java.privmx_endpoint.model.events.stream; import java.util.List; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/UpdatedStreamData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/UpdatedStreamData.java similarity index 96% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/UpdatedStreamData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/UpdatedStreamData.java index 563b77e6..1c319421 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/UpdatedStreamData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/UpdatedStreamData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.streams.model.events; +package com.simplito.java.privmx_endpoint.model.events.stream; public class UpdatedStreamData { public String type; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Key.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/Key.java similarity index 91% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Key.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/Key.java index 7d2c078b..f016494e 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Key.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/Key.java @@ -9,7 +9,7 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.streams.model; +package com.simplito.java.privmx_endpoint.model.stream; public class Key { public String keyId; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/KeyType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/KeyType.java similarity index 85% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/KeyType.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/KeyType.java index 71a304ee..515e0537 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/KeyType.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/KeyType.java @@ -9,7 +9,7 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.streams.model; +package com.simplito.java.privmx_endpoint.model.stream; public enum KeyType { LOCAL, diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/PublishedStreamData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/PublishedStreamData.java similarity index 85% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/PublishedStreamData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/PublishedStreamData.java index 163115cd..4df54f01 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/PublishedStreamData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/PublishedStreamData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.streams.model; +package com.simplito.java.privmx_endpoint.model.stream; public class PublishedStreamData { public String streamRoomId; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/SdpWithTypeModel.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/SdpWithTypeModel.java similarity index 90% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/SdpWithTypeModel.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/SdpWithTypeModel.java index 55093619..6d4132b1 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/SdpWithTypeModel.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/SdpWithTypeModel.java @@ -9,7 +9,7 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.streams.model; +package com.simplito.java.privmx_endpoint.model.stream; public class SdpWithTypeModel { public String sdp; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/Settings.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/Settings.java new file mode 100644 index 00000000..225fdd24 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/Settings.java @@ -0,0 +1,6 @@ +package com.simplito.java.privmx_endpoint.model.stream; + +public class Settings { + public Settings() { + } +} \ No newline at end of file diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamHandle.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamHandle.java similarity index 77% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamHandle.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamHandle.java index 08bba873..8a4e7b51 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamHandle.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamHandle.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.streams.model; +package com.simplito.java.privmx_endpoint.model.stream; public class StreamHandle { private final Long value; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamInfo.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamInfo.java similarity index 95% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamInfo.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamInfo.java index 53abbdde..61afba04 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamInfo.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamInfo.java @@ -9,7 +9,7 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.streams.model; +package com.simplito.java.privmx_endpoint.model.stream; import java.util.List; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamPublishResult.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamPublishResult.java similarity index 85% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamPublishResult.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamPublishResult.java index f9941b3b..cf3022a9 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamPublishResult.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamPublishResult.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.streams.model; +package com.simplito.java.privmx_endpoint.model.stream; public class StreamPublishResult { public Boolean published; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamRoom.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamRoom.java similarity index 97% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamRoom.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamRoom.java index 6fd6f0f9..36546587 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamRoom.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamRoom.java @@ -9,7 +9,7 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.streams.model; +package com.simplito.java.privmx_endpoint.model.stream; import com.simplito.java.privmx_endpoint.model.ContainerPolicy; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamSubscription.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamSubscription.java similarity index 85% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamSubscription.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamSubscription.java index 2c4bd433..f9462643 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamSubscription.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamSubscription.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.streams.model; +package com.simplito.java.privmx_endpoint.model.stream; public class StreamSubscription { public long streamId; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackInfo.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackInfo.java similarity index 97% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackInfo.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackInfo.java index 46d3dd9c..98ebe871 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackInfo.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackInfo.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.streams.model; +package com.simplito.java.privmx_endpoint.model.stream; public class StreamTrackInfo { public String type; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModification.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackModification.java similarity index 84% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModification.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackModification.java index 99cfec34..2b368dce 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModification.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackModification.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.streams.model; +package com.simplito.java.privmx_endpoint.model.stream; import java.util.List; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModificationPair.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackModificationPair.java similarity index 88% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModificationPair.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackModificationPair.java index 61339826..5ff41eb7 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/StreamTrackModificationPair.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/StreamTrackModificationPair.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.streams.model; +package com.simplito.java.privmx_endpoint.model.stream; public class StreamTrackModificationPair { public StreamTrackInfo before; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/TurnCredentials.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/TurnCredentials.java similarity index 92% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/TurnCredentials.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/TurnCredentials.java index 08ab8f40..88990e89 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/TurnCredentials.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/TurnCredentials.java @@ -9,7 +9,7 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.streams.model; +package com.simplito.java.privmx_endpoint.model.stream; public class TurnCredentials { public String url; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/StreamApiLow.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java similarity index 89% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/StreamApiLow.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java index d4e398f6..1ed39458 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/StreamApiLow.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java @@ -9,23 +9,20 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.streams; +package com.simplito.java.privmx_endpoint.modules.stream; import com.simplito.java.privmx_endpoint.model.ContainerPolicy; import com.simplito.java.privmx_endpoint.model.PagingList; import com.simplito.java.privmx_endpoint.model.UserWithPubKey; -import com.simplito.java.privmx_endpoint.streams.model.events.eventSelectorTypes.StreamEventSelectorType; -import com.simplito.java.privmx_endpoint.streams.model.events.eventTypes.StreamEventType; import com.simplito.java.privmx_endpoint.modules.core.Connection; import com.simplito.java.privmx_endpoint.modules.event.EventApi; -import com.simplito.java.privmx_endpoint.streams.model.SdpWithTypeModel; -import com.simplito.java.privmx_endpoint.streams.model.Settings; -import com.simplito.java.privmx_endpoint.streams.model.StreamHandle; -import com.simplito.java.privmx_endpoint.streams.model.StreamInfo; -import com.simplito.java.privmx_endpoint.streams.model.StreamPublishResult; -import com.simplito.java.privmx_endpoint.streams.model.StreamRoom; -import com.simplito.java.privmx_endpoint.streams.model.StreamSubscription; -import com.simplito.java.privmx_endpoint.streams.model.TurnCredentials; +import com.simplito.java.privmx_endpoint.model.stream.Settings; +import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; +import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; +import com.simplito.java.privmx_endpoint.model.stream.StreamPublishResult; +import com.simplito.java.privmx_endpoint.model.stream.StreamRoom; +import com.simplito.java.privmx_endpoint.model.stream.StreamSubscription; +import com.simplito.java.privmx_endpoint.model.stream.TurnCredentials; import java.util.List; import java.util.Objects; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/WebRTCInterface.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/WebRTCInterface.java similarity index 87% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/WebRTCInterface.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/WebRTCInterface.java index 8dc867ec..a7bbb8c7 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/WebRTCInterface.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/WebRTCInterface.java @@ -9,9 +9,9 @@ // limitations under the License. // -package com.simplito.java.privmx_endpoint.streams; +package com.simplito.java.privmx_endpoint.modules.stream; -import com.simplito.java.privmx_endpoint.streams.model.Key; +import com.simplito.java.privmx_endpoint.model.stream.Key; import java.util.List; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Settings.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Settings.java deleted file mode 100644 index 12b6f6f1..00000000 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/Settings.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.simplito.java.privmx_endpoint.streams.model; - -public class Settings { - public Settings() { - } -} \ No newline at end of file diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventSelectorTypes/StreamEventSelectorType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventSelectorTypes/StreamEventSelectorType.java deleted file mode 100644 index ca4f44be..00000000 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventSelectorTypes/StreamEventSelectorType.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.simplito.java.privmx_endpoint.streams.model.events.eventSelectorTypes; - -import com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes.EventSelectorType; - -public enum StreamEventSelectorType implements EventSelectorType { - CONTEXT_ID, - STREAMROOM_ID, - STREAM_ID -} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventTypes/StreamEventType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventTypes/StreamEventType.java deleted file mode 100644 index 92350080..00000000 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/streams/model/events/eventTypes/StreamEventType.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.simplito.java.privmx_endpoint.streams.model.events.eventTypes; - -import com.simplito.java.privmx_endpoint.model.events.eventTypes.EventType; - -public enum StreamEventType implements EventType { - STREAMROOM_CREATE, - STREAMROOM_UPDATE, - STREAMROOM_DELETE, - EMPTY, - STREAM_JOIN, - STREAM_LEAVE, - STREAM_PUBLISH, - STREAM_UNPUBLISH -} - - From 482a8638cabd1ae9883b004d98a1284b472edcb8 Mon Sep 17 00:00:00 2001 From: Doominika Date: Tue, 17 Feb 2026 18:00:47 +0100 Subject: [PATCH 08/19] refactor: remove stream classes from privmx-endpoint-streams and use those from privmx-endpoint --- .../java/privmx_endpoint/model/Key.java | 28 ---- .../java/privmx_endpoint/model/KeyType.java | 17 -- .../model/PublishedStreamData.java | 13 -- .../model/SdpWithTypeModel.java | 25 --- .../java/privmx_endpoint/model/Settings.java | 6 - .../privmx_endpoint/model/StreamHandle.java | 13 -- .../privmx_endpoint/model/StreamInfo.java | 45 ----- .../model/StreamPublishResult.java | 14 -- .../privmx_endpoint/model/StreamRoom.java | 63 ------- .../model/StreamSubscription.java | 15 -- .../model/StreamTrackInfo.java | 99 ----------- .../model/StreamTrackModification.java | 13 -- .../model/StreamTrackModificationPair.java | 19 --- .../model/TurnCredentials.java | 31 ---- .../modules/stream/PeerConnectionManager.java | 4 +- .../modules/stream/StreamApi.java | 13 +- .../modules/stream/StreamApiLow.java | 21 ++- .../java/privmx_endpoint/model/Key.java | 28 ---- .../java/privmx_endpoint/model/KeyType.java | 17 -- .../privmx_endpoint/model/MediaDevice.java | 13 -- .../privmx_endpoint/model/PcObserver.java | 158 ------------------ .../model/PeerConnection2.java | 56 ------- .../model/PeerConnectionManager.java | 57 ------- .../model/PublishedStreamData.java | 13 -- .../model/SdpWithTypeModel.java | 25 --- .../java/privmx_endpoint/model/Settings.java | 6 - .../privmx_endpoint/model/StreamHandle.java | 13 -- .../privmx_endpoint/model/StreamInfo.java | 47 ------ .../model/StreamPublishResult.java | 14 -- .../privmx_endpoint/model/StreamRoom.java | 52 ------ .../model/StreamSubscription.java | 15 -- .../model/TurnCredentials.java | 31 ---- 32 files changed, 17 insertions(+), 967 deletions(-) delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackInfo.java delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModification.java delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModificationPair.java delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/MediaDevice.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PcObserver.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnection2.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnectionManager.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java deleted file mode 100644 index bb800451..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java +++ /dev/null @@ -1,28 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -public class Key { - public String keyId; - public byte[] key; - public KeyType type; - - public Key( - String keyId, - byte[] key, - KeyType type - ) { - this.keyId = keyId; - this.key = key; - this.type = type; - } -} diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java deleted file mode 100644 index 76329292..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java +++ /dev/null @@ -1,17 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -public enum KeyType { - LOCAL, - REMOTE -} diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java deleted file mode 100644 index 18bd9d82..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class PublishedStreamData { - public String streamRoomId; - public StreamInfo stream; - public String userId; - - public PublishedStreamData(String streamRoomId, StreamInfo stream, String userId) { - this.streamRoomId = streamRoomId; - this.stream = stream; - this.userId = userId; - } -} diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java deleted file mode 100644 index 69dd1cdd..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java +++ /dev/null @@ -1,25 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2025 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -public class SdpWithTypeModel { - public String sdp; - public String type; - - public SdpWithTypeModel( - String sdp, - String type - ) { - this.sdp = sdp; - this.type = type; - } -} diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java deleted file mode 100644 index 94808012..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class Settings { - public Settings() { - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java deleted file mode 100644 index dae4e4a8..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class StreamHandle { - private final Long value; - - public StreamHandle(Long value) { - this.value = value; - } - - public Long getValue() { - return value; - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java deleted file mode 100644 index 4e9e3f1e..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java +++ /dev/null @@ -1,45 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -import java.util.List; - -public class StreamInfo { - public Long id; - public String userId; - public List tracks; - public String metadata; // optional - public Boolean dummy; // optional - public Boolean talking; // optional - - - public StreamInfo(Long id, String userId, List tracks) { - this(id, userId, tracks, null, null, null); - } - - public StreamInfo(Long id, String userId, List tracks, String metadata) { - this(id, userId, tracks, metadata, null, null); - } - - public StreamInfo(Long id, String userId, List tracks, String metadata, Boolean dummy) { - this(id, userId, tracks, metadata, dummy, null); - } - - public StreamInfo(Long id, String userId, List tracks, String metadata, Boolean dummy, Boolean talking) { - this.id = id; - this.userId = userId; - this.tracks = tracks; - this.metadata = metadata; - this.dummy = dummy; - this.talking = talking; - } -} 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 deleted file mode 100644 index 6fdc0e14..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class StreamPublishResult { -public Boolean published; -public PublishedStreamData data; - - public StreamPublishResult(Boolean published) { - this(published, null); - } - public StreamPublishResult(Boolean published, PublishedStreamData data) { - this.published = published; - this.data = data; - } -} diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java deleted file mode 100644 index 722c0ac8..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java +++ /dev/null @@ -1,63 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -import java.util.List; - -public class StreamRoom { - public String contextId; - public String streamRoomId; - public Long createDate; - public String creator; - public Long lastModificationDate; - public String lastModifier; - public List users; - public List managers; - public Long version; - public byte[] publicMeta; - public byte[] privateMeta; - public ContainerPolicy policy; - public Long statusCode; - public Long schemaVersion; - - public StreamRoom( - String contextId, - String streamRoomId, - Long createDate, - String creator, - Long lastModificationDate, - String lastModifier, - List users, - List managers, - Long version, - byte[] publicMeta, - byte[] privateMeta, - ContainerPolicy policy, - Long statusCode, - Long schemaVersion - ) { - this.contextId = contextId; - this.streamRoomId = streamRoomId; - this.createDate = createDate; - this.creator = creator; - this.lastModificationDate = lastModificationDate; - this.lastModifier = lastModifier; - this.users = users; - this.managers = managers; - this.version = version; - this.publicMeta = publicMeta; - this.privateMeta = privateMeta; - this.policy = policy; - this.statusCode = statusCode; - this.schemaVersion = schemaVersion; - } -} diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java deleted file mode 100644 index aaa28fb6..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class StreamSubscription { - public long streamId; - public String streamTrackId; - - public StreamSubscription(long streamId, String streamTrackId) { - this.streamId = streamId; - this.streamTrackId = streamTrackId; - } - - public StreamSubscription(long streamId) { - this.streamId = streamId; - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackInfo.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackInfo.java deleted file mode 100644 index a6f470a0..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackInfo.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class StreamTrackInfo { - public String type; - public Long mindex; - public String mid; - - public Boolean disabled; // optional - public String codec; // optional - public String description; // optional - public Boolean moderated; // optional - public Boolean simulcast; // optional - public Boolean talking; // optional - - public StreamTrackInfo( - String type, - Long mindex, - String mid - ) { - this(type, mindex, mid, null, null, null, null, null, null); - } - - public StreamTrackInfo( - String type, - Long mindex, - String mid, - Boolean disabled - ) { - this(type, mindex, mid, disabled, null, null, null, null, null); - } - - public StreamTrackInfo( - String type, - Long mindex, - String mid, - Boolean disabled, - String codec - ) { - this(type, mindex, mid, disabled, codec, null, null, null, null); - } - - public StreamTrackInfo( - String type, - Long mindex, - String mid, - Boolean disabled, - String codec, - String description - ) { - this(type, mindex, mid, disabled, codec, description, null, null, null); - } - - public StreamTrackInfo( - String type, - Long mindex, - String mid, - Boolean disabled, - String codec, - String description, - Boolean moderated - ) { - this(type, mindex, mid, disabled, codec, description, moderated, null, null); - } - - public StreamTrackInfo( - String type, - Long mindex, - String mid, - Boolean disabled, - String codec, - String description, - Boolean moderated, - Boolean simulcast - ) { - this(type, mindex, mid, disabled, codec, description, moderated, simulcast, null); - } - - public StreamTrackInfo( - String type, - Long mindex, - String mid, - Boolean disabled, - String codec, - String description, - Boolean moderated, - Boolean simulcast, - Boolean talking - ) { - this.type = type; - this.mindex = mindex; - this.mid = mid; - this.disabled = disabled; - this.codec = codec; - this.description = description; - this.moderated = moderated; - this.simulcast = simulcast; - this.talking = talking; - } -} 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 deleted file mode 100644 index 39f13b73..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModification.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -import java.util.List; - -public class StreamTrackModification { - public long streamId; - public 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/StreamTrackModificationPair.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModificationPair.java deleted file mode 100644 index bdb0e3dd..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/StreamTrackModificationPair.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class StreamTrackModificationPair { - public StreamTrackInfo before; - public StreamTrackInfo after; - - public StreamTrackModificationPair(StreamTrackInfo before, StreamTrackInfo after) { - this.before = before; - this.after = after; - } - - public StreamTrackModificationPair(StreamTrackInfo before) { - this(before, null); - } - - public StreamTrackModificationPair() { - this(null, null); - } -} diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java deleted file mode 100644 index b9e5840c..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java +++ /dev/null @@ -1,31 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2025 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -public class TurnCredentials { - public String url; - public String username; - public String password; - public Long expirationTime; - - public TurnCredentials( - String url, - String username, - String password, - Long expirationTime - ) { - this.url = url; - this.username = username; - this.password = password; - this.expirationTime = expirationTime; - } -} diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java index 39e4b67f..0750641b 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java @@ -3,10 +3,8 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.simplito.java.privmx_endpoint.model.ConnectionType; -import com.simplito.java.privmx_endpoint.model.StreamHandle; +import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; -import org.webrtc.PeerConnection; import org.webrtc.PeerConnectionFactory; import java.util.HashMap; diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java index c859e703..f1415aff 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java @@ -14,16 +14,15 @@ import com.simplito.java.privmx_endpoint.model.DeviceType; import com.simplito.java.privmx_endpoint.model.MediaDevice; import com.simplito.java.privmx_endpoint.model.PagingList; -import com.simplito.java.privmx_endpoint.model.Settings; -import com.simplito.java.privmx_endpoint.model.StreamHandle; -import com.simplito.java.privmx_endpoint.model.StreamInfo; -import com.simplito.java.privmx_endpoint.model.StreamPublishResult; -import com.simplito.java.privmx_endpoint.model.StreamRoom; -import com.simplito.java.privmx_endpoint.model.StreamSettings; -import com.simplito.java.privmx_endpoint.model.StreamSubscription; import com.simplito.java.privmx_endpoint.model.UserWithPubKey; import com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes.StreamEventSelectorType; import com.simplito.java.privmx_endpoint.model.events.eventTypes.StreamEventType; +import com.simplito.java.privmx_endpoint.model.stream.Settings; +import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; +import com.simplito.java.privmx_endpoint.model.stream.StreamPublishResult; +import com.simplito.java.privmx_endpoint.model.stream.StreamRoom; +import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; +import com.simplito.java.privmx_endpoint.model.stream.StreamSubscription; import org.webrtc.AudioSource; import org.webrtc.AudioTrack; 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 4f736be5..b21a3892 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 @@ -13,18 +13,17 @@ import com.simplito.java.privmx_endpoint.model.ContainerPolicy; import com.simplito.java.privmx_endpoint.model.PagingList; -import com.simplito.java.privmx_endpoint.model.SdpWithTypeModel; -import com.simplito.java.privmx_endpoint.model.Settings; -import com.simplito.java.privmx_endpoint.model.StreamHandle; -import com.simplito.java.privmx_endpoint.model.StreamInfo; -import com.simplito.java.privmx_endpoint.model.StreamPublishResult; -import com.simplito.java.privmx_endpoint.model.StreamRoom; -import com.simplito.java.privmx_endpoint.model.StreamSettings; -import com.simplito.java.privmx_endpoint.model.StreamSubscription; -import com.simplito.java.privmx_endpoint.model.TurnCredentials; import com.simplito.java.privmx_endpoint.model.UserWithPubKey; import com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes.StreamEventSelectorType; import com.simplito.java.privmx_endpoint.model.events.eventTypes.StreamEventType; +import com.simplito.java.privmx_endpoint.model.stream.SdpWithTypeModel; +import com.simplito.java.privmx_endpoint.model.stream.Settings; +import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; +import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; +import com.simplito.java.privmx_endpoint.model.stream.StreamPublishResult; +import com.simplito.java.privmx_endpoint.model.stream.StreamRoom; +import com.simplito.java.privmx_endpoint.model.stream.StreamSubscription; +import com.simplito.java.privmx_endpoint.model.stream.TurnCredentials; import com.simplito.java.privmx_endpoint.modules.core.Connection; import com.simplito.java.privmx_endpoint.modules.event.EventApi; @@ -188,8 +187,8 @@ public native StreamHandle createStream( public native StreamPublishResult publishStream(StreamHandle streamHandle); - // todo - public native StreamPublishResult updateStream(StreamHandle streamHandle); + // todo - add jni +// public native StreamPublishResult updateStream(StreamHandle streamHandle); public native void unpublishStream(StreamHandle streamHandle); diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java deleted file mode 100644 index bb800451..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Key.java +++ /dev/null @@ -1,28 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -public class Key { - public String keyId; - public byte[] key; - public KeyType type; - - public Key( - String keyId, - byte[] key, - KeyType type - ) { - this.keyId = keyId; - this.key = key; - this.type = type; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java deleted file mode 100644 index 76329292..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/KeyType.java +++ /dev/null @@ -1,17 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -public enum KeyType { - LOCAL, - REMOTE -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/MediaDevice.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/MediaDevice.java deleted file mode 100644 index 958b7f93..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/MediaDevice.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class MediaDevice { - public String name; - public String id; - public DeviceType type; - - public MediaDevice(String name, String id, DeviceType type) { - this.name = name; - this.id = id; - this.type = type; - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PcObserver.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PcObserver.java deleted file mode 100644 index 9da315cc..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PcObserver.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -import org.webrtc.DataChannel; -import org.webrtc.IceCandidate; -import org.webrtc.MediaStream; -import org.webrtc.MediaStreamTrack; -import org.webrtc.PeerConnection; -import org.webrtc.PeerConnectionFactory; -import org.webrtc.PmxFrameCryptor; -import org.webrtc.PmxFrameCryptorFactory; -import org.webrtc.PmxKeyStore; -import org.webrtc.RtpReceiver; -import org.webrtc.RtpTransceiver; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.function.BiConsumer; -import java.util.function.Consumer; - -public class PcObserver implements PeerConnection.Observer { - Map frameCryptorMap = new HashMap<>(); - PmxKeyStore keyStore; - private PeerConnectionFactory peerConnectionFactory; - private String streamRoomId; - private PmxFrameCryptor.PmxFrameCryptorOptions options; - - private BiConsumer, RtpReceiver> onAddTrack; - private Consumer onVideoTrack; - private OnFrameCallback onFrameCallback = null; - private Consumer onRemoveVideoTrack = null; - - private Consumer onSignalingState; - private Consumer onPeerConnectionState; - private Consumer onIceGatheringState; - private Consumer onIceConnectionState; - private Consumer onIceCandidate; - private Consumer onAddStream; - private Consumer onRemoveStream; - private Consumer onDataChannel; - private Runnable onRenegotiationNeeded; - private Consumer onTrack; - private Consumer onRemoveTrack; - - - public PcObserver(PeerConnectionFactory peerConnectionFactory, String streamRoomId, PmxKeyStore store, PmxFrameCryptor.PmxFrameCryptorOptions options) { - this.peerConnectionFactory = peerConnectionFactory; - this.streamRoomId = streamRoomId; - this.keyStore = store; - this.options = options; - } - - public void setOnAddTrack(BiConsumer, RtpReceiver> onAddTrack) { - this.onAddTrack = onAddTrack; - } - - public void setOnVideoTrack(Consumer onVideoTrack) { - this.onVideoTrack = onVideoTrack; - } - - @Override - public void onSignalingChange(PeerConnection.SignalingState signalingState) { - - } - - @Override - public void onIceConnectionChange(PeerConnection.IceConnectionState iceConnectionState) { - - } - - @Override - public void onIceConnectionReceivingChange(boolean b) { - - } - - @Override - public void onIceGatheringChange(PeerConnection.IceGatheringState iceGatheringState) { - - } - - @Override - public void onIceCandidate(IceCandidate iceCandidate) { - - } - - @Override - public void onIceCandidatesRemoved(IceCandidate[] iceCandidates) { - - } - - @Override - public void onAddStream(MediaStream mediaStream) { - - } - - @Override - public void onRemoveStream(MediaStream mediaStream) { - - } - - @Override - public void onDataChannel(DataChannel dataChannel) { - - } - - @Override - public void onRenegotiationNeeded() { - - } - - @Override - public void onAddTrack(RtpReceiver receiver, MediaStream[] mediaStreams) { - if (peerConnectionFactory != null && receiver.track() != null && receiver.track().id().equals(null)) { - frameCryptorMap.put( - receiver.track().id(), - PmxFrameCryptorFactory.createPmxFrameCryptorForRtpReceiver( - peerConnectionFactory, - receiver, - keyStore - ) - ); - } - if (onAddTrack != null) { - onAddTrack.accept(Arrays.asList(mediaStreams), receiver); - - if (Objects.equals(receiver.track().kind(), MediaStreamTrack.VIDEO_TRACK_KIND)) { - onVideoTrack.accept(receiver.track().id()); - } - } - } - - @Override - public void onTrack(RtpTransceiver transceiver) { - // todo -check -// RtpReceiver rtpReceiver = transceiver.getReceiver(); -// MediaStreamTrack track = rtpReceiver.track(); -// if (trackObserver != null) trackObserver.onTrack(track); -// // TODO: check if no duplication -// PmxFrameCryptorFactory.createPmxFrameCryptorForRtpReceiver(peerConnectionFactory, rtpReceiver, store); - - onTrack.accept(transceiver); - } - - public void setFrameCryptorOptions(PmxFrameCryptor.PmxFrameCryptorOptions options) { - this.options = options; - frameCryptorMap.forEach((k, v) -> v.setOptions(options)); - } - - public void setOnFrame(OnFrameCallback onFrame) { - this.onFrameCallback = onFrame; - } - - public void setOnRemoveVideoTrack(Consumer onRemoveVideoTrack) { - this.onRemoveVideoTrack = onRemoveVideoTrack; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnection2.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnection2.java deleted file mode 100644 index 1d6df9dd..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnection2.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -import com.simplito.java.privmx_endpoint_streams.model.AudioTrackInfo; - -import org.webrtc.PeerConnection; -import org.webrtc.PmxFrameCryptor; -import org.webrtc.PmxKeyStore; - -import java.util.HashMap; -import java.util.Map; - -public class PeerConnection2 { - public PeerConnection pc; - public PcObserver observer; - public PmxKeyStore keys; - public Map audioTracks = new HashMap<>(); - public Map videoTracks = new HashMap<>(); - - public PeerConnection2(PeerConnection pc, PcObserver observer, PmxKeyStore keys) { - this.pc = pc; - this.observer = observer; - this.keys = keys; - } - - public void addVideoTrack(String id, VideoTrackInfo track) { - videoTracks.put(id, track); - } - - public void addAudioTrack(String id, AudioTrackInfo track) { - audioTracks.put(id, track); - } - - public void removeAudioTrack(String id) { - AudioTrackInfo audioTrack = audioTracks.get(id); - assert audioTrack != null; - pc.removeTrack(audioTrack.sender); - audioTracks.remove(id); - } - - public void removeVideoTrack(String id) { - VideoTrackInfo videoTrack = videoTracks.get(id); - assert videoTrack != null; - pc.removeTrack(videoTrack.sender); - videoTracks.remove(id); - } - - public void setFrameCryptorOptions(PmxFrameCryptor.PmxFrameCryptorOptions options) { - observer.setFrameCryptorOptions(options); - } - - - // std::map audioTracks; -// std::map videoTracks; -// std::shared_mutex trackMutex; -// std::shared_ptr keys; -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnectionManager.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnectionManager.java deleted file mode 100644 index f71c35a6..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PeerConnectionManager.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -import org.webrtc.PeerConnection; - -import java.util.HashMap; -import java.util.Map; -import java.util.function.Function; - -public class PeerConnectionManager { - - private Map> connections = new HashMap<>(); - - public PeerConnectionManager( - Function peerConnectionCreator, - Function onTrickle - ) { - - } - - public void initialize (String streamRoomId, ConnectionType connectionType, Long sessionId){ - if(connections.containsKey(streamRoomId)) { - Map roomConnections = connections.get(streamRoomId); - - assert roomConnections != null; - if(roomConnections.getOrDefault(connectionType, null) == null){ - // throw exception - } - } - -// PeerConnection pc = createPeerConnection(streamRoomId); -// setOnIceCandidate - - } - - public void initialize (String streamRoomId, ConnectionType connectionType){ - initialize(streamRoomId, connectionType, -1L); - } - - void updateSessionForConnection(String streamRoomId, ConnectionType connectionType, long sessionId){ - - } - -// boolean hasConnection(String streamRoomId, ConnectionType connectionType){ -// -// } -// - JanusConnection getConnectionWithSession(String streamRoomId, ConnectionType connectionType){ - - return new JanusConnection(null, 0, false); // todo - } - - private PeerConnection createPeerConnection(String streamRoomId){ - return null; // todo - } -} - - diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java deleted file mode 100644 index 18bd9d82..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/PublishedStreamData.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class PublishedStreamData { - public String streamRoomId; - public StreamInfo stream; - public String userId; - - public PublishedStreamData(String streamRoomId, StreamInfo stream, String userId) { - this.streamRoomId = streamRoomId; - this.stream = stream; - this.userId = userId; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java deleted file mode 100644 index 69dd1cdd..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/SdpWithTypeModel.java +++ /dev/null @@ -1,25 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2025 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -public class SdpWithTypeModel { - public String sdp; - public String type; - - public SdpWithTypeModel( - String sdp, - String type - ) { - this.sdp = sdp; - this.type = type; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java deleted file mode 100644 index 94808012..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/Settings.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class Settings { - public Settings() { - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java deleted file mode 100644 index dae4e4a8..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamHandle.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class StreamHandle { - private final Long value; - - public StreamHandle(Long value) { - this.value = value; - } - - public Long getValue() { - return value; - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java deleted file mode 100644 index 1b55388a..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamInfo.java +++ /dev/null @@ -1,47 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -import java.util.List; - -public class StreamInfo { - public Long id; - public String userId; - public List tracks; - public Long streamId; - public String metadata; // optional - public Boolean dummy; // optional - public Boolean talking; // optional - - - public StreamInfo(Long id, String userId, List tracks, Long streamId) { - this(id, userId, tracks, streamId, null, null, null); - } - - public StreamInfo(Long id, String userId, List tracks, Long streamId, String metadata) { - this(id, userId, tracks, streamId, metadata, null, null); - } - - public StreamInfo(Long id, String userId, List tracks, Long streamId, String metadata, Boolean dummy) { - this(id, userId, tracks, streamId, metadata, dummy, null); - } - - public StreamInfo(Long id, String userId, List tracks, Long streamId, String metadata, Boolean dummy, Boolean talking) { - this.id = id; - this.userId = userId; - this.tracks = tracks; - this.streamId = streamId; - this.metadata = metadata; - this.dummy = dummy; - this.talking = talking; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java deleted file mode 100644 index 52df82c8..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamPublishResult.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class StreamPublishResult { -public Boolean published; -public PublishedStreamData data; - - public StreamPublishResult(boolean published) { - this(published, null); - } - public StreamPublishResult(boolean published, PublishedStreamData data) { - this.published = published; - this.data = data; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java deleted file mode 100644 index 3ee66ce7..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamRoom.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -import java.util.List; - -public class StreamRoom { - public String contextId; - public String streamRoomId; - public Long createDate; - public String creator; - public Long lastModificationDate; - public String lastModifier; - public List users; - public List managers; - public Long version; - public byte[] publicMeta; - public byte[] privateMeta; - public ContainerPolicy policy; - public Long statusCode; - public Long schemaVersion; - - public StreamRoom( - String contextId, - String streamRoomId, - Long createDate, - String creator, - Long lastModificationDate, - String lastModifier, - List users, - List managers, - Long version, - byte[] publicMeta, - byte[] privateMeta, - ContainerPolicy policy, - Long statusCode, - Long schemaVersion - ) { - this.contextId = contextId; - this.streamRoomId = streamRoomId; - this.createDate = createDate; - this.creator = creator; - this.lastModificationDate = lastModificationDate; - this.lastModifier = lastModifier; - this.users = users; - this.managers = managers; - this.version = version; - this.publicMeta = publicMeta; - this.privateMeta = privateMeta; - this.policy = policy; - this.statusCode = statusCode; - this.schemaVersion = schemaVersion; - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java deleted file mode 100644 index aaa28fb6..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSubscription.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -public class StreamSubscription { - public long streamId; - public String streamTrackId; - - public StreamSubscription(long streamId, String streamTrackId) { - this.streamId = streamId; - this.streamTrackId = streamTrackId; - } - - public StreamSubscription(long streamId) { - this.streamId = streamId; - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java deleted file mode 100644 index b9e5840c..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/TurnCredentials.java +++ /dev/null @@ -1,31 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2025 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.model; - -public class TurnCredentials { - public String url; - public String username; - public String password; - public Long expirationTime; - - public TurnCredentials( - String url, - String username, - String password, - Long expirationTime - ) { - this.url = url; - this.username = username; - this.password = password; - this.expirationTime = expirationTime; - } -} From c5070564110de380a00dea5515e7391c8c87d873 Mon Sep 17 00:00:00 2001 From: Doominika Date: Tue, 17 Feb 2026 18:09:14 +0100 Subject: [PATCH 09/19] feat: remove redundant classes and import right ones --- .../privmx_endpoint/model/AudioTrackInfo.java | 22 ------------------- .../model/JanusConnection.java | 15 ------------- .../privmx_endpoint/model/MediaDevice.java | 13 +++++++++++ .../privmx_endpoint/model/StreamSettings.java | 2 ++ .../privmx_endpoint/model/VideoTrackInfo.java | 20 ----------------- .../modules/stream/StreamApi.java | 6 ++--- 6 files changed, 18 insertions(+), 60 deletions(-) delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/AudioTrackInfo.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/JanusConnection.java create mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/MediaDevice.java delete mode 100644 privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/VideoTrackInfo.java diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/AudioTrackInfo.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/AudioTrackInfo.java deleted file mode 100644 index 344c75e3..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/AudioTrackInfo.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - - -import org.webrtc.AudioTrack; -import org.webrtc.PmxFrameCryptor; -import org.webrtc.RtpSender; - -public class AudioTrackInfo { - public org.webrtc.AudioTrack track; - public org.webrtc.RtpSender sender; - public PmxFrameCryptor frameCryptor; - - public AudioTrackInfo( - AudioTrack track, - RtpSender sender, - PmxFrameCryptor frameCryptor - ) { - this.track = track; - this.sender = sender; - this.frameCryptor = frameCryptor; - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/JanusConnection.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/JanusConnection.java deleted file mode 100644 index 215d61fb..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/JanusConnection.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -import com.simplito.java.privmx_endpoint_streams.model.PeerConnection2; - -public class JanusConnection { - public final PeerConnection2 peerConnection; - public final long sessionId; - public final boolean hasSubscriptions; - - public JanusConnection(PeerConnection2 peerConnection, long sessionId, boolean hasSubscriptions) { - this.peerConnection = peerConnection; - this.sessionId = sessionId; - this.hasSubscriptions = hasSubscriptions; - } -} \ No newline at end of file diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/MediaDevice.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/MediaDevice.java new file mode 100644 index 00000000..958b7f93 --- /dev/null +++ b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/MediaDevice.java @@ -0,0 +1,13 @@ +package com.simplito.java.privmx_endpoint.model; + +public class MediaDevice { + public String name; + public String id; + public DeviceType type; + + public MediaDevice(String name, String id, DeviceType type) { + this.name = name; + this.id = id; + this.type = type; + } +} \ No newline at end of file diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSettings.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSettings.java index 139acb6a..1ef30373 100644 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSettings.java +++ b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/StreamSettings.java @@ -1,5 +1,7 @@ package com.simplito.java.privmx_endpoint.model; +import com.simplito.java.privmx_endpoint.model.stream.Settings; + import java.util.function.Consumer; public class StreamSettings { diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/VideoTrackInfo.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/VideoTrackInfo.java deleted file mode 100644 index cc89f60b..00000000 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/model/VideoTrackInfo.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.simplito.java.privmx_endpoint.model; - -import org.webrtc.RtpSender; -import org.webrtc.VideoTrack; - -public class VideoTrackInfo { - public VideoTrack track; - public RtpSender sender; - public PmxFrameCryptor frameCryptor; - - public VideoTrackInfo( - VideoTrack track, - RtpSender sender, - PmxFrameCryptor frameCryptor - ) { - this.track = track; - this.sender = sender; - this.frameCryptor = frameCryptor; - } -} diff --git a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java index 14f71c7e..373e1460 100644 --- a/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java +++ b/privmx-endpoint-streams/jvm/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java @@ -4,15 +4,15 @@ import com.simplito.java.privmx_endpoint.model.MediaDevice; import com.simplito.java.privmx_endpoint.model.RemoteStreamId; import com.simplito.java.privmx_endpoint.model.Stream; -import com.simplito.java.privmx_endpoint.model.StreamHandle; import com.simplito.java.privmx_endpoint.model.StreamSettings; -import com.simplito.java.privmx_endpoint.model.StreamSubscription; import com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes.StreamEventSelectorType; import com.simplito.java.privmx_endpoint.model.events.eventTypes.StreamEventType; import com.simplito.java.privmx_endpoint.model.ContainerPolicy; import com.simplito.java.privmx_endpoint.model.PagingList; import com.simplito.java.privmx_endpoint.model.UserWithPubKey; -import com.simplito.java.privmx_endpoint.model.StreamRoom; +import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; +import com.simplito.java.privmx_endpoint.model.stream.StreamRoom; +import com.simplito.java.privmx_endpoint.model.stream.StreamSubscription; import com.simplito.java.privmx_endpoint.modules.core.Connection; import com.simplito.java.privmx_endpoint.modules.event.EventApi; From 58852dca73e25691519ea3bdca32d4b219c694c0 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 18 Feb 2026 13:39:36 +0100 Subject: [PATCH 10/19] refactor: change the way of creating streamApiLow --- .../wrapper/streams/modules/StreamApiLow.cpp | 78 ++++--------------- .../modules/stream/StreamApiLow.java | 24 +++--- 2 files changed, 26 insertions(+), 76 deletions(-) diff --git a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp index 23e1ccd8..669b0b5f 100644 --- a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp +++ b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp @@ -13,11 +13,7 @@ #include #include "privmx/endpoint/wrapper/streams/parsers/parser.h" -//#include - -using namespace privmx::endpoint::stream; using namespace privmx::endpoint; -//using namespace privmx::wrapper; StreamApiLow *getStreamApi(JniContextUtils &ctx, jobject streamApiInstance) { jclass cls = ctx->GetObjectClass(streamApiInstance); @@ -29,73 +25,33 @@ StreamApiLow *getStreamApi(JniContextUtils &ctx, jobject streamApiInstance) { return (stream::StreamApiLow *) ctx.getObject(apiLong).getLongValue(); } -//extern "C" -//JNIEXPORT jobject JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_init( -// JNIEnv *env, -// jobject thiz, -// jobject connection, -// jobject eventApi -//) { -// JniContextUtils ctx(env); -// jobject result; -// -// if (ctx.nullCheck(connection, "Connection") || -// ctx.nullCheck(eventApi, "EventApi")) { -// return nullptr; -// } -// -//// ctx.callResultEndpointApi(&result, [&ctx, &env, &thiz, &connection, &eventApi] { -// auto connection_c = getConnection(env, connection); -// auto eventApi_c = getEventApi(ctx, eventApi); -// auto streamApiLow = stream::StreamApiLow::create( -// *connection_c, -// *eventApi_c -// ); -// auto streamApiLow_ptr = new stream::StreamApiLow(); -// *streamApiLow_ptr = streamApiLow; -// return ctx.long2jLong((jlong) streamApiLow_ptr); -//// }); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} - extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_create( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_init( JNIEnv *env, - jclass clazz, + jobject thiz, jobject connection, jobject eventApi ) { JniContextUtils ctx(env); - if (ctx.nullCheck(connection, "Connection")) { + jobject result; + + if (ctx.nullCheck(connection, "Connection") || + ctx.nullCheck(eventApi, "EventApi")) { return nullptr; } -// jobject result; -// ctx.callResultEndpointApi(&result, [&ctx, &env, &clazz, &connection, &eventApi] { - jmethodID initMID = ctx->GetMethodID(clazz, "", - "(Ljava/lang/Long;)V"); - auto connection_c = getConnection(env, connection); - auto eventApi_c = getEventApi(env, eventApi); - auto streamApiLow = StreamApiLow::create( - *connection_c, - *eventApi_c - ); - auto *api = new StreamApiLow(); - *api = streamApiLow; - - jobject result = ctx->NewObject( - clazz, - initMID, - ctx.long2jLong((jlong) api) - ); - return result; - -// }); + ctx.callResultEndpointApi(&result, [&ctx, &env, &connection, &eventApi] { + auto connection_c = getConnection(env, connection); + auto eventApi_c = getEventApi(env, eventApi); + auto streamApiLow = stream::StreamApiLow::create( + *connection_c, + *eventApi_c + ); + auto streamApiLow_ptr = new stream::StreamApiLow(); + *streamApiLow_ptr = streamApiLow; + return ctx.long2jLong((jlong) streamApiLow_ptr); + }); if (ctx->ExceptionCheck()) { return nullptr; } diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java index 1ed39458..e872f588 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java @@ -14,8 +14,6 @@ import com.simplito.java.privmx_endpoint.model.ContainerPolicy; import com.simplito.java.privmx_endpoint.model.PagingList; import com.simplito.java.privmx_endpoint.model.UserWithPubKey; -import com.simplito.java.privmx_endpoint.modules.core.Connection; -import com.simplito.java.privmx_endpoint.modules.event.EventApi; import com.simplito.java.privmx_endpoint.model.stream.Settings; import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; @@ -23,6 +21,8 @@ import com.simplito.java.privmx_endpoint.model.stream.StreamRoom; import com.simplito.java.privmx_endpoint.model.stream.StreamSubscription; import com.simplito.java.privmx_endpoint.model.stream.TurnCredentials; +import com.simplito.java.privmx_endpoint.modules.core.Connection; +import com.simplito.java.privmx_endpoint.modules.event.EventApi; import java.util.List; import java.util.Objects; @@ -43,17 +43,12 @@ private StreamApiLow(Long api) { this.api = api; } -// private native Long init(Connection connection, EventApi eventApi) throws IllegalStateException; - - private static native StreamApiLow create( - Connection connection, - EventApi eventApi - ); + private native Long init(Connection connection, EventApi eventApi) throws IllegalStateException; public StreamApiLow( Connection connection ) throws IllegalStateException { - this(connection, null); + this.api = init(connection, null); } public StreamApiLow( @@ -62,11 +57,10 @@ public StreamApiLow( ) throws IllegalStateException { Objects.requireNonNull(connection); EventApi tmpEventApi = eventApi == null ? new EventApi(connection) : null; - StreamApiLow streamApiLow = create( + this.api = init( connection, Optional.ofNullable(eventApi).orElse(tmpEventApi) ); -// api = streamApiLow.api; try { if (eventApi != null) tmpEventApi.close(); @@ -138,7 +132,7 @@ public PagingList listStreamRooms( String sortOrder, String lastId, String sortBy - ){ + ) { return listStreamRooms(contextId, skip, limit, sortOrder, lastId, sortBy, null); } @@ -148,7 +142,7 @@ public PagingList listStreamRooms( long limit, String sortOrder, String lastId - ){ + ) { return listStreamRooms(contextId, skip, limit, sortOrder, lastId, null, null); } @@ -157,7 +151,7 @@ public PagingList listStreamRooms( long skip, long limit, String sortOrder - ){ + ) { return listStreamRooms(contextId, skip, limit, sortOrder, null, null, null); } @@ -165,7 +159,7 @@ public PagingList listStreamRooms( String contextId, long skip, long limit - ){ + ) { return listStreamRooms(contextId, skip, limit, "desc", null, null, null); } From e5814f806a205547745bc3e5620b349d006110c9 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 18 Feb 2026 13:43:56 +0100 Subject: [PATCH 11/19] refactor: move java stream events classes to new directory --- .../model/{events/stream => stream/events}/NewStreams.java | 2 +- .../model/{events/stream => stream/events}/StreamEventData.java | 2 +- .../stream => stream/events}/StreamPublishedEventData.java | 2 +- .../stream => stream/events}/StreamRoomDeletedEventData.java | 2 +- .../stream => stream/events}/StreamUnpublishedEventData.java | 2 +- .../stream => stream/events}/StreamUpdatedEventData.java | 2 +- .../{events/stream => stream/events}/StreamsUpdatedData.java | 2 +- .../{events/stream => stream/events}/UpdatedStreamData.java | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/{events/stream => stream/events}/NewStreams.java (83%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/{events/stream => stream/events}/StreamEventData.java (84%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/{events/stream => stream/events}/StreamPublishedEventData.java (89%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/{events/stream => stream/events}/StreamRoomDeletedEventData.java (74%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/{events/stream => stream/events}/StreamUnpublishedEventData.java (80%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/{events/stream => stream/events}/StreamUpdatedEventData.java (92%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/{events/stream => stream/events}/StreamsUpdatedData.java (81%) rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/{events/stream => stream/events}/UpdatedStreamData.java (96%) diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/NewStreams.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/NewStreams.java similarity index 83% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/NewStreams.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/NewStreams.java index b9552e04..f05caf94 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/NewStreams.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/NewStreams.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model.events.stream; +package com.simplito.java.privmx_endpoint.model.stream.events; import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamEventData.java similarity index 84% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamEventData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamEventData.java index 52f6ff5a..71114a60 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamEventData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamEventData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model.events.stream; +package com.simplito.java.privmx_endpoint.model.stream.events; import java.util.List; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamPublishedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamPublishedEventData.java similarity index 89% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamPublishedEventData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamPublishedEventData.java index 2dda611e..0e834766 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamPublishedEventData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamPublishedEventData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model.events.stream; +package com.simplito.java.privmx_endpoint.model.stream.events; import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamRoomDeletedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamRoomDeletedEventData.java similarity index 74% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamRoomDeletedEventData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamRoomDeletedEventData.java index 4b5e3d72..eb81ce94 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamRoomDeletedEventData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamRoomDeletedEventData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model.events.stream; +package com.simplito.java.privmx_endpoint.model.stream.events; public class StreamRoomDeletedEventData { public String streamRoomId; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamUnpublishedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamUnpublishedEventData.java similarity index 80% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamUnpublishedEventData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamUnpublishedEventData.java index 20e266e0..f0b8935e 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamUnpublishedEventData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamUnpublishedEventData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model.events.stream; +package com.simplito.java.privmx_endpoint.model.stream.events; public class StreamUnpublishedEventData { public String streamRoomId; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamUpdatedEventData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamUpdatedEventData.java similarity index 92% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamUpdatedEventData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamUpdatedEventData.java index 007fb31d..274825d9 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamUpdatedEventData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamUpdatedEventData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model.events.stream; +package com.simplito.java.privmx_endpoint.model.stream.events; import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamsUpdatedData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamsUpdatedData.java similarity index 81% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamsUpdatedData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamsUpdatedData.java index 53aa400c..66231546 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/StreamsUpdatedData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/StreamsUpdatedData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model.events.stream; +package com.simplito.java.privmx_endpoint.model.stream.events; import java.util.List; diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/UpdatedStreamData.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/UpdatedStreamData.java similarity index 96% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/UpdatedStreamData.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/UpdatedStreamData.java index 1c319421..86325aec 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/stream/UpdatedStreamData.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/UpdatedStreamData.java @@ -1,4 +1,4 @@ -package com.simplito.java.privmx_endpoint.model.events.stream; +package com.simplito.java.privmx_endpoint.model.stream.events; public class UpdatedStreamData { public String type; From 2d658ac493449eaec4fd64b3dc6aaeb74de744f2 Mon Sep 17 00:00:00 2001 From: Dawid Jenczewski Date: Thu, 19 Feb 2026 12:42:52 +0100 Subject: [PATCH 12/19] refactor: Move stream event selector type and event type --- .../eventSelectorTypes/StreamEventSelectorType.java | 7 ------- .../eventSelectorTypes/StreamEventSelectorType.java | 9 +++++++++ .../{ => stream}/events/eventTypes/StreamEventType.java | 4 +++- 3 files changed, 12 insertions(+), 8 deletions(-) delete mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventSelectorTypes/StreamEventSelectorType.java create mode 100644 privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/eventSelectorTypes/StreamEventSelectorType.java rename privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/{ => stream}/events/eventTypes/StreamEventType.java (58%) diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventSelectorTypes/StreamEventSelectorType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventSelectorTypes/StreamEventSelectorType.java deleted file mode 100644 index f2bc9b73..00000000 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventSelectorTypes/StreamEventSelectorType.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes; - -public enum StreamEventSelectorType implements EventSelectorType { - CONTEXT_ID, - STREAMROOM_ID, - STREAM_ID -} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/eventSelectorTypes/StreamEventSelectorType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/eventSelectorTypes/StreamEventSelectorType.java new file mode 100644 index 00000000..3ab7e769 --- /dev/null +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/eventSelectorTypes/StreamEventSelectorType.java @@ -0,0 +1,9 @@ +package com.simplito.java.privmx_endpoint.model.stream.events.eventSelectorTypes; + +import com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes.EventSelectorType; + +public enum StreamEventSelectorType implements EventSelectorType { + CONTEXT_ID, + STREAMROOM_ID, + STREAM_ID +} diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventTypes/StreamEventType.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/eventTypes/StreamEventType.java similarity index 58% rename from privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventTypes/StreamEventType.java rename to privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/eventTypes/StreamEventType.java index 347aecf6..44d290fd 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/events/eventTypes/StreamEventType.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/model/stream/events/eventTypes/StreamEventType.java @@ -1,4 +1,6 @@ -package com.simplito.java.privmx_endpoint.model.events.eventTypes; +package com.simplito.java.privmx_endpoint.model.stream.events.eventTypes; + +import com.simplito.java.privmx_endpoint.model.events.eventTypes.EventType; public enum StreamEventType implements EventType { STREAMROOM_CREATE, From 3e457190841aba15f232b39cce48785392031489 Mon Sep 17 00:00:00 2001 From: Doominika Date: Fri, 20 Feb 2026 12:40:13 +0100 Subject: [PATCH 13/19] feat: move streamApiLow jni part --- .../wrapper/streams/modules/StreamApiLow.hpp | 0 .../streams/modules/StreamSettingsJNI.h | 29 - .../streams/modules/WebRTCInterfaceJNI.h | 66 - .../parsers/model_native_initializers.h | 70 - .../endpoint/wrapper/streams/parsers/parser.h | 34 - .../wrapper/streams/modules/StreamApiLow.cpp | 1648 ++++++++--------- .../wrapper/streams/modules/StreamApi.h | 8 +- .../streams/modules/StreamSettingsJNI.cpp | 55 +- jni-wrappers/privmx-endpoint/CMakeLists.txt | 8 +- .../parsers/model_native_initializers.h | 366 ++-- .../privmx/endpoint/wrapper/parsers/parser.h | 18 + .../streams/modules/StreamSettingsJNI.h | 29 - .../streams/modules/WebRTCInterfaceJNI.h | 68 - .../parsers/model_native_initializers.h | 70 - .../endpoint/wrapper/streams/parsers/parser.h | 34 - .../{streams => }/modules/StreamApiLow.cpp | 118 +- .../modules/WebRTCInterfaceJNI.cpp | 5 +- .../cpp/parsers/model_native_initializers.cpp | 1339 ++++++++------ .../src/cpp/parsers/parser.cpp | 344 +++- .../parsers/model_native_initializers.cpp | 500 ----- .../src/cpp/streams/parsers/parser.cpp | 106 -- 21 files changed, 2248 insertions(+), 2667 deletions(-) delete mode 100644 jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/StreamApiLow.hpp delete mode 100644 jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h delete mode 100644 jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h delete mode 100644 jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h delete mode 100644 jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/parser.h rename jni-wrappers/{privmx-endpoint/src/cpp => privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint}/streams/modules/StreamSettingsJNI.cpp (79%) delete mode 100644 jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h delete mode 100644 jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h delete mode 100644 jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h delete mode 100644 jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/parser.h rename jni-wrappers/privmx-endpoint/src/cpp/{streams => }/modules/StreamApiLow.cpp (89%) rename jni-wrappers/privmx-endpoint/src/cpp/{streams => }/modules/WebRTCInterfaceJNI.cpp (97%) delete mode 100644 jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/model_native_initializers.cpp delete mode 100644 jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/parser.cpp diff --git a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/StreamApiLow.hpp b/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/StreamApiLow.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h b/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h deleted file mode 100644 index 372d1b8c..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include - - -#ifndef PRIVMXENDPOINT_STREAMSETTINGSJNI_H -#define PRIVMXENDPOINT_STREAMSETTINGSJNI_H - -namespace privmx::wrapper::streams { - struct StreamSettingsJNI : privmx::endpoint::stream::StreamSettings { - public: - StreamSettingsJNI(JNIEnv *env, jobject jstreamSettings); - -// StreamSettingsJNI(JNIEnv *env); - ~StreamSettingsJNI(); - - void onFrame2(JNIEnv *env, jobject a, jobject b, jobject c, jstring d); - - std::optional> OnVideo; -// void OnVideo(JNIEnv *env, jobject a) override; - - void onVideoRemove2(JNIEnv *env, jobject a); - - private: - jobject jstreamSettings; - JavaVM *javaVM; - jclass cls; - }; -}; -#endif //PRIVMXENDPOINT_STREAMSETTINGSJNI_H diff --git a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h b/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h deleted file mode 100644 index 494d90ee..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h +++ /dev/null @@ -1,66 +0,0 @@ -// -// Created by Dawid Jenczewski on 13/02/2025. -// - -#ifndef PRIVMXENDPOINT_WEBRTCINTERFACEJNI_H -#define PRIVMXENDPOINT_WEBRTCINTERFACEJNI_H - -#include "jni.h" -#include - -using namespace privmx::endpoint::stream; - -class WebRTCInterfaceJNI : public WebRTCInterface { -public: - WebRTCInterfaceJNI(JNIEnv *env, jobject jwebRTCInterface); - -// std::string createOfferAndSetLocalDescription() override; -// -// std::string -// createAnswerAndSetDescriptions(const std::string &sdp, const std::string &type) override; -// -// void setAnswerAndSetRemoteDescription(const std::string &sdp, const std::string &type) override; -// -// void close() override; -// -// void updateKeys(const std::vector &keys) override; - - std::string createOfferAndSetLocalDescription(const std::string &streamRoomId) override; - - std::string createAnswerAndSetDescriptions( - const std::string &streamRoomId, - const std::string &sdp, - const std::string &type - ) override; - - void setAnswerAndSetRemoteDescription( - const std::string &streamRoomId, - const std::string &sdp, - const std::string &type - ) override; - - void updateSessionId( - const std::string &streamRoomId, - const int64_t sessionId, - const std::string &connectionType - ) override; - - void close(const std::string &streamRoomId) override; - - void updateKeys( - const std::string &streamRoomId, - const std::vector &keys - ) override; - -//protected: - ~WebRTCInterfaceJNI() override = default; - -private: - jobject jwebRTCInterface; - JavaVM *javaVM; - - JNIEnv *AttachCurrentThreadIfNeeded(); -}; - - -#endif //PRIVMXENDPOINT_WEBRTCINTERFACEJNI_H diff --git a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h b/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h deleted file mode 100644 index 772c19dc..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h +++ /dev/null @@ -1,70 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -//#ifndef PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H -//#define PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H - -#include -#include "privmx/endpoint/wrapper/utils/utils.hpp" -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/stream/Types.hpp" -#include "privmx/endpoint/stream/webrtc/Types.hpp" -#include "privmx/endpoint/stream/StreamApi.hpp" -#include "privmx/endpoint/stream/StreamApiLow.hpp" -#include "privmx/endpoint/stream/WebRTCInterface.hpp" -#include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" - -namespace privmx { - namespace wrapper { - namespace streams { - //Stream - jobject streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c); - - jobject stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c); - - jobject deviceType2Java(JniContextUtils &ctx, privmx::endpoint::stream::DeviceType deviceType_c); - - jobject mediaDevice2Java(JniContextUtils &ctx, privmx::endpoint::stream::MediaDevice mediaDevice_c); - - jobject streamHandle2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamHandle streamHandle_c); - - jobject streamTrackInfo2Java(JniContextUtils &ctx,privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c); - - jobject streamInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamInfo streamInfo_c); - - jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c); - - jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c); - - jobject remoteStreamId2Java(JniContextUtils &ctx, privmx::endpoint::stream::RemoteStreamId remoteStreamId_c); - - jobject frame2Java(JniContextUtils &ctx, privmx::endpoint::stream::Frame &frame_c); - - jobject keyType2Java(JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c); - - jobject key2Java(JniContextUtils &ctx, privmx::endpoint::stream::Key key_c); - - jobject - streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c); - - jobject - stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c); - - jobject - turnCredentials2Java(JniContextUtils &ctx, privmx::endpoint::stream::TurnCredentials turnCredentials_c); - - jobject - sdpWithTypeModel2Java(JniContextUtils &ctx, privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c); - } // streams - } // wrapper -} // privmx - -//#endif //PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H diff --git a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/parser.h b/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/parser.h deleted file mode 100644 index f9421230..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/includes/privmx/endpoint/wrapper/streams/parsers/parser.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -//#ifndef PRIVMX_POCKET_LIB_PARSER_H -//#define PRIVMX_POCKET_LIB_PARSER_H - -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/wrapper/utils/utils.hpp" -#include "privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h" -#include -#include "model_native_initializers.h" - -// streams -privmx::endpoint::stream::DeviceType parseDeviceType(JniContextUtils &ctx, jobject type); - -privmx::endpoint::stream::MediaDevice parseMediaDevice(JniContextUtils &ctx, jobject mediaDevice); - -privmx::endpoint::stream::StreamHandle parseStreamHandle(JniContextUtils &ctx, jobject streamHandle); - -privmx::endpoint::stream::Settings parseSettings(JniContextUtils &ctx, jobject settings); - -privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env, jobject streamSettings); - -privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription); - -//#endif //PRIVMX_POCKET_LIB_PARSER_H diff --git a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp index 669b0b5f..bdae7960 100644 --- a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp +++ b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp @@ -1,824 +1,824 @@ -#include - -// -// Created by Dawid Jenczewski on 14/02/2025. -// -#include "privmx/endpoint/wrapper/utils/utils.hpp" -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" -#include "privmx/endpoint/wrapper/modules/Connection.h" -#include "privmx/endpoint/wrapper/modules/EventApi.h" - -#include "privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h" -#include -#include "privmx/endpoint/wrapper/streams/parsers/parser.h" - -using namespace privmx::endpoint; - -StreamApiLow *getStreamApi(JniContextUtils &ctx, jobject streamApiInstance) { - jclass cls = ctx->GetObjectClass(streamApiInstance); - jfieldID apiFID = ctx->GetFieldID(cls, "api", "Ljava/lang/Long;"); - jobject apiLong = ctx->GetObjectField(streamApiInstance, apiFID); - if (apiLong == nullptr) { - throw IllegalStateException("ThreadApi cannot be used"); - } - return (stream::StreamApiLow *) ctx.getObject(apiLong).getLongValue(); -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_init( - JNIEnv *env, - jobject thiz, - jobject connection, - jobject eventApi -) { - JniContextUtils ctx(env); - jobject result; - - if (ctx.nullCheck(connection, "Connection") || - ctx.nullCheck(eventApi, "EventApi")) { - return nullptr; - } - - ctx.callResultEndpointApi(&result, [&ctx, &env, &connection, &eventApi] { - auto connection_c = getConnection(env, connection); - auto eventApi_c = getEventApi(env, eventApi); - auto streamApiLow = stream::StreamApiLow::create( - *connection_c, - *eventApi_c - ); - auto streamApiLow_ptr = new stream::StreamApiLow(); - *streamApiLow_ptr = streamApiLow; - return ctx.long2jLong((jlong) streamApiLow_ptr); - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deinit( - JNIEnv *env, - jobject thiz -) { - try { - JniContextUtils ctx(env); - //if null go to catch - auto api = getStreamApi(ctx, thiz); - delete api; - jclass cls = env->GetObjectClass(thiz); - jfieldID apiFID = env->GetFieldID(cls, "api", "Ljava/lang/Long;"); - env->SetObjectField(thiz, apiFID, (jobject) nullptr); - } catch (const IllegalStateException &e) { - env->ThrowNew( - env->FindClass("java/lang/IllegalStateException"), - e.what() - ); - } -} - -extern "C" -JNIEXPORT jstring JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStreamRoom( - JNIEnv *env, - jobject thiz, - jstring context_id, - jobject users, - jobject managers, - jbyteArray public_meta, - jbyteArray private_meta, - jobject policies -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(context_id, "Context ID") || - ctx.nullCheck(users, "Users list") || - ctx.nullCheck(managers, "Managers list") || - ctx.nullCheck(public_meta, "Public meta") || - ctx.nullCheck(private_meta, "Private meta")) { - return nullptr; - } - - jstring result; - ctx.callResultEndpointApi( - &result, - [ - &ctx, - &thiz, - context_id, - &users, - &managers, - &public_meta, - &private_meta, - &policies - ]() { - std::vector users_c = usersToVector( - ctx, - ctx.jObject2jArray(users)); - std::vector managers_c = usersToVector( - ctx, - ctx.jObject2jArray(managers)); - auto container_policies_c = std::optional( - parseContainerPolicy(ctx, policies)); - return ctx->NewStringUTF( - getStreamApi(ctx, thiz)->createStreamRoom( - ctx.jString2string(context_id), - users_c, - managers_c, - core::Buffer::from(ctx.jByteArray2String(public_meta)), - core::Buffer::from(ctx.jByteArray2String(private_meta)), - container_policies_c - ).c_str()); - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_updateStreamRoom( - JNIEnv *env, - jobject thiz, - jstring stream_room_id, - jobject users, - jobject managers, - jbyteArray public_meta, - jbyteArray private_meta, - jlong version, - jboolean force, - jboolean force_generate_new_key, - jobject policies -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream room ID") || - ctx.nullCheck(users, "Users list") || - ctx.nullCheck(managers, "Managers list") || - ctx.nullCheck(public_meta, "Public meta") || - ctx.nullCheck(private_meta, "Private meta")) { - return; - } - ctx.callVoidEndpointApi( - [ - &ctx, - &thiz, - &stream_room_id, - &users, - &managers, - &public_meta, - &private_meta, - &version, - force, - &force_generate_new_key, - &policies - ]() { - std::vector users_c = usersToVector( - ctx, - ctx.jObject2jArray(users)); - std::vector managers_c = usersToVector( - ctx, - ctx.jObject2jArray(managers)); - auto container_policies_c = std::optional( - parseContainerPolicy(ctx, policies)); - getStreamApi(ctx, thiz)->updateStreamRoom( - ctx.jString2string(stream_room_id), - users_c, - managers_c, - core::Buffer::from(ctx.jByteArray2String(public_meta)), - core::Buffer::from(ctx.jByteArray2String(private_meta)), - version, - force == JNI_TRUE, - force_generate_new_key == JNI_TRUE, - container_policies_c - ); - } - ); -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreamRooms( - JNIEnv *env, - jobject thiz, - jstring context_id, - jlong skip, - jlong limit, - jstring sort_order, - jstring last_id, - jstring sort_by // todo - use in this impl. -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(context_id, "Context ID") || - ctx.nullCheck(sort_order, "Sort order")) { - return nullptr; - } - - jobject result; - ctx.callResultEndpointApi( - &result, - [ - &ctx, - &env, - &thiz, - &context_id, - &skip, - &limit, - &sort_order, - &last_id, - &sort_by - ]() { - jclass pagingListCls = env->FindClass( - "com/simplito/java/privmx_endpoint/model/PagingList"); - jmethodID pagingListInitMID = env->GetMethodID( - pagingListCls, "", - "(Ljava/lang/Long;Ljava/util/List;)V"); - jclass arrayCls = env->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = env->GetMethodID(arrayCls, - "", - "()V"); - jmethodID addToArrayMID = env->GetMethodID(arrayCls, - "add", - "(Ljava/lang/Object;)Z"); - auto query = core::PagingQuery(); - query.skip = skip; - query.limit = limit; - query.sortOrder = ctx.jString2string(sort_order); - if (last_id != nullptr) { - query.lastId = ctx.jString2string(last_id); - } - if (sort_by != nullptr) { - query.sortBy = ctx.jString2string(sort_by); - } - - auto streamRooms_c( - getStreamApi(ctx, thiz)->listStreamRooms( - ctx.jString2string(context_id), - query - ) - ); - jobject array = env->NewObject(arrayCls, initArrayMID); - for (auto &streamRoom_c: streamRooms_c.readItems) { - env->CallBooleanMethod(array, - addToArrayMID, - privmx::wrapper::streams::streamRoom2Java( - ctx, streamRoom_c) - ); - } - return ctx->NewObject( - pagingListCls, - pagingListInitMID, - ctx.long2jLong(streamRooms_c.totalAvailable), - array - ); - } - ); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getStreamRoom( - JNIEnv *env, - jobject thiz, - jstring stream_room_id -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { - return nullptr; - } - jobject result; - ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_room_id] { - - return privmx::wrapper::streams::streamRoom2Java( - ctx, - getStreamApi(ctx, thiz)->getStreamRoom( - ctx.jString2string(stream_room_id) - ) - ); - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deleteStreamRoom( - JNIEnv *env, - jobject thiz, - jstring stream_room_id -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { - return; - } - ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id]() { - getStreamApi(ctx, thiz)->deleteStreamRoom( - ctx.jString2string(stream_room_id) - ); - }); -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStream( - JNIEnv *env, - jobject thiz, - jstring stream_room_id - // todo - made changes in arguments -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream room ID")) - return {}; - - jobject result; - ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_room_id] { - - return privmx::wrapper::streams::streamHandle2Java( - ctx, - getStreamApi(ctx, thiz)->createStream( - ctx.jString2string(stream_room_id) - ) - ); - - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_publishStream( - JNIEnv *env, - jobject thiz, - jobject stream_handle - // todo - made changes in arguments -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_handle, "Stream Handle")) - return {}; - - jobject result; - ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_handle] { - - auto result = getStreamApi(ctx, thiz)->publishStream( - parseStreamHandle(ctx, stream_handle) - ); - - return privmx::wrapper::streams::streamPublishResult2Java( - ctx, - result - ); - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_joinStreamRoom( - JNIEnv *env, - jobject thiz, - jstring stream_room_id, - jobject web_rtc - // todo - made changes in arguments -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream room ID") || - ctx.nullCheck(web_rtc, "webRtc")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &env, &thiz, &stream_room_id, &web_rtc]() { - auto webrtc = std::make_shared( - WebRTCInterfaceJNI(env, web_rtc) - ); // todo - protected destructor commented - std::vector streams_id_c; - - getStreamApi(ctx, thiz)->joinStreamRoom( - ctx.jString2string(stream_room_id), - webrtc - ); - }); -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreams( - JNIEnv *env, - jobject thiz, - jstring stream_room_id -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream room ID")) { - return nullptr; - } - - jobject result; - ctx.callResultEndpointApi(&result, [&ctx, &thiz, &env, &stream_room_id] { - jclass arrayCls = env->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = env->GetMethodID(arrayCls, "", "()V"); - jmethodID addToArrayMID = env->GetMethodID(arrayCls, "add", "(Ljava/lang/Object;)Z"); - - auto stream_infos_c = getStreamApi(ctx, thiz)->listStreams( - ctx.jString2string(stream_room_id) - ); - jobject array = env->NewObject(arrayCls, initArrayMID); - for (auto &info_c: stream_infos_c) { - env->CallBooleanMethod( - array, - addToArrayMID, - privmx::wrapper::streams::streamInfo2Java(ctx, info_c) - ); - } - return array; - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unpublishStream( - JNIEnv *env, - jobject thiz, - jobject stream_handle - // todo - made changes in arguments -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_handle, "Stream Handle")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &stream_handle]() { - getStreamApi(ctx, thiz)->unpublishStream( - parseStreamHandle(ctx, stream_handle) - ); - }); -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_leaveStreamRoom( - JNIEnv *env, - jobject thiz, - jstring stream_room_id - // todo - made changes in arguments -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id]() { - getStreamApi(ctx, thiz)->leaveStreamRoom( - ctx.jString2string(stream_room_id) - ); - }); -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getTurnCredentials( - JNIEnv *env, - jobject thiz -) { - JniContextUtils ctx(env); - jobject result; - ctx.callResultEndpointApi(&result, [&ctx, &env, &thiz] { - jclass arrayCls = env->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = env->GetMethodID(arrayCls, "", "()V"); - jmethodID addToArrayMID = env->GetMethodID(arrayCls, "add", "(Ljava/lang/Object;)Z"); - - auto turnCredentialsVector = getStreamApi(ctx, thiz)->getTurnCredentials(); - jobject array = env->NewObject(arrayCls, initArrayMID); - for ( - auto &turnCredentials_c: turnCredentialsVector) { - env->CallBooleanMethod( - array, - addToArrayMID, - privmx::wrapper::streams::turnCredentials2Java(ctx, turnCredentials_c) - ); - } - - return array; - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeFor( - JNIEnv *env, - jobject thiz, - jobject subscription_queries - // todo - made changes in arguments -) { - JniContextUtils ctx(env); - jobject result; - ctx.callResultEndpointApi(&result, [&ctx, &env, &thiz, &subscription_queries] { - jclass arrayListCls = env->FindClass("java/util/ArrayList"); - jmethodID initMID = env->GetMethodID(arrayListCls, "", "()V"); - jmethodID addToListMID = env->GetMethodID(arrayListCls, "add", "(Ljava/lang/Object;)Z"); - - auto subscription_queries_arr = ctx.jObject2jArray(subscription_queries); - auto subscription_queries_c = std::vector(); - - int length = ctx->GetArrayLength(subscription_queries_arr); - for (int i = 0; i < length; i++) { - jobject arrayElement = ctx->GetObjectArrayElement(subscription_queries_arr, i); - subscription_queries_c.push_back(ctx.jString2string((jstring) arrayElement)); - } - - jobject arrayList = env->NewObject(arrayListCls, initMID); - auto subscription_ids_c = getStreamApi(ctx, thiz)->subscribeFor( - subscription_queries_c - ); - - for (auto &id_str: subscription_ids_c) { - jstring java_id_str = ctx->NewStringUTF(id_str.c_str()); - env->CallBooleanMethod( - arrayList, - addToListMID, - java_id_str - ); - } - return arrayList; - - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeFrom( - JNIEnv *env, - jobject thiz, - jobject subscription_ids - // todo - made changes in arguments -) { -//TODO: Add nullchecks - JniContextUtils ctx(env); - if (ctx.nullCheck(subscription_ids, "Subscription ids")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &subscription_ids]() { - auto subscription_ids_arr = ctx.jObject2jArray(subscription_ids); - auto subscription_ids_c = std::vector(); - - int length = ctx->GetArrayLength(subscription_ids_arr); - for (int i = 0; i < length; i++) { - jobject arrayElement = ctx->GetObjectArrayElement(subscription_ids_arr, i); - if (ctx.nullCheck(arrayElement, "Subscription ids array elements")) { - return; - } - subscription_ids_c.push_back(ctx.jString2string((jstring) arrayElement)); - } - - getStreamApi(ctx, thiz)->unsubscribeFrom(subscription_ids_c); - }); -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_keyManagement( - JNIEnv *env, - jobject thiz, - jstring stream_room_id, - jboolean disable - // todo - made changes in arguments - -) { -//TODO: Add nullchecks - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id, &disable]() { - getStreamApi(ctx, thiz)->keyManagement( - ctx.jString2string(stream_room_id), - disable == JNI_TRUE - ); - - }); -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_trickle( - JNIEnv *env, - jobject thiz, - jlong session_id, - jstring candidate_as_json -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(candidate_as_json, "Candidate as JSON")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &session_id, &candidate_as_json]() { - getStreamApi(ctx, thiz)->trickle( - session_id, - ctx.jString2string(candidate_as_json) - ); - }); -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeFromRemoteStreams( - JNIEnv *env, - jobject thiz, - jstring stream_room_id, - jobject subscriptions_to_remove -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID") || - ctx.nullCheck(subscriptions_to_remove, "Subscriptions to remove")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id, &subscriptions_to_remove]() { - auto subscriptions_to_remove_arr = ctx.jObject2jArray(subscriptions_to_remove); - auto subscriptions_to_remove_c = std::vector(); - - int length = ctx->GetArrayLength(subscriptions_to_remove_arr); - for (int i = 0; i < length; i++) { - jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_to_remove_arr, i); - if (ctx.nullCheck(arrayElement, "Subscriptions to remove array elements")) { - return; - } - subscriptions_to_remove_c.push_back( - parseStreamSubscription( - ctx, - arrayElement - ) - ); - } - - getStreamApi(ctx, thiz)->unsubscribeFromRemoteStreams( - ctx.jString2string(stream_room_id), - subscriptions_to_remove_c - ); - }); -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_modifyRemoteStreamsSubscriptions( - JNIEnv *env, - jobject thiz, - jstring stream_room_id, - jobject subscriptions_to_add, - jobject subscriptions_to_remove, - jobject options -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID") || - ctx.nullCheck(subscriptions_to_add, "Subscriptions to add") || - ctx.nullCheck(subscriptions_to_add, "Subscriptions to remove") || - ctx.nullCheck(options, "Options")) { - return; - } - - ctx.callVoidEndpointApi( - [&ctx, &thiz, &stream_room_id, &subscriptions_to_add, &subscriptions_to_remove, &options]() { - auto subscriptions_to_add_arr = ctx.jObject2jArray(subscriptions_to_remove); - auto subscriptions_to_remove_arr = ctx.jObject2jArray(subscriptions_to_remove); - auto subscriptions_to_add_c = std::vector(); - auto subscriptions_to_remove_c = std::vector(); - - int subscriptions_to_add_length = ctx->GetArrayLength(subscriptions_to_add_arr); - int subscriptions_to_remove_length = ctx->GetArrayLength( - subscriptions_to_remove_arr); - - for (int i = 0; i < subscriptions_to_add_length; i++) { - jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_to_add_arr, i); - if (ctx.nullCheck(arrayElement, "Subscriptions to add array elements")) { - return; - } - subscriptions_to_add_c.push_back( - parseStreamSubscription( - ctx, - arrayElement - ) - ); - } - for (int i = 0; i < subscriptions_to_remove_length; i++) { - jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_to_remove_arr, - i); - if (ctx.nullCheck(arrayElement, "Subscriptions to remove array elements")) { - return; - } - subscriptions_to_remove_c.push_back( - parseStreamSubscription( - ctx, - arrayElement - ) - ); - } - - getStreamApi(ctx, thiz)->modifyRemoteStreamsSubscriptions( - ctx.jString2string(stream_room_id), - subscriptions_to_add_c, - subscriptions_to_remove_c, - parseSettings(ctx, options) - ); - }); -} - -extern "C" -JNIEXPORT void JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeToRemoteStreams( - JNIEnv *env, - jobject thiz, - jstring stream_room_id, - jobject subscriptions, - jobject options -) { - JniContextUtils ctx(env); - if (ctx.nullCheck(stream_room_id, "Stream Room ID") || - ctx.nullCheck(subscriptions, "Subscriptions") || - ctx.nullCheck(options, "Options")) { - return; - } - - ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id, &subscriptions, &options]() { - auto subscriptions_arr = ctx.jObject2jArray(subscriptions); - auto subscriptions_c = std::vector(); - - int length = ctx->GetArrayLength(subscriptions_arr); - for (int i = 0; i < length; i++) { - jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_arr, i); - if (ctx.nullCheck(arrayElement, "Subscriptions array elements")) { - return; - } - subscriptions_c.push_back( - parseStreamSubscription( - ctx, - arrayElement - ) - ); - } - getStreamApi(ctx, thiz)->subscribeToRemoteStreams( - ctx.jString2string(stream_room_id), - subscriptions_c, - parseSettings(ctx, options) - ); - }); -} -extern "C" -JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_updateStream( - JNIEnv *env, - jobject thiz, - jobject stream_handle -) { - JniContextUtils ctx(env); - jobject result; - - ctx.callResultEndpointApi( - &result, [ - &ctx, - &env, - &thiz, - &stream_handle - ] { - - auto stream_handle_c = parseStreamHandle(ctx, stream_handle); - auto stream_result = getStreamApi(ctx, thiz)->updateStream( - stream_handle_c - ); - - return privmx::wrapper::streams::streamPublishResult2Java( - ctx, - stream_result - ); - - }); - if (ctx->ExceptionCheck()) { - return nullptr; - } - return result; -} \ No newline at end of file +//#include +// +//// +//// Created by Dawid Jenczewski on 14/02/2025. +//// +//#include "privmx/endpoint/wrapper/utils/utils.hpp" +//#include "privmx/endpoint/wrapper/parsers/parser.h" +//#include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" +//#include "privmx/endpoint/wrapper/modules/Connection.h" +//#include "privmx/endpoint/wrapper/modules/EventApi.h" +// +//#include "privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h" +//#include +//#include "privmx/endpoint/wrapper/streams/parsers/parser.h" +// +//using namespace privmx::endpoint; +// +//StreamApiLow *getStreamApi(JniContextUtils &ctx, jobject streamApiInstance) { +// jclass cls = ctx->GetObjectClass(streamApiInstance); +// jfieldID apiFID = ctx->GetFieldID(cls, "api", "Ljava/lang/Long;"); +// jobject apiLong = ctx->GetObjectField(streamApiInstance, apiFID); +// if (apiLong == nullptr) { +// throw IllegalStateException("ThreadApi cannot be used"); +// } +// return (stream::StreamApiLow *) ctx.getObject(apiLong).getLongValue(); +//} +// +//extern "C" +//JNIEXPORT jobject JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_init( +// JNIEnv *env, +// jobject thiz, +// jobject connection, +// jobject eventApi +//) { +// JniContextUtils ctx(env); +// jobject result; +// +// if (ctx.nullCheck(connection, "Connection") || +// ctx.nullCheck(eventApi, "EventApi")) { +// return nullptr; +// } +// +// ctx.callResultEndpointApi(&result, [&ctx, &env, &connection, &eventApi] { +// auto connection_c = getConnection(env, connection); +// auto eventApi_c = getEventApi(env, eventApi); +// auto streamApiLow = stream::StreamApiLow::create( +// *connection_c, +// *eventApi_c +// ); +// auto streamApiLow_ptr = new stream::StreamApiLow(); +// *streamApiLow_ptr = streamApiLow; +// return ctx.long2jLong((jlong) streamApiLow_ptr); +// }); +// if (ctx->ExceptionCheck()) { +// return nullptr; +// } +// return result; +//} +// +//extern "C" +//JNIEXPORT void JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deinit( +// JNIEnv *env, +// jobject thiz +//) { +// try { +// JniContextUtils ctx(env); +// //if null go to catch +// auto api = getStreamApi(ctx, thiz); +// delete api; +// jclass cls = env->GetObjectClass(thiz); +// jfieldID apiFID = env->GetFieldID(cls, "api", "Ljava/lang/Long;"); +// env->SetObjectField(thiz, apiFID, (jobject) nullptr); +// } catch (const IllegalStateException &e) { +// env->ThrowNew( +// env->FindClass("java/lang/IllegalStateException"), +// e.what() +// ); +// } +//} +// +//extern "C" +//JNIEXPORT jstring JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStreamRoom( +// JNIEnv *env, +// jobject thiz, +// jstring context_id, +// jobject users, +// jobject managers, +// jbyteArray public_meta, +// jbyteArray private_meta, +// jobject policies +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(context_id, "Context ID") || +// ctx.nullCheck(users, "Users list") || +// ctx.nullCheck(managers, "Managers list") || +// ctx.nullCheck(public_meta, "Public meta") || +// ctx.nullCheck(private_meta, "Private meta")) { +// return nullptr; +// } +// +// jstring result; +// ctx.callResultEndpointApi( +// &result, +// [ +// &ctx, +// &thiz, +// context_id, +// &users, +// &managers, +// &public_meta, +// &private_meta, +// &policies +// ]() { +// std::vector users_c = usersToVector( +// ctx, +// ctx.jObject2jArray(users)); +// std::vector managers_c = usersToVector( +// ctx, +// ctx.jObject2jArray(managers)); +// auto container_policies_c = std::optional( +// parseContainerPolicy(ctx, policies)); +// return ctx->NewStringUTF( +// getStreamApi(ctx, thiz)->createStreamRoom( +// ctx.jString2string(context_id), +// users_c, +// managers_c, +// core::Buffer::from(ctx.jByteArray2String(public_meta)), +// core::Buffer::from(ctx.jByteArray2String(private_meta)), +// container_policies_c +// ).c_str()); +// }); +// if (ctx->ExceptionCheck()) { +// return nullptr; +// } +// return result; +//} +// +//extern "C" +//JNIEXPORT void JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_updateStreamRoom( +// JNIEnv *env, +// jobject thiz, +// jstring stream_room_id, +// jobject users, +// jobject managers, +// jbyteArray public_meta, +// jbyteArray private_meta, +// jlong version, +// jboolean force, +// jboolean force_generate_new_key, +// jobject policies +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(stream_room_id, "Stream room ID") || +// ctx.nullCheck(users, "Users list") || +// ctx.nullCheck(managers, "Managers list") || +// ctx.nullCheck(public_meta, "Public meta") || +// ctx.nullCheck(private_meta, "Private meta")) { +// return; +// } +// ctx.callVoidEndpointApi( +// [ +// &ctx, +// &thiz, +// &stream_room_id, +// &users, +// &managers, +// &public_meta, +// &private_meta, +// &version, +// force, +// &force_generate_new_key, +// &policies +// ]() { +// std::vector users_c = usersToVector( +// ctx, +// ctx.jObject2jArray(users)); +// std::vector managers_c = usersToVector( +// ctx, +// ctx.jObject2jArray(managers)); +// auto container_policies_c = std::optional( +// parseContainerPolicy(ctx, policies)); +// getStreamApi(ctx, thiz)->updateStreamRoom( +// ctx.jString2string(stream_room_id), +// users_c, +// managers_c, +// core::Buffer::from(ctx.jByteArray2String(public_meta)), +// core::Buffer::from(ctx.jByteArray2String(private_meta)), +// version, +// force == JNI_TRUE, +// force_generate_new_key == JNI_TRUE, +// container_policies_c +// ); +// } +// ); +//} +// +//extern "C" +//JNIEXPORT jobject JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreamRooms( +// JNIEnv *env, +// jobject thiz, +// jstring context_id, +// jlong skip, +// jlong limit, +// jstring sort_order, +// jstring last_id, +// jstring sort_by // todo - use in this impl. +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(context_id, "Context ID") || +// ctx.nullCheck(sort_order, "Sort order")) { +// return nullptr; +// } +// +// jobject result; +// ctx.callResultEndpointApi( +// &result, +// [ +// &ctx, +// &env, +// &thiz, +// &context_id, +// &skip, +// &limit, +// &sort_order, +// &last_id, +// &sort_by +// ]() { +// jclass pagingListCls = env->FindClass( +// "com/simplito/java/privmx_endpoint/model/PagingList"); +// jmethodID pagingListInitMID = env->GetMethodID( +// pagingListCls, "", +// "(Ljava/lang/Long;Ljava/util/List;)V"); +// jclass arrayCls = env->FindClass("java/util/ArrayList"); +// jmethodID initArrayMID = env->GetMethodID(arrayCls, +// "", +// "()V"); +// jmethodID addToArrayMID = env->GetMethodID(arrayCls, +// "add", +// "(Ljava/lang/Object;)Z"); +// auto query = core::PagingQuery(); +// query.skip = skip; +// query.limit = limit; +// query.sortOrder = ctx.jString2string(sort_order); +// if (last_id != nullptr) { +// query.lastId = ctx.jString2string(last_id); +// } +// if (sort_by != nullptr) { +// query.sortBy = ctx.jString2string(sort_by); +// } +// +// auto streamRooms_c( +// getStreamApi(ctx, thiz)->listStreamRooms( +// ctx.jString2string(context_id), +// query +// ) +// ); +// jobject array = env->NewObject(arrayCls, initArrayMID); +// for (auto &streamRoom_c: streamRooms_c.readItems) { +// env->CallBooleanMethod(array, +// addToArrayMID, +// privmx::wrapper::streams::streamRoom2Java( +// ctx, streamRoom_c) +// ); +// } +// return ctx->NewObject( +// pagingListCls, +// pagingListInitMID, +// ctx.long2jLong(streamRooms_c.totalAvailable), +// array +// ); +// } +// ); +// if (ctx->ExceptionCheck()) { +// return nullptr; +// } +// return result; +//} +// +//extern "C" +//JNIEXPORT jobject JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getStreamRoom( +// JNIEnv *env, +// jobject thiz, +// jstring stream_room_id +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { +// return nullptr; +// } +// jobject result; +// ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_room_id] { +// +// return privmx::wrapper::streams::streamRoom2Java( +// ctx, +// getStreamApi(ctx, thiz)->getStreamRoom( +// ctx.jString2string(stream_room_id) +// ) +// ); +// }); +// if (ctx->ExceptionCheck()) { +// return nullptr; +// } +// return result; +//} +// +//extern "C" +//JNIEXPORT void JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deleteStreamRoom( +// JNIEnv *env, +// jobject thiz, +// jstring stream_room_id +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { +// return; +// } +// ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id]() { +// getStreamApi(ctx, thiz)->deleteStreamRoom( +// ctx.jString2string(stream_room_id) +// ); +// }); +//} +// +//extern "C" +//JNIEXPORT jobject JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStream( +// JNIEnv *env, +// jobject thiz, +// jstring stream_room_id +// // todo - made changes in arguments +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(stream_room_id, "Stream room ID")) +// return {}; +// +// jobject result; +// ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_room_id] { +// +// return privmx::wrapper::streams::streamHandle2Java( +// ctx, +// getStreamApi(ctx, thiz)->createStream( +// ctx.jString2string(stream_room_id) +// ) +// ); +// +// }); +// if (ctx->ExceptionCheck()) { +// return nullptr; +// } +// return result; +//} +// +//extern "C" +//JNIEXPORT jobject JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_publishStream( +// JNIEnv *env, +// jobject thiz, +// jobject stream_handle +// // todo - made changes in arguments +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(stream_handle, "Stream Handle")) +// return {}; +// +// jobject result; +// ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_handle] { +// +// auto result = getStreamApi(ctx, thiz)->publishStream( +// parseStreamHandle(ctx, stream_handle) +// ); +// +// return privmx::wrapper::streams::streamPublishResult2Java( +// ctx, +// result +// ); +// }); +// if (ctx->ExceptionCheck()) { +// return nullptr; +// } +// return result; +//} +// +//extern "C" +//JNIEXPORT void JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_joinStreamRoom( +// JNIEnv *env, +// jobject thiz, +// jstring stream_room_id, +// jobject web_rtc +// // todo - made changes in arguments +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(stream_room_id, "Stream room ID") || +// ctx.nullCheck(web_rtc, "webRtc")) { +// return; +// } +// +// ctx.callVoidEndpointApi([&ctx, &env, &thiz, &stream_room_id, &web_rtc]() { +// auto webrtc = std::make_shared( +// WebRTCInterfaceJNI(env, web_rtc) +// ); // todo - protected destructor commented +// std::vector streams_id_c; +// +// getStreamApi(ctx, thiz)->joinStreamRoom( +// ctx.jString2string(stream_room_id), +// webrtc +// ); +// }); +//} +// +//extern "C" +//JNIEXPORT jobject JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreams( +// JNIEnv *env, +// jobject thiz, +// jstring stream_room_id +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(stream_room_id, "Stream room ID")) { +// return nullptr; +// } +// +// jobject result; +// ctx.callResultEndpointApi(&result, [&ctx, &thiz, &env, &stream_room_id] { +// jclass arrayCls = env->FindClass("java/util/ArrayList"); +// jmethodID initArrayMID = env->GetMethodID(arrayCls, "", "()V"); +// jmethodID addToArrayMID = env->GetMethodID(arrayCls, "add", "(Ljava/lang/Object;)Z"); +// +// auto stream_infos_c = getStreamApi(ctx, thiz)->listStreams( +// ctx.jString2string(stream_room_id) +// ); +// jobject array = env->NewObject(arrayCls, initArrayMID); +// for (auto &info_c: stream_infos_c) { +// env->CallBooleanMethod( +// array, +// addToArrayMID, +// privmx::wrapper::streams::streamInfo2Java(ctx, info_c) +// ); +// } +// return array; +// }); +// if (ctx->ExceptionCheck()) { +// return nullptr; +// } +// return result; +//} +// +//extern "C" +//JNIEXPORT void JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unpublishStream( +// JNIEnv *env, +// jobject thiz, +// jobject stream_handle +// // todo - made changes in arguments +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(stream_handle, "Stream Handle")) { +// return; +// } +// +// ctx.callVoidEndpointApi([&ctx, &thiz, &stream_handle]() { +// getStreamApi(ctx, thiz)->unpublishStream( +// parseStreamHandle(ctx, stream_handle) +// ); +// }); +//} +// +//extern "C" +//JNIEXPORT void JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_leaveStreamRoom( +// JNIEnv *env, +// jobject thiz, +// jstring stream_room_id +// // todo - made changes in arguments +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { +// return; +// } +// +// ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id]() { +// getStreamApi(ctx, thiz)->leaveStreamRoom( +// ctx.jString2string(stream_room_id) +// ); +// }); +//} +// +//extern "C" +//JNIEXPORT jobject JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getTurnCredentials( +// JNIEnv *env, +// jobject thiz +//) { +// JniContextUtils ctx(env); +// jobject result; +// ctx.callResultEndpointApi(&result, [&ctx, &env, &thiz] { +// jclass arrayCls = env->FindClass("java/util/ArrayList"); +// jmethodID initArrayMID = env->GetMethodID(arrayCls, "", "()V"); +// jmethodID addToArrayMID = env->GetMethodID(arrayCls, "add", "(Ljava/lang/Object;)Z"); +// +// auto turnCredentialsVector = getStreamApi(ctx, thiz)->getTurnCredentials(); +// jobject array = env->NewObject(arrayCls, initArrayMID); +// for ( +// auto &turnCredentials_c: turnCredentialsVector) { +// env->CallBooleanMethod( +// array, +// addToArrayMID, +// privmx::wrapper::streams::turnCredentials2Java(ctx, turnCredentials_c) +// ); +// } +// +// return array; +// }); +// if (ctx->ExceptionCheck()) { +// return nullptr; +// } +// return result; +//} +// +//extern "C" +//JNIEXPORT jobject JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeFor( +// JNIEnv *env, +// jobject thiz, +// jobject subscription_queries +// // todo - made changes in arguments +//) { +// JniContextUtils ctx(env); +// jobject result; +// ctx.callResultEndpointApi(&result, [&ctx, &env, &thiz, &subscription_queries] { +// jclass arrayListCls = env->FindClass("java/util/ArrayList"); +// jmethodID initMID = env->GetMethodID(arrayListCls, "", "()V"); +// jmethodID addToListMID = env->GetMethodID(arrayListCls, "add", "(Ljava/lang/Object;)Z"); +// +// auto subscription_queries_arr = ctx.jObject2jArray(subscription_queries); +// auto subscription_queries_c = std::vector(); +// +// int length = ctx->GetArrayLength(subscription_queries_arr); +// for (int i = 0; i < length; i++) { +// jobject arrayElement = ctx->GetObjectArrayElement(subscription_queries_arr, i); +// subscription_queries_c.push_back(ctx.jString2string((jstring) arrayElement)); +// } +// +// jobject arrayList = env->NewObject(arrayListCls, initMID); +// auto subscription_ids_c = getStreamApi(ctx, thiz)->subscribeFor( +// subscription_queries_c +// ); +// +// for (auto &id_str: subscription_ids_c) { +// jstring java_id_str = ctx->NewStringUTF(id_str.c_str()); +// env->CallBooleanMethod( +// arrayList, +// addToListMID, +// java_id_str +// ); +// } +// return arrayList; +// +// }); +// if (ctx->ExceptionCheck()) { +// return nullptr; +// } +// return result; +//} +// +//extern "C" +//JNIEXPORT void JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeFrom( +// JNIEnv *env, +// jobject thiz, +// jobject subscription_ids +// // todo - made changes in arguments +//) { +////TODO: Add nullchecks +// JniContextUtils ctx(env); +// if (ctx.nullCheck(subscription_ids, "Subscription ids")) { +// return; +// } +// +// ctx.callVoidEndpointApi([&ctx, &thiz, &subscription_ids]() { +// auto subscription_ids_arr = ctx.jObject2jArray(subscription_ids); +// auto subscription_ids_c = std::vector(); +// +// int length = ctx->GetArrayLength(subscription_ids_arr); +// for (int i = 0; i < length; i++) { +// jobject arrayElement = ctx->GetObjectArrayElement(subscription_ids_arr, i); +// if (ctx.nullCheck(arrayElement, "Subscription ids array elements")) { +// return; +// } +// subscription_ids_c.push_back(ctx.jString2string((jstring) arrayElement)); +// } +// +// getStreamApi(ctx, thiz)->unsubscribeFrom(subscription_ids_c); +// }); +//} +// +//extern "C" +//JNIEXPORT void JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_keyManagement( +// JNIEnv *env, +// jobject thiz, +// jstring stream_room_id, +// jboolean disable +// // todo - made changes in arguments +// +//) { +////TODO: Add nullchecks +// JniContextUtils ctx(env); +// if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { +// return; +// } +// +// ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id, &disable]() { +// getStreamApi(ctx, thiz)->keyManagement( +// ctx.jString2string(stream_room_id), +// disable == JNI_TRUE +// ); +// +// }); +//} +// +//extern "C" +//JNIEXPORT void JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_trickle( +// JNIEnv *env, +// jobject thiz, +// jlong session_id, +// jstring candidate_as_json +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(candidate_as_json, "Candidate as JSON")) { +// return; +// } +// +// ctx.callVoidEndpointApi([&ctx, &thiz, &session_id, &candidate_as_json]() { +// getStreamApi(ctx, thiz)->trickle( +// session_id, +// ctx.jString2string(candidate_as_json) +// ); +// }); +//} +// +//extern "C" +//JNIEXPORT void JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeFromRemoteStreams( +// JNIEnv *env, +// jobject thiz, +// jstring stream_room_id, +// jobject subscriptions_to_remove +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(stream_room_id, "Stream Room ID") || +// ctx.nullCheck(subscriptions_to_remove, "Subscriptions to remove")) { +// return; +// } +// +// ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id, &subscriptions_to_remove]() { +// auto subscriptions_to_remove_arr = ctx.jObject2jArray(subscriptions_to_remove); +// auto subscriptions_to_remove_c = std::vector(); +// +// int length = ctx->GetArrayLength(subscriptions_to_remove_arr); +// for (int i = 0; i < length; i++) { +// jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_to_remove_arr, i); +// if (ctx.nullCheck(arrayElement, "Subscriptions to remove array elements")) { +// return; +// } +// subscriptions_to_remove_c.push_back( +// parseStreamSubscription( +// ctx, +// arrayElement +// ) +// ); +// } +// +// getStreamApi(ctx, thiz)->unsubscribeFromRemoteStreams( +// ctx.jString2string(stream_room_id), +// subscriptions_to_remove_c +// ); +// }); +//} +// +//extern "C" +//JNIEXPORT void JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_modifyRemoteStreamsSubscriptions( +// JNIEnv *env, +// jobject thiz, +// jstring stream_room_id, +// jobject subscriptions_to_add, +// jobject subscriptions_to_remove, +// jobject options +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(stream_room_id, "Stream Room ID") || +// ctx.nullCheck(subscriptions_to_add, "Subscriptions to add") || +// ctx.nullCheck(subscriptions_to_add, "Subscriptions to remove") || +// ctx.nullCheck(options, "Options")) { +// return; +// } +// +// ctx.callVoidEndpointApi( +// [&ctx, &thiz, &stream_room_id, &subscriptions_to_add, &subscriptions_to_remove, &options]() { +// auto subscriptions_to_add_arr = ctx.jObject2jArray(subscriptions_to_remove); +// auto subscriptions_to_remove_arr = ctx.jObject2jArray(subscriptions_to_remove); +// auto subscriptions_to_add_c = std::vector(); +// auto subscriptions_to_remove_c = std::vector(); +// +// int subscriptions_to_add_length = ctx->GetArrayLength(subscriptions_to_add_arr); +// int subscriptions_to_remove_length = ctx->GetArrayLength( +// subscriptions_to_remove_arr); +// +// for (int i = 0; i < subscriptions_to_add_length; i++) { +// jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_to_add_arr, i); +// if (ctx.nullCheck(arrayElement, "Subscriptions to add array elements")) { +// return; +// } +// subscriptions_to_add_c.push_back( +// parseStreamSubscription( +// ctx, +// arrayElement +// ) +// ); +// } +// for (int i = 0; i < subscriptions_to_remove_length; i++) { +// jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_to_remove_arr, +// i); +// if (ctx.nullCheck(arrayElement, "Subscriptions to remove array elements")) { +// return; +// } +// subscriptions_to_remove_c.push_back( +// parseStreamSubscription( +// ctx, +// arrayElement +// ) +// ); +// } +// +// getStreamApi(ctx, thiz)->modifyRemoteStreamsSubscriptions( +// ctx.jString2string(stream_room_id), +// subscriptions_to_add_c, +// subscriptions_to_remove_c, +// parseSettings(ctx, options) +// ); +// }); +//} +// +//extern "C" +//JNIEXPORT void JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeToRemoteStreams( +// JNIEnv *env, +// jobject thiz, +// jstring stream_room_id, +// jobject subscriptions, +// jobject options +//) { +// JniContextUtils ctx(env); +// if (ctx.nullCheck(stream_room_id, "Stream Room ID") || +// ctx.nullCheck(subscriptions, "Subscriptions") || +// ctx.nullCheck(options, "Options")) { +// return; +// } +// +// ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id, &subscriptions, &options]() { +// auto subscriptions_arr = ctx.jObject2jArray(subscriptions); +// auto subscriptions_c = std::vector(); +// +// int length = ctx->GetArrayLength(subscriptions_arr); +// for (int i = 0; i < length; i++) { +// jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_arr, i); +// if (ctx.nullCheck(arrayElement, "Subscriptions array elements")) { +// return; +// } +// subscriptions_c.push_back( +// parseStreamSubscription( +// ctx, +// arrayElement +// ) +// ); +// } +// getStreamApi(ctx, thiz)->subscribeToRemoteStreams( +// ctx.jString2string(stream_room_id), +// subscriptions_c, +// parseSettings(ctx, options) +// ); +// }); +//} +//extern "C" +//JNIEXPORT jobject JNICALL +//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_updateStream( +// JNIEnv *env, +// jobject thiz, +// jobject stream_handle +//) { +// JniContextUtils ctx(env); +// jobject result; +// +// ctx.callResultEndpointApi( +// &result, [ +// &ctx, +// &env, +// &thiz, +// &stream_handle +// ] { +// +// auto stream_handle_c = parseStreamHandle(ctx, stream_handle); +// auto stream_result = getStreamApi(ctx, thiz)->updateStream( +// stream_handle_c +// ); +// +// return privmx::wrapper::streams::streamPublishResult2Java( +// ctx, +// stream_result +// ); +// +// }); +// if (ctx->ExceptionCheck()) { +// return nullptr; +// } +// return result; +//} \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/modules/StreamApi.h b/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/modules/StreamApi.h index 04a5b1ad..3df0ff10 100644 --- a/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/modules/StreamApi.h +++ b/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/modules/StreamApi.h @@ -4,10 +4,10 @@ //#include "../../../../../../../../privmx-endpoint/src/main/cpp/model_native_initializers.h" //#include "../../../../../../../../privmx-endpoint/src/main/cpp/modules/Connection.h" //#include "../../../../../../../../privmx-endpoint/src/main/cpp/modules/EventApi.h" -#include "privmx/endpoint/modules/EventApi.h" -#include "privmx/endpoint/modules/Connection.h" -#include "privmx/endpoint/parsers/model_native_initializers.h" -#include "privmx/endpoint/utils/utils.hpp" +#include "privmx/endpoint/wrapper/modules/EventApi.h" +#include "privmx/endpoint/wrapper/modules/Connection.h" +#include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" +#include "privmx/endpoint/wrapper/utils/utils.hpp" using namespace privmx::endpoint; diff --git a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamSettingsJNI.cpp b/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/modules/StreamSettingsJNI.cpp similarity index 79% rename from jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamSettingsJNI.cpp rename to jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/modules/StreamSettingsJNI.cpp index e9685892..9c7c30cf 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamSettingsJNI.cpp +++ b/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/modules/StreamSettingsJNI.cpp @@ -2,9 +2,6 @@ #include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" #include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h" #include "privmx/endpoint/wrapper/utils/jniUtils.h" -//#include "../utils.hpp" -//#include "StreamApi.h" -//#include "../jniUtils.h" namespace privmx::wrapper::streams { @@ -24,32 +21,32 @@ namespace privmx::wrapper::streams { env->GetJavaVM(&this->javaVM); this->jstreamSettings = env->NewGlobalRef(jstreamSettings); - - this->OnFrame = [this]( - int64_t a, - int64_t b, - const std::shared_ptr &frame, - const std::string &c - ) { - JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( - javaVM, - privmx::wrapper::jni::getPrivmxCallbackThreadName()); - JniContextUtils ctx(env); - }; - - this->OnVideo = [this](const std::string &a) { - JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( - javaVM, - privmx::wrapper::jni::getPrivmxCallbackThreadName()); - JniContextUtils ctx(env); - }; - - this->OnVideoRemove = [this](const std::string &a) { - JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( - javaVM, - privmx::wrapper::jni::getPrivmxCallbackThreadName()); - JniContextUtils ctx(env); - }; +// +// this->OnFrame = [this]( +// int64_t a, +// int64_t b, +// const std::shared_ptr &frame, +// const std::string &c +// ) { +// JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( +// javaVM, +// privmx::wrapper::jni::getPrivmxCallbackThreadName()); +// JniContextUtils ctx(env); +// }; +// +// this->OnVideo = [this](const std::string &a) { +// JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( +// javaVM, +// privmx::wrapper::jni::getPrivmxCallbackThreadName()); +// JniContextUtils ctx(env); +// }; +// +// this->OnVideoRemove = [this](const std::string &a) { +// JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( +// javaVM, +// privmx::wrapper::jni::getPrivmxCallbackThreadName()); +// JniContextUtils ctx(env); +// }; } // void StreamSettingsJNI::StreamSettingsJNI::onVideo2( diff --git a/jni-wrappers/privmx-endpoint/CMakeLists.txt b/jni-wrappers/privmx-endpoint/CMakeLists.txt index 91ce8815..ee4cfeb9 100644 --- a/jni-wrappers/privmx-endpoint/CMakeLists.txt +++ b/jni-wrappers/privmx-endpoint/CMakeLists.txt @@ -29,11 +29,9 @@ add_library(${CMAKE_PROJECT_NAME} SHARED ${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/modules/ExtKey.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/modules/Utils.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/modules/KvdbApi.cpp - src/cpp/streams/modules/StreamApiLow.cpp - src/cpp/streams/modules/WebRTCInterfaceJNI.cpp - src/cpp/streams/modules/StreamSettingsJNI.cpp - src/cpp/streams/parsers/parser.cpp - src/cpp/streams/parsers/model_native_initializers.cpp + src/cpp/modules/WebRTCInterfaceJNI.cpp + src/cpp/modules/StreamSettingsJNI.cpp + src/cpp/modules/StreamApiLow.cpp ) target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/includes) diff --git a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/parsers/model_native_initializers.h b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/parsers/model_native_initializers.h index a5a1423b..441e079e 100644 --- a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/parsers/model_native_initializers.h +++ b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/parsers/model_native_initializers.h @@ -37,191 +37,283 @@ #include "privmx/endpoint/kvdb/Events.hpp" #include "privmx/endpoint/stream/Types.hpp" #include "privmx/endpoint/stream/WebRTCInterface.hpp" +#include "privmx/endpoint/stream/Events.hpp" namespace privmx { namespace wrapper { - //Core - jobject - itemPolicy2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ItemPolicy itemPolicy - ); + //Core + jobject + itemPolicy2Java( + JniContextUtils &ctx, + privmx::endpoint::core::ItemPolicy itemPolicy + ); - jobject containerPolicyWithoutItem2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContainerPolicyWithoutItem containerPolicyWithoutItem - ); + jobject containerPolicyWithoutItem2Java( + JniContextUtils &ctx, + privmx::endpoint::core::ContainerPolicyWithoutItem containerPolicyWithoutItem + ); - jobject containerPolicy2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContainerPolicy containerPolicy - ); + jobject containerPolicy2Java( + JniContextUtils &ctx, + privmx::endpoint::core::ContainerPolicy containerPolicy + ); - // CollectionItemChange - jobject collectionItemChange2Java(JniContextUtils &ctx, privmx::endpoint::core::CollectionItemChange collectionItemChange_c); + // CollectionItemChange + jobject collectionItemChange2Java(JniContextUtils &ctx, privmx::endpoint::core::CollectionItemChange collectionItemChange_c); - //Context - jobject context2Java(JniContextUtils &ctx, privmx::endpoint::core::Context context_c); + //Context + jobject context2Java(JniContextUtils &ctx, privmx::endpoint::core::Context context_c); - // UserWithPubKey - jobject userWithPubKey2Java(JniContextUtils &ctx, - privmx::endpoint::core::UserWithPubKey userWithPubKey); + // UserWithPubKey + jobject userWithPubKey2Java(JniContextUtils &ctx, + privmx::endpoint::core::UserWithPubKey userWithPubKey); - //UserInfo - jobject userInfo2Java(JniContextUtils &ctx, privmx::endpoint::core::UserInfo userInfo); + //UserInfo + jobject userInfo2Java(JniContextUtils &ctx, privmx::endpoint::core::UserInfo userInfo); - jobject userStatusChange2Java(JniContextUtils &ctx, - privmx::endpoint::core::UserStatusChange userStatusChange); + jobject userStatusChange2Java(JniContextUtils &ctx, + privmx::endpoint::core::UserStatusChange userStatusChange); - // UserWithAction - jobject userWithAction2Java(JniContextUtils &ctx, privmx::endpoint::core::UserWithAction userWithAction); + // UserWithAction + jobject userWithAction2Java(JniContextUtils &ctx, privmx::endpoint::core::UserWithAction userWithAction); - jobject bridgeIdentity2Java(JniContextUtils &ctx, - privmx::endpoint::core::BridgeIdentity bridgeIdentity_c); + jobject bridgeIdentity2Java(JniContextUtils &ctx, + privmx::endpoint::core::BridgeIdentity bridgeIdentity_c); - jobject verificationRequest2Java(JniContextUtils &ctx, - privmx::endpoint::core::VerificationRequest verificationRequest_c); + jobject verificationRequest2Java(JniContextUtils &ctx, + privmx::endpoint::core::VerificationRequest verificationRequest_c); - //Crypto - jobject extKey2Java(JniContextUtils &ctx, privmx::endpoint::crypto::ExtKey extKey_c); + //Crypto + jobject extKey2Java(JniContextUtils &ctx, privmx::endpoint::crypto::ExtKey extKey_c); - jobject BIP392Java(JniContextUtils &ctx, privmx::endpoint::crypto::BIP39_t BIP39_c); + jobject BIP392Java(JniContextUtils &ctx, privmx::endpoint::crypto::BIP39_t BIP39_c); - //Threads - jobject thread2Java(JniContextUtils &ctx, privmx::endpoint::thread::Thread thread_c); + //Threads + jobject thread2Java(JniContextUtils &ctx, privmx::endpoint::thread::Thread thread_c); - //Messages - jobject serverMessageInfo2Java(JniContextUtils &ctx, - privmx::endpoint::thread::ServerMessageInfo serverMessageInfo_c); + //Messages + jobject serverMessageInfo2Java(JniContextUtils &ctx, + privmx::endpoint::thread::ServerMessageInfo serverMessageInfo_c); - jobject message2Java(JniContextUtils &ctx, privmx::endpoint::thread::Message message_c); + jobject message2Java(JniContextUtils &ctx, privmx::endpoint::thread::Message message_c); - //Store - jobject store2Java(JniContextUtils &ctx, privmx::endpoint::store::Store store_c); + //Store + jobject store2Java(JniContextUtils &ctx, privmx::endpoint::store::Store store_c); - //Inbox - jobject - filesConfig2Java(JniContextUtils &ctx, privmx::endpoint::inbox::FilesConfig filesConfig_c); + //Inbox + jobject + filesConfig2Java(JniContextUtils &ctx, privmx::endpoint::inbox::FilesConfig filesConfig_c); - jobject inbox2Java(JniContextUtils &ctx, privmx::endpoint::inbox::Inbox inbox_c); + jobject inbox2Java(JniContextUtils &ctx, privmx::endpoint::inbox::Inbox inbox_c); - jobject - inboxEntry2Java(JniContextUtils &ctx, privmx::endpoint::inbox::InboxEntry inboxEntry_c); + jobject + inboxEntry2Java(JniContextUtils &ctx, privmx::endpoint::inbox::InboxEntry inboxEntry_c); - jobject inboxPublicView2Java(JniContextUtils &ctx, - privmx::endpoint::inbox::InboxPublicView inboxPublicView_c); + jobject inboxPublicView2Java(JniContextUtils &ctx, + privmx::endpoint::inbox::InboxPublicView inboxPublicView_c); - //Files - jobject serverFileInfo2Java(JniContextUtils &ctx, - privmx::endpoint::store::ServerFileInfo serverFileInfo_c); + //Files + jobject serverFileInfo2Java(JniContextUtils &ctx, + privmx::endpoint::store::ServerFileInfo serverFileInfo_c); - jobject file2Java(JniContextUtils &ctx, privmx::endpoint::store::File file_c); + jobject file2Java(JniContextUtils &ctx, privmx::endpoint::store::File file_c); - jobject fileChange2Java(JniContextUtils &ctx, privmx::endpoint::store::FileChange file_change_c); + jobject fileChange2Java(JniContextUtils &ctx, privmx::endpoint::store::FileChange file_change_c); - //Event - jobject contextUsersStatusChangedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContextUsersStatusChangedEventData contextUsersStatusChangedEventData_c - ); + //Event + jobject contextUsersStatusChangedEventData2Java( + JniContextUtils &ctx, + privmx::endpoint::core::ContextUsersStatusChangedEventData contextUsersStatusChangedEventData_c + ); - jobject contextUserEventData2Java(JniContextUtils &ctx, - privmx::endpoint::core::ContextUserEventData contextUserEventData_c); + jobject contextUserEventData2Java(JniContextUtils &ctx, + privmx::endpoint::core::ContextUserEventData contextUserEventData_c); - jobject collectionChangedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::core::CollectionChangedEventData collectionChangedEventData_c); + jobject collectionChangedEventData2Java(JniContextUtils &ctx, + privmx::endpoint::core::CollectionChangedEventData collectionChangedEventData_c); - jobject storeDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::store::StoreDeletedEventData storeDeletedEventData_c); + jobject storeDeletedEventData2Java(JniContextUtils &ctx, + privmx::endpoint::store::StoreDeletedEventData storeDeletedEventData_c); - jobject storeFileUpdatedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::store::StoreFileUpdatedEventData storeFileUpdatedEventData_c); + jobject storeFileUpdatedEventData2Java(JniContextUtils &ctx, + privmx::endpoint::store::StoreFileUpdatedEventData storeFileUpdatedEventData_c); - jobject storeFileDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::store::StoreFileDeletedEventData storeFileDeletedEventData_c); + jobject storeFileDeletedEventData2Java(JniContextUtils &ctx, + privmx::endpoint::store::StoreFileDeletedEventData storeFileDeletedEventData_c); - jobject storeStatsChangedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::store::StoreStatsChangedEventData storeStatsChangedEventData_c); + jobject storeStatsChangedEventData2Java(JniContextUtils &ctx, + privmx::endpoint::store::StoreStatsChangedEventData storeStatsChangedEventData_c); - jobject threadDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::thread::ThreadDeletedEventData threadDeletedEventData_c); + jobject threadDeletedEventData2Java(JniContextUtils &ctx, + privmx::endpoint::thread::ThreadDeletedEventData threadDeletedEventData_c); - jobject threadDeletedMessageEventData2Java(JniContextUtils &ctx, - privmx::endpoint::thread::ThreadDeletedMessageEventData threadDeletedMessageEventData_c); + jobject threadDeletedMessageEventData2Java(JniContextUtils &ctx, + privmx::endpoint::thread::ThreadDeletedMessageEventData threadDeletedMessageEventData_c); - jobject threadStatsEventData2Java(JniContextUtils &ctx, - privmx::endpoint::thread::ThreadStatsEventData threadStatsEventData_c); + jobject threadStatsEventData2Java(JniContextUtils &ctx, + privmx::endpoint::thread::ThreadStatsEventData threadStatsEventData_c); - jobject inboxDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::inbox::InboxDeletedEventData inboxDeletedEventData_c); + jobject inboxDeletedEventData2Java(JniContextUtils &ctx, + privmx::endpoint::inbox::InboxDeletedEventData inboxDeletedEventData_c); - jobject inboxEntryDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::inbox::InboxEntryDeletedEventData inboxEntryDeletedEventData_c); + jobject inboxEntryDeletedEventData2Java(JniContextUtils &ctx, + privmx::endpoint::inbox::InboxEntryDeletedEventData inboxEntryDeletedEventData_c); - jobject contextCustomEventData2Java(JniContextUtils &ctx, - privmx::endpoint::event::ContextCustomEventData contextCustomEventData_c - ); + jobject contextCustomEventData2Java(JniContextUtils &ctx, + privmx::endpoint::event::ContextCustomEventData contextCustomEventData_c + ); - jobject kvdbDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::kvdb::KvdbDeletedEventData kvdbDeletedEventData_c - ); + jobject kvdbDeletedEventData2Java(JniContextUtils &ctx, + privmx::endpoint::kvdb::KvdbDeletedEventData kvdbDeletedEventData_c + ); - jobject kvdbStatsEventData2Java(JniContextUtils &ctx, - privmx::endpoint::kvdb::KvdbStatsEventData kvdbStatsEventData_c - ); + jobject kvdbStatsEventData2Java(JniContextUtils &ctx, + privmx::endpoint::kvdb::KvdbStatsEventData kvdbStatsEventData_c + ); - jobject kvdbDeletedEntryEventData2Java(JniContextUtils &ctx, - privmx::endpoint::kvdb::KvdbDeletedEntryEventData kvdbDeletedEntryEventData_c - ); + jobject kvdbDeletedEntryEventData2Java(JniContextUtils &ctx, + privmx::endpoint::kvdb::KvdbDeletedEntryEventData kvdbDeletedEntryEventData_c + ); - //Kvdb - jobject kvdb2Java(JniContextUtils &ctx, privmx::endpoint::kvdb::Kvdb kvdb_c); + //Kvdb + jobject kvdb2Java(JniContextUtils &ctx, privmx::endpoint::kvdb::Kvdb kvdb_c); - jobject serverKvdbEntryInfo2Java(JniContextUtils &ctx, - privmx::endpoint::kvdb::ServerKvdbEntryInfo serverItemInfo_c); + jobject serverKvdbEntryInfo2Java(JniContextUtils &ctx, + privmx::endpoint::kvdb::ServerKvdbEntryInfo serverItemInfo_c); - jobject kvdbEntry2Java(JniContextUtils &ctx, privmx::endpoint::kvdb::KvdbEntry entry_c); + jobject kvdbEntry2Java(JniContextUtils &ctx, privmx::endpoint::kvdb::KvdbEntry entry_c); - //Stream -// jobject streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c); -// -// jobject stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c); -// -// jobject deviceType2Java(JniContextUtils &ctx,privmx::endpoint::stream::DeviceType deviceType_c); -// -// jobject mediaDevice2Java(JniContextUtils &ctx, privmx::endpoint::stream::MediaDevice mediaDevice_c); -// -// jobject streamHandle2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamHandle streamHandle_c); -// -// jobject streamInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamInfo streamInfo_c); -// -// jobject streamTrackInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c); -// -// jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c); -// -// jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c); -// -// jobject remoteStreamId2Java(JniContextUtils &ctx, privmx::endpoint::stream::RemoteStreamId remoteStreamId_c); -// -// jobject frame2Java(JniContextUtils &ctx, privmx::endpoint::stream::Frame &frame_c); -// -// jobject keyType2Java(JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c); -// -// jobject key2Java(JniContextUtils &ctx, privmx::endpoint::stream::Key key_c); -// -// jobject -// streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c); -// -// jobject -// stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c); -// -// jobject -// turnCredentials2Java(JniContextUtils &ctx, privmx::endpoint::stream::TurnCredentials turnCredentials_c); -// -// jobject -// sdpWithTypeModel2Java(JniContextUtils &ctx, privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c); + //Streams + jobject streamRoom2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamRoom streamRoom_c + ); + + jobject stream2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::Stream stream_c + ); + + jobject deviceType2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::DeviceType deviceType_c + ); + + jobject mediaDevice2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::MediaDevice mediaDevice_c + ); + jobject streamHandle2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamHandle streamHandle_c + ); + + jobject streamTrackInfo2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c + ); + + jobject streamInfo2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamInfo streamInfo_c + ); + + jobject publishedStreamData2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::PublishedStreamData publishedStreamData_c + ); + + jobject streamPublishResult2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamPublishResult streamPublishResult_c + ); + + jobject remoteStreamId2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::RemoteStreamId remoteStreamId_c + ); + + jobject frame2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::Frame &frame_c + ); + + jobject keyType2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::KeyType keyType_c + ); + + jobject key2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::Key key_c + ); + + jobject streamRoom2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamRoom streamRoom_c + ); + + jobject turnCredentials2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::TurnCredentials turnCredentials_c + ); + + 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 + ); } // wrapper } // privmx 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..0e5c2acc 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/stream/webrtc/Types.hpp" std::vector usersToVector(JniContextUtils &ctx, jobjectArray users); @@ -35,6 +37,22 @@ privmx::endpoint::core::ItemPolicy parseItemPolicy(JniContextUtils &ctx, jobject privmx::endpoint::inbox::FilesConfig parseFilesConfig(JniContextUtils &ctx, jobject filesConfig); +// streams +privmx::endpoint::stream::DeviceType parseDeviceType(JniContextUtils &ctx, jobject type); + +privmx::endpoint::stream::MediaDevice parseMediaDevice(JniContextUtils &ctx, jobject mediaDevice); + +privmx::endpoint::stream::StreamHandle parseStreamHandle(JniContextUtils &ctx, jobject streamHandle); + +privmx::endpoint::stream::Settings parseSettings(JniContextUtils &ctx, jobject settings); + +privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env, jobject streamSettings); + +privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription); + +privmx::endpoint::stream::SdpWithTypeModel parseSdpWithTypeModel(JniContextUtils &ctx, jobject sdpWithTypeModel); + + 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/modules/StreamSettingsJNI.h b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h deleted file mode 100644 index 372d1b8c..00000000 --- a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include - - -#ifndef PRIVMXENDPOINT_STREAMSETTINGSJNI_H -#define PRIVMXENDPOINT_STREAMSETTINGSJNI_H - -namespace privmx::wrapper::streams { - struct StreamSettingsJNI : privmx::endpoint::stream::StreamSettings { - public: - StreamSettingsJNI(JNIEnv *env, jobject jstreamSettings); - -// StreamSettingsJNI(JNIEnv *env); - ~StreamSettingsJNI(); - - void onFrame2(JNIEnv *env, jobject a, jobject b, jobject c, jstring d); - - std::optional> OnVideo; -// void OnVideo(JNIEnv *env, jobject a) override; - - void onVideoRemove2(JNIEnv *env, jobject a); - - private: - jobject jstreamSettings; - JavaVM *javaVM; - jclass cls; - }; -}; -#endif //PRIVMXENDPOINT_STREAMSETTINGSJNI_H diff --git a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h deleted file mode 100644 index bd4403b4..00000000 --- a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h +++ /dev/null @@ -1,68 +0,0 @@ -// -// Created by Dawid Jenczewski on 13/02/2025. -// - -#ifndef PRIVMXENDPOINT_WEBRTCINTERFACEJNI_H -#define PRIVMXENDPOINT_WEBRTCINTERFACEJNI_H - -#include "jni.h" -#include - -using namespace privmx::endpoint::stream; - -class WebRTCInterfaceJNI : public WebRTCInterface { -public: - WebRTCInterfaceJNI(JNIEnv *env, jobject jwebRTCInterface); - -// std::string createOfferAndSetLocalDescription() override; -// -// std::string -// createAnswerAndSetDescriptions(const std::string &sdp, const std::string &type) override; -// -// void setAnswerAndSetRemoteDescription(const std::string &sdp, const std::string &type) override; -// -// void close() override; -// -// void updateKeys(const std::vector &keys) override; - - std::string createOfferAndSetLocalDescription(const std::string &streamRoomId) override; - - std::string createAnswerAndSetDescriptions( - const std::string &streamRoomId, - const std::string &sdp, - const std::string &type - ) override; - - void setAnswerAndSetRemoteDescription( - const std::string &streamRoomId, - const std::string &sdp, - const std::string &type - ) override; - - void updateSessionId( - const std::string &streamRoomId, - const int64_t sessionId, - const std::string &connectionType - ) override; - - void close(const std::string &streamRoomId) override; - - void updateKeys( - const std::string &streamRoomId, - const std::vector &keys - ) override; - - WebRTCInterfaceJNI (const WebRTCInterfaceJNI&) = delete; - WebRTCInterfaceJNI& operator= (const WebRTCInterfaceJNI&) = delete; -//protected: - ~WebRTCInterfaceJNI() override = default; - -private: - jobject jwebRTCInterface; - JavaVM *javaVM; - - JNIEnv *AttachCurrentThreadIfNeeded(); -}; - - -#endif //PRIVMXENDPOINT_WEBRTCINTERFACEJNI_H 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 deleted file mode 100644 index 772c19dc..00000000 --- a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h +++ /dev/null @@ -1,70 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -//#ifndef PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H -//#define PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H - -#include -#include "privmx/endpoint/wrapper/utils/utils.hpp" -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/stream/Types.hpp" -#include "privmx/endpoint/stream/webrtc/Types.hpp" -#include "privmx/endpoint/stream/StreamApi.hpp" -#include "privmx/endpoint/stream/StreamApiLow.hpp" -#include "privmx/endpoint/stream/WebRTCInterface.hpp" -#include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" - -namespace privmx { - namespace wrapper { - namespace streams { - //Stream - jobject streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c); - - jobject stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c); - - jobject deviceType2Java(JniContextUtils &ctx, privmx::endpoint::stream::DeviceType deviceType_c); - - jobject mediaDevice2Java(JniContextUtils &ctx, privmx::endpoint::stream::MediaDevice mediaDevice_c); - - jobject streamHandle2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamHandle streamHandle_c); - - jobject streamTrackInfo2Java(JniContextUtils &ctx,privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c); - - jobject streamInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamInfo streamInfo_c); - - jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c); - - jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c); - - jobject remoteStreamId2Java(JniContextUtils &ctx, privmx::endpoint::stream::RemoteStreamId remoteStreamId_c); - - jobject frame2Java(JniContextUtils &ctx, privmx::endpoint::stream::Frame &frame_c); - - jobject keyType2Java(JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c); - - jobject key2Java(JniContextUtils &ctx, privmx::endpoint::stream::Key key_c); - - jobject - streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c); - - jobject - stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c); - - jobject - turnCredentials2Java(JniContextUtils &ctx, privmx::endpoint::stream::TurnCredentials turnCredentials_c); - - jobject - sdpWithTypeModel2Java(JniContextUtils &ctx, privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c); - } // streams - } // wrapper -} // privmx - -//#endif //PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H diff --git a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/parser.h b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/parser.h deleted file mode 100644 index f9421230..00000000 --- a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/streams/parsers/parser.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -//#ifndef PRIVMX_POCKET_LIB_PARSER_H -//#define PRIVMX_POCKET_LIB_PARSER_H - -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/wrapper/utils/utils.hpp" -#include "privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h" -#include -#include "model_native_initializers.h" - -// streams -privmx::endpoint::stream::DeviceType parseDeviceType(JniContextUtils &ctx, jobject type); - -privmx::endpoint::stream::MediaDevice parseMediaDevice(JniContextUtils &ctx, jobject mediaDevice); - -privmx::endpoint::stream::StreamHandle parseStreamHandle(JniContextUtils &ctx, jobject streamHandle); - -privmx::endpoint::stream::Settings parseSettings(JniContextUtils &ctx, jobject settings); - -privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env, jobject streamSettings); - -privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription); - -//#endif //PRIVMX_POCKET_LIB_PARSER_H diff --git a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp b/jni-wrappers/privmx-endpoint/src/cpp/modules/StreamApiLow.cpp similarity index 89% rename from jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp rename to jni-wrappers/privmx-endpoint/src/cpp/modules/StreamApiLow.cpp index 8d7e7048..ca5814bc 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/StreamApiLow.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/modules/StreamApiLow.cpp @@ -9,11 +9,8 @@ #include "privmx/endpoint/wrapper/modules/Connection.h" #include "privmx/endpoint/wrapper/modules/EventApi.h" -#include "privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h" -#include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h" -#include "privmx/endpoint/wrapper/streams/parsers/parser.h" - -//#include +#include "privmx/endpoint/wrapper/modules/WebRTCInterfaceJNI.h" +#include "privmx/endpoint/stream/StreamApiLow.hpp" using namespace privmx::endpoint::stream; using namespace privmx::endpoint; @@ -312,7 +309,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreamRo for (auto &streamRoom_c: streamRooms_c.readItems) { env->CallBooleanMethod(array, addToArrayMID, - privmx::wrapper::streams::streamRoom2Java( + privmx::wrapper::streamRoom2Java( ctx, streamRoom_c ) @@ -346,7 +343,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getStreamRoo jobject result; ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_room_id] { - return privmx::wrapper::streams::streamRoom2Java( + return privmx::wrapper::streamRoom2Java( ctx, getStreamApi(ctx, thiz)->getStreamRoom( ctx.jString2string(stream_room_id) @@ -392,7 +389,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStream jobject result; ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_room_id] { - return privmx::wrapper::streams::streamHandle2Java( + return privmx::wrapper::streamHandle2Java( ctx, getStreamApi(ctx, thiz)->createStream( ctx.jString2string(stream_room_id) @@ -424,12 +421,10 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_publishStrea auto result = getStreamApi(ctx, thiz)->publishStream( parseStreamHandle(ctx, stream_handle) ); - return nullptr; - //TODO: Return result -// return privmx::wrapper::streams::streamPublishResult2Java( -// ctx, -// result -// ); + return privmx::wrapper::streamPublishResult2Java( + ctx, + result + ); }); if (ctx->ExceptionCheck()) { return nullptr; @@ -489,7 +484,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreams( env->CallBooleanMethod( array, addToArrayMID, - privmx::wrapper::streams::streamInfo2Java(ctx, info_c) + privmx::wrapper::streamInfo2Java(ctx, info_c) ); } return array; @@ -560,7 +555,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getTurnCrede env->CallBooleanMethod( array, addToArrayMID, - privmx::wrapper::streams::turnCredentials2Java(ctx, turnCredentials_c) + privmx::wrapper::turnCredentials2Java(ctx, turnCredentials_c) ); } @@ -649,6 +644,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( @@ -838,3 +865,62 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeToR ); }); } +extern "C" +JNIEXPORT jobject JNICALL +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_updateStream( + JNIEnv *env, + jobject thiz, + jobject stream_handle +) { + JniContextUtils ctx(env); + if (ctx.nullCheck(stream_handle, "Stream Handle")) { + return nullptr; + } + + jobject result; + + ctx.callResultEndpointApi( + &result, [ + &ctx, + &env, + &thiz, + &stream_handle + ] { + + auto stream_handle_c = parseStreamHandle(ctx, stream_handle); + auto stream_result = getStreamApi(ctx, thiz)->updateStream( + stream_handle_c + ); + + return privmx::wrapper::streamPublishResult2Java( + ctx, + stream_result + ); + + }); + if (ctx->ExceptionCheck()) { + return nullptr; + } + return result; +} +extern "C" +JNIEXPORT void JNICALL +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_acceptOfferOnReconfigure( + JNIEnv *env, + jobject thiz, + jlong session_id, + jobject sdp +) { + JniContextUtils ctx(env); + if (ctx.nullCheck(sdp, " SDP")) { + return; + } + + ctx.callVoidEndpointApi([&ctx, &thiz, &session_id, &sdp]() { + + getStreamApi(ctx, thiz)->acceptOfferOnReconfigure( + session_id, + parseSdpWithTypeModel(ctx, sdp) + ); + }); +} \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/WebRTCInterfaceJNI.cpp b/jni-wrappers/privmx-endpoint/src/cpp/modules/WebRTCInterfaceJNI.cpp similarity index 97% rename from jni-wrappers/privmx-endpoint/src/cpp/streams/modules/WebRTCInterfaceJNI.cpp rename to jni-wrappers/privmx-endpoint/src/cpp/modules/WebRTCInterfaceJNI.cpp index 880be79e..ecf618e9 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/modules/WebRTCInterfaceJNI.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/modules/WebRTCInterfaceJNI.cpp @@ -2,12 +2,11 @@ // Created by Dawid Jenczewski on 13/02/2025. // -#include "privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h" +#include "privmx/endpoint/wrapper/modules/WebRTCInterfaceJNI.h" #include "privmx/endpoint/wrapper/utils/jniUtils.h" #include "privmx/endpoint/wrapper/utils/utils.hpp" #include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" -#include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h" #include JNIEnv *WebRTCInterfaceJNI::AttachCurrentThreadIfNeeded() { @@ -224,7 +223,7 @@ void WebRTCInterfaceJNI::updateKeys( env->CallBooleanMethod( jKeysArray, addToArrayMID, - privmx::wrapper::streams::key2Java(ctx, key_c) + privmx::wrapper::key2Java(ctx, key_c) ); } env->CallVoidMethod( diff --git a/jni-wrappers/privmx-endpoint/src/cpp/parsers/model_native_initializers.cpp b/jni-wrappers/privmx-endpoint/src/cpp/parsers/model_native_initializers.cpp index c73794ad..1b8d5395 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/parsers/model_native_initializers.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/parsers/model_native_initializers.cpp @@ -1468,561 +1468,804 @@ namespace privmx { } - //Streams - - jobject keyType2Java(JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c) { - jclass keyTypeClass = ctx.findClass("com/simplito/java/privmx_endpoint/model/KeyType"); - jfieldID caseFieldId = nullptr; - switch (keyType_c) { - case privmx::endpoint::stream::KeyType::LOCAL: - caseFieldId = ctx->GetStaticFieldID( - keyTypeClass, - "LOCAL", - "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); - break; - default: - caseFieldId = ctx->GetStaticFieldID( - keyTypeClass, - "REMOTE", - "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); - break; - } - return ctx->GetStaticObjectField(keyTypeClass, caseFieldId); + //Streams + jobject keyType2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::KeyType keyType_c + ) { + jclass keyTypeClass = ctx.findClass("com/simplito/java/privmx_endpoint/model/KeyType"); + jfieldID caseFieldId = nullptr; + switch (keyType_c) { + case privmx::endpoint::stream::KeyType::LOCAL: + caseFieldId = ctx->GetStaticFieldID( + keyTypeClass, + "LOCAL", + "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); + break; + default: + caseFieldId = ctx->GetStaticFieldID( + keyTypeClass, + "REMOTE", + "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); + break; + } + return ctx->GetStaticObjectField(keyTypeClass, caseFieldId); + } + + jobject key2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::Key key_c + ) { + jclass keyCls = ctx.findClass( + "com/simplito/java/privmx_endpoint/model/Key"); + jmethodID initKeyMID = ctx->GetMethodID( + keyCls, + "", + "(Ljava/lang/String;" + "[B" + "Lcom/simplito/java/privmx_endpoint/model/KeyType;" + ")V" + ); + + jbyteArray jKey = ctx->NewByteArray(key_c.key.size()); + ctx->SetByteArrayRegion(jKey, 0, key_c.key.size(), (jbyte *) key_c.key.data()); + + return ctx->NewObject( + keyCls, + initKeyMID, + ctx->NewStringUTF(key_c.keyId.c_str()), + jKey, + keyType2Java(ctx, key_c.type) + ); + } + + jobject stream2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::Stream stream_c + ) { + jclass streamCls = ctx.findClass( + "com/simplito/java/privmx_endpoint/model/Stream"); + jmethodID initStreamMID = ctx->GetMethodID( + streamCls, + "", + "(" + "Ljava/lang/Long;" //streamId + "Ljava/lang/String;" //userId + ")V" + ); + return ctx->NewObject( + streamCls, + initStreamMID, + ctx.long2jLong(stream_c.streamId), + ctx->NewStringUTF(stream_c.userId.c_str()) + ); + } + + jobject + turnCredentials2Java( + JniContextUtils &ctx, + + privmx::endpoint::stream::TurnCredentials turnCredentials_c + ) { + jclass turnCredentialsCls = ctx.findClass( + "com/simplito/java/privmx_endpoint/model/TurnCredentials"); + jmethodID initTurnCredentialsMID = ctx->GetMethodID( + turnCredentialsCls, + "", + "(" + "Ljava/lang/String;" //url + "Ljava/lang/String;" //username + "Ljava/lang/String;" //password + "Ljava/lang/Long;" //expirationTime + ")V" + ); + return ctx->NewObject( + turnCredentialsCls, + initTurnCredentialsMID, + ctx->NewStringUTF(turnCredentials_c.url.c_str()), + ctx->NewStringUTF(turnCredentials_c.username.c_str()), + ctx->NewStringUTF(turnCredentials_c.password.c_str()), + ctx.long2jLong(turnCredentials_c.expirationTime) + ); + } + + jobject + sdpWithTypeModel2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c + ) { + jclass sdpWithTypeModelCls = ctx.findClass( + "com/simplito/java/privmx_endpoint/model/stream/SdpWithTypeModel"); + jmethodID initSdpWithTypeModelMID = ctx->GetMethodID( + sdpWithTypeModelCls, + "", + "(" + "Ljava/lang/String;" //url + "Ljava/lang/String;" //username + ")V" + ); + return ctx->NewObject( + sdpWithTypeModelCls, + initSdpWithTypeModelMID, + ctx->NewStringUTF(sdpWithTypeModel_c.sdp.c_str()), + ctx->NewStringUTF(sdpWithTypeModel_c.type.c_str()) + ); + } + + // Stream + jobject streamRoom2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamRoom streamRoom_c + ) { + jclass itemCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/StreamRoom"); + jmethodID initItemMID = ctx->GetMethodID( + itemCls, + "", + "(" + "Ljava/lang/String;" // contextId + "Ljava/lang/String;" // streamRoomId + "Ljava/lang/Long;" // createDate + "Ljava/lang/String;" // creator + "Ljava/lang/Long;" // lastModificationDate + "Ljava/lang/String;" // lastModifier + "Ljava/util/List;" // users + "Ljava/util/List;" // managers + "Ljava/lang/Long;" // version + "[B" // publicMeta + "[B" // privateMeta + "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" // policy + "Ljava/lang/Long;" // statusCode + "Ljava/lang/Long;" // schemaVersion + ")V" + ); + + jbyteArray publicMeta = ctx->NewByteArray(streamRoom_c.publicMeta.size()); + jbyteArray privateMeta = ctx->NewByteArray(streamRoom_c.privateMeta.size()); + + ctx->SetByteArrayRegion(publicMeta, 0, streamRoom_c.publicMeta.size(), + (jbyte *) streamRoom_c.publicMeta.data()); + ctx->SetByteArrayRegion(privateMeta, 0, streamRoom_c.privateMeta.size(), + (jbyte *) streamRoom_c.privateMeta.data()); + + jobject users = vectorTojArray(ctx, streamRoom_c.users, string2jobject); + jobject managers = vectorTojArray(ctx, streamRoom_c.managers, string2jobject); + + return ctx->NewObject( + itemCls, + initItemMID, + ctx->NewStringUTF(streamRoom_c.contextId.c_str()), + ctx->NewStringUTF(streamRoom_c.streamRoomId.c_str()), + ctx.long2jLong(streamRoom_c.createDate), + ctx->NewStringUTF(streamRoom_c.creator.c_str()), + ctx.long2jLong(streamRoom_c.lastModificationDate), + ctx->NewStringUTF(streamRoom_c.lastModifier.c_str()), + users, + managers, + ctx.long2jLong(streamRoom_c.version), + publicMeta, + privateMeta, + privmx::wrapper::containerPolicy2Java(ctx, streamRoom_c.policy), + ctx.long2jLong(streamRoom_c.statusCode), + ctx.long2jLong(streamRoom_c.schemaVersion) + ); + } + + jobject deviceType2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::DeviceType deviceType_c + ) { + jclass itemCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/DeviceType"); + + jmethodID valuesMID = ctx->GetStaticMethodID(itemCls, "values", + "()[Lcom/simplito/java/privmx_endpoint/model/DeviceType;"); + + jobjectArray enumValues = (jobjectArray) ctx->CallStaticObjectMethod(itemCls, + valuesMID); + + return (jobject) ctx->GetObjectArrayElement(enumValues, (int) deviceType_c); + } + + + jobject mediaDevice2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::MediaDevice mediaDevice_c + ) { + jclass itemCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/MediaDevice"); + + jmethodID initItemMID = ctx->GetMethodID( + itemCls, + "", + "(" + "Ljava/lang/String;" // name + "Ljava/lang/String;" // id + "Lcom/simplito/java/privmx_endpoint/model/DeviceType;" // type + ")V" + ); + + return ctx->NewObject( + itemCls, + initItemMID, + ctx->NewStringUTF(mediaDevice_c.name.c_str()), + ctx->NewStringUTF(mediaDevice_c.id.c_str()), + deviceType2Java(ctx, mediaDevice_c.type) + + ); + } + + jobject streamHandle2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamHandle streamHandle_c + ) { + jclass itemCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/StreamHandle"); + + jmethodID initItemMID = ctx->GetMethodID( + itemCls, + "", + "(" + "Ljava/lang/Long;" // value + ")V" + ); + + return ctx->NewObject( + itemCls, + initItemMID, + ctx.long2jLong(streamHandle_c) + ); + } + + jobject streamTrackInfo2Java( + JniContextUtils &ctx, + privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c + ) { + jclass itemCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/StreamTrackInfo"); + + jmethodID initItemMID = ctx->GetMethodID( + itemCls, + "", + "(" + "Ljava/lang/String;" // type + "Ljava/lang/Long;" // mindex + "Ljava/lang/String;" // mid + "Ljava/lang/Boolean;" // disabled [optional] + "Ljava/lang/String;" // codec [optional] + "Ljava/lang/String;" // description [optional] + "Ljava/lang/Boolean;" // moderated [optional] + "Ljava/lang/Boolean;" // simulcast [optional] + "Ljava/lang/Boolean;" // talking [optional] + ")V" + ); + + jobject disabled = nullptr; + jobject codec = nullptr; + jobject description = nullptr; + jobject moderated = nullptr; + jobject simulcast = nullptr; + jobject talking = nullptr; + + if (streamTrackInfo_c.disabled.has_value()) { + disabled = ctx.bool2jBoolean(streamTrackInfo_c.disabled.value()); } - jobject key2Java(JniContextUtils &ctx, privmx::endpoint::stream::Key key_c) { - jclass keyCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/Key"); - jmethodID initKeyMID = ctx->GetMethodID( - keyCls, - "", - "(Ljava/lang/String;[BLcom/simplito/java/privmx_endpoint/model/KeyType;)V" - ); + if (streamTrackInfo_c.codec.has_value()) { + codec = ctx->NewStringUTF(streamTrackInfo_c.codec.value().c_str()); + } + + if (streamTrackInfo_c.description.has_value()) { + description = ctx->NewStringUTF(streamTrackInfo_c.description.value().c_str()); + } + + if (streamTrackInfo_c.moderated.has_value()) { + moderated = ctx.bool2jBoolean(streamTrackInfo_c.moderated.value()); + } + + if (streamTrackInfo_c.simulcast.has_value()) { + simulcast = ctx.bool2jBoolean(streamTrackInfo_c.simulcast.value()); + } - jbyteArray jKey = ctx->NewByteArray(key_c.key.size()); - ctx->SetByteArrayRegion(jKey, 0, key_c.key.size(), (jbyte *) key_c.key.data()); + if (streamTrackInfo_c.talking.has_value()) { + talking = ctx.bool2jBoolean(streamTrackInfo_c.talking.value()); + } + + return ctx->NewObject( + itemCls, + initItemMID, + ctx->NewStringUTF(streamTrackInfo_c.type.c_str()), + ctx.long2jLong(streamTrackInfo_c.mindex), + ctx->NewStringUTF(streamTrackInfo_c.mid.c_str()), + disabled, + codec, + description, + moderated, + simulcast, + talking + ); + } + + jobject + streamInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamInfo streamInfo_c) { + jclass arrayCls = ctx->FindClass("java/util/ArrayList"); + jmethodID initArrayMID = ctx->GetMethodID( + arrayCls, + "", + "()V"); + jmethodID addToArrayMID = ctx->GetMethodID( + arrayCls, + "add", + "(Ljava/lang/Object;)Z" + ); + + jclass itemCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/StreamInfo"); + + jmethodID initItemMID = ctx->GetMethodID( + itemCls, + "", + "(" + "Ljava/lang/Long;" // id + "Ljava/lang/String;" // userId + "Ljava/util/List;" // tracks + "Ljava/lang/String;" // metadata + "Ljava/lang/Boolean;" // dummy + "Ljava/lang/Boolean;" // talking + ")V" + ); + + jobject metadata = nullptr; + jobject dummy = nullptr; + jobject talking = nullptr; + + if (streamInfo_c.metadata.has_value()) { + metadata = ctx->NewStringUTF(streamInfo_c.metadata.value().c_str()); + } + + if (streamInfo_c.dummy.has_value()) { + dummy = ctx.bool2jBoolean(streamInfo_c.dummy.value()); + } + + if (streamInfo_c.talking.has_value()) { + talking = ctx.bool2jBoolean(streamInfo_c.talking.value()); + } + + jobject tracks = ctx->NewObject(arrayCls, initArrayMID); + for (auto &track: streamInfo_c.tracks) { + ctx->CallBooleanMethod( + tracks, + addToArrayMID, + streamTrackInfo2Java(ctx, track) + ); + } + // todo - check null? + + return ctx->NewObject( + itemCls, + initItemMID, + ctx.long2jLong(streamInfo_c.id), + ctx->NewStringUTF(streamInfo_c.userId.c_str()), + tracks, + metadata, + dummy, + talking + ); + + } + + jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c) { + jclass itemCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/PublishedStreamData"); + + jmethodID initItemMID = ctx->GetMethodID( + itemCls, + "", + "(" + "Ljava/lang/String;" // streamRoomId + "Lcom/simplito/java/privmx_endpoint/model/StreamInfo;" // stream + "Ljava/lang/String;" //userId + ")V" + ); + + return ctx->NewObject( + itemCls, + initItemMID, + ctx->NewStringUTF(publishedStreamData_c.streamRoomId.c_str()), + streamInfo2Java(ctx, publishedStreamData_c.stream), + ctx->NewStringUTF(publishedStreamData_c.userId.c_str()) + ); + } + + jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c) { + jclass itemCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/StreamPublishResult"); + + jmethodID initItemMID = ctx->GetMethodID( + itemCls, + "", + "(" + "Ljava/lang/Boolean;" // published + "Lcom/simplito/java/privmx_endpoint/model/PublishedStreamData;" // data + ")V" + ); + + jobject data = nullptr; + if (streamPublishResult_c.data.has_value()) { + data = publishedStreamData2Java(ctx, streamPublishResult_c.data.value()); return ctx->NewObject( - keyCls, - initKeyMID, - ctx->NewStringUTF(key_c.keyId.c_str()), - jKey, - keyType2Java(ctx, key_c.type) + itemCls, + initItemMID, + ctx.bool2jBoolean(streamPublishResult_c.published), + data + ); + } else { + return ctx->NewObject( + itemCls, + initItemMID, + ctx.bool2jBoolean(streamPublishResult_c.published) ); } + } + + jobject remoteStreamId2Java(JniContextUtils &ctx, + privmx::endpoint::stream::RemoteStreamId remoteStreamId_c) { + jclass itemCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/RemoteStreamId"); + + jmethodID initItemMID = ctx->GetMethodID( + itemCls, + "", + "(" + "Ljava/lang/Long;" // value + ")V" + ); + + return ctx->NewObject( + itemCls, + initItemMID, + ctx.long2jLong(remoteStreamId_c) + ); + } + + jobject frame2Java(JniContextUtils &ctx, privmx::endpoint::stream::Frame &frame_c) { + jclass itemCls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/Frame"); + + jmethodID initItemMID = ctx->GetMethodID( + itemCls, + "", + "()V" + ); + + return ctx->NewObject( + itemCls, + initItemMID + ); + } + + jobject + streamTrackModificationPair2Java( + JniContextUtils &ctx, + endpoint::stream::StreamTrackModificationPair streamTrackModificationPair + ) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/StreamTrackModificationPair"); + jmethodID initItemMID = 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, + initItemMID, + before, + after + ); + } + + jobject + streamTrackModification2Java( + JniContextUtils &ctx, + endpoint::stream::StreamTrackModification streamTrackModification + ) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/StreamTrackModification"); + jmethodID initItemMID = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/Long;" + "Ljava/util/List;" + ")V" + ); + + jobject tracksList = vectorTojArray( + ctx, + streamTrackModification.tracks, + streamTrackModificationPair2Java + ); + + return ctx->NewObject( + cls, + initItemMID, + ctx.long2jLong(streamTrackModification.streamId), + tracksList + ); + } + + jobject + updatedStreamData2Java( + JniContextUtils &ctx, + endpoint::stream::UpdatedStreamData data + ) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/stream/events/UpdatedStreamData"); + jmethodID initItemMID = 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, + initItemMID, + 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/stream/events/StreamRoomDeletedEventData"); + jmethodID initItemMID = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + ")V" + ); + + return ctx->NewObject( + cls, + initItemMID, + 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/stream/events/StreamPublishedEventData"); + jmethodID initItemMID = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + "Lcom/simplito/java/privmx_endpoint/model/StreamInfo;" + "Ljava/lang/String;" + ")V" + ); + + return ctx->NewObject( + cls, + initItemMID, + 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/stream/events/StreamUpdatedEventData"); + jmethodID initItemMID = 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, + initItemMID, + 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/stream/events/StreamEventData"); + jmethodID initItemMID = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + "Ljava/util/List;" + "Ljava/lang/String;" + ")V" + ); + + jobject streamIds = vectorTojArray( + ctx, + data.streamIds, + long2jobject + ); + + return ctx->NewObject( + cls, + initItemMID, + 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/stream/events/StreamUnpublishedEventData"); + jmethodID initItemMID = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + "Ljava/lang/Long;" + ")V" + ); + + return ctx->NewObject( + cls, + initItemMID, + 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/stream/events/NewStreams"); + jmethodID initItemMID = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + "Ljava/util/List;" + ")V" + ); + + jobject streamsList = vectorTojArray( + ctx, + data.streams, + streamInfo2Java + ); + + return ctx->NewObject( + cls, + initItemMID, + 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/stream/events/StreamsUpdatedData"); + jmethodID initItemMID = ctx->GetMethodID( + cls, + "", + "(" + "Ljava/lang/String;" + "Ljava/util/List;" + ")V" + ); + + jobject streamsList = vectorTojArray( + ctx, + data.streams, + updatedStreamData2Java + ); + + return ctx->NewObject( + cls, + initItemMID, + ctx->NewStringUTF(data.room.c_str()), + streamsList + ); + } -// jobject -// streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c) { -// jclass streamRoomCls = ctx.findClass( -// "com/simplito/java/privmx_endpoint/model/StreamRoom"); -// jmethodID initStreamRoomMID = ctx->GetMethodID( -// streamRoomCls, -// "", -// "(" -// "Ljava/lang/String;" //contextId -// "Ljava/lang/String;" //streamRoomId -// "Ljava/lang/Long;" //createDate -// "Ljava/lang/String;" //creator -// "Ljava/lang/Long;" //lastModificationDate -// "Ljava/lang/String;" //lastModifier -// "Ljava/util/List;" //users -// "Ljava/util/List;" //managers -// "Ljava/lang/Long;" //version -// "[B" //publicMeta -// "[B" //privateMeta -// "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy -// "Ljava/lang/Long;" //statusCode -// ")V" -// ); -// -// jclass arrayCls = ctx.findClass("java/util/ArrayList"); -// jmethodID initArrayMID = ctx->GetMethodID( -// arrayCls, -// "", -// "()V"); -// jmethodID addToArrayMID = ctx->GetMethodID( -// arrayCls, -// "add", -// "(Ljava/lang/Object;)Z" -// ); -// jstring contextId = ctx->NewStringUTF(streamRoom_c.contextId.c_str()); -// jstring streamRoomId = ctx->NewStringUTF(streamRoom_c.streamRoomId.c_str()); -// jstring creator = ctx->NewStringUTF(streamRoom_c.creator.c_str()); -// jstring lastModifier = ctx->NewStringUTF(streamRoom_c.lastModifier.c_str()); -// jobject users = ctx->NewObject(arrayCls, initArrayMID); -// jobject managers = ctx->NewObject(arrayCls, initArrayMID); -// jbyteArray publicMeta = ctx->NewByteArray(streamRoom_c.publicMeta.size()); -// jbyteArray privateMeta = ctx->NewByteArray(streamRoom_c.privateMeta.size()); -// ctx->SetByteArrayRegion(publicMeta, 0, streamRoom_c.publicMeta.size(), -// (jbyte *) streamRoom_c.publicMeta.data()); -// ctx->SetByteArrayRegion(privateMeta, 0, streamRoom_c.privateMeta.size(), -// (jbyte *) streamRoom_c.privateMeta.data()); -// for (auto &user: streamRoom_c.users) { -// ctx->CallBooleanMethod(users, -// addToArrayMID, -// ctx->NewStringUTF(user.c_str())); -// } -// for (auto &manager: streamRoom_c.managers) { -// ctx->CallBooleanMethod(managers, -// addToArrayMID, -// ctx->NewStringUTF(manager.c_str())); -// } -// return ctx->NewObject( -// streamRoomCls, -// initStreamRoomMID, -// contextId, -// streamRoomId, -// ctx.long2jLong(streamRoom_c.createDate), -// creator, -// ctx.long2jLong(streamRoom_c.lastModificationDate), -// lastModifier, -// users, -// managers, -// ctx.long2jLong(streamRoom_c.version), -// publicMeta, -// privateMeta, -// containerPolicy2Java(ctx, streamRoom_c.policy), -// ctx.long2jLong(streamRoom_c.statusCode) -// ); -// } - -// jobject stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c) { -// jclass streamCls = ctx.findClass( -// "com/simplito/java/privmx_endpoint/model/Stream"); -// jmethodID initStreamMID = ctx->GetMethodID( -// streamCls, -// "", -// "(" -// "Ljava/lang/Long;" //streamId -// "Ljava/lang/String;" //userId -// ")V" -// ); -// return ctx->NewObject( -// streamCls, -// initStreamMID, -// ctx.long2jLong(stream_c.streamId), -// ctx->NewStringUTF(stream_c.userId.c_str()) -// ); -// } -// -// jobject -// turnCredentials2Java(JniContextUtils &ctx, -// privmx::endpoint::stream::TurnCredentials turnCredentials_c) { -// jclass turnCredentialsCls = ctx.findClass( -// "com/simplito/java/privmx_endpoint/model/TurnCredentials"); -// jmethodID initTurnCredentialsMID = ctx->GetMethodID( -// turnCredentialsCls, -// "", -// "(" -// "Ljava/lang/String;" //url -// "Ljava/lang/String;" //username -// "Ljava/lang/String;" //password -// "Ljava/lang/Long;" //expirationTime -// ")V" -// ); -// return ctx->NewObject( -// turnCredentialsCls, -// initTurnCredentialsMID, -// ctx->NewStringUTF(turnCredentials_c.url.c_str()), -// ctx->NewStringUTF(turnCredentials_c.username.c_str()), -// ctx->NewStringUTF(turnCredentials_c.password.c_str()), -// ctx.long2jLong(turnCredentials_c.expirationTime) -// ); -// } -// -// jobject -// sdpWithTypeModel2Java(JniContextUtils &ctx, -// privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c) { -// jclass sdpWithTypeModelCls = ctx.findClass( -// "com/simplito/java/privmx_endpoint/model/SdpWithTypeModel"); -// jmethodID initSdpWithTypeModelMID = ctx->GetMethodID( -// sdpWithTypeModelCls, -// "", -// "(" -// "Ljava/lang/String;" //url -// "Ljava/lang/String;" //username -// ")V" -// ); -// return ctx->NewObject( -// sdpWithTypeModelCls, -// initSdpWithTypeModelMID, -// ctx->NewStringUTF(sdpWithTypeModel_c.sdp.c_str()), -// ctx->NewStringUTF(sdpWithTypeModel_c.type.c_str()) -// ); -// } -// -// // Stream -// jobject streamRoom2Java( -// JniContextUtils &ctx, -// privmx::endpoint::stream::StreamRoom streamRoom_c -// ) { -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/StreamRoom"); -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "(" -// "Ljava/lang/String;" // contextId -// "Ljava/lang/String;" // streamRoomId -// "Ljava/lang/Long;" // createDate -// "Ljava/lang/String;" // creator -// "Ljava/lang/Long;" // lastModificationDate -// "Ljava/lang/String;" // lastModifier -// "Ljava/util/List;" // users -// "Ljava/util/List;" // managers -// "Ljava/lang/Long;" // version -// "[B" // publicMeta -// "[B" // privateMeta -// "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" // policy -// "Ljava/lang/Long;" // statusCode -// "Ljava/lang/Long;" // schemaVersion -// ")V" -// ); -// -// jbyteArray publicMeta = ctx->NewByteArray(streamRoom_c.publicMeta.size()); -// jbyteArray privateMeta = ctx->NewByteArray(streamRoom_c.privateMeta.size()); -// -// ctx->SetByteArrayRegion(publicMeta, 0, streamRoom_c.publicMeta.size(), -// (jbyte *) streamRoom_c.publicMeta.data()); -// ctx->SetByteArrayRegion(privateMeta, 0, streamRoom_c.privateMeta.size(), -// (jbyte *) streamRoom_c.privateMeta.data()); -// -// jobject users = vectorTojArray(ctx, streamRoom_c.users, string2jobject); -// jobject managers = vectorTojArray(ctx, streamRoom_c.managers, string2jobject); -// -// return ctx->NewObject( -// itemCls, -// initItemMID, -// ctx->NewStringUTF(streamRoom_c.contextId.c_str()), -// ctx->NewStringUTF(streamRoom_c.streamRoomId.c_str()), -// ctx.long2jLong(streamRoom_c.createDate), -// ctx->NewStringUTF(streamRoom_c.creator.c_str()), -// ctx.long2jLong(streamRoom_c.lastModificationDate), -// ctx->NewStringUTF(streamRoom_c.lastModifier.c_str()), -// users, -// managers, -// ctx.long2jLong(streamRoom_c.version), -// publicMeta, -// privateMeta, -// containerPolicy2Java(ctx, streamRoom_c.policy), -// ctx.long2jLong(streamRoom_c.statusCode), -// ctx.long2jLong(streamRoom_c.schemaVersion) -// ); -// } - //Stream -// jobject stream2Java( -// JniContextUtils &ctx, -// privmx::endpoint::stream::Stream stream_c -// ) { -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/Stream"); -// -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "(" -// "Ljava/lang/Long;" // streamId -// "Ljava/lang/String;" // userId -// ")V" -// ); -// -// return ctx->NewObject( -// itemCls, -// initItemMID, -// ctx.long2jLong(stream_c.streamId), -// ctx->NewStringUTF(stream_c.userId.c_str()) -// ); -// } - -// jobject deviceType2Java( -// JniContextUtils &ctx, -// privmx::endpoint::stream::DeviceType deviceType_c -// ) { -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/streams/DeviceType"); -// -// jmethodID valuesMID = ctx->GetStaticMethodID(itemCls, "values", -// "()[Lcom/simplito/java/privmx_endpoint/model/streams/DeviceType;"); -// -// jobjectArray enumValues = (jobjectArray) ctx->CallStaticObjectMethod(itemCls, -// valuesMID); -// -// return (jobject) ctx->GetObjectArrayElement(enumValues, (int) deviceType_c); -// } -// -// -// jobject mediaDevice2Java( -// JniContextUtils &ctx, -// privmx::endpoint::stream::MediaDevice mediaDevice_c -// ) { -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/streams/MediaDevice"); -// -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "(" -// "Ljava/lang/String;" // name -// "Ljava/lang/String;" // id -// "Lcom/simplito/java/privmx_endpoint/model/streams/DeviceType;" // type -// ")V" -// ); -// -// return ctx->NewObject( -// itemCls, -// initItemMID, -// ctx->NewStringUTF(mediaDevice_c.name.c_str()), -// ctx->NewStringUTF(mediaDevice_c.id.c_str()), -// deviceType2Java(ctx, mediaDevice_c.type) -// -// ); -// } -// -// jobject streamHandle2Java( -// JniContextUtils &ctx, -// privmx::endpoint::stream::StreamHandle streamHandle_c -// ) { -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/streams/StreamHandle"); -// -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "(" -// "Ljava/lang/Long;" // value -// ")V" -// ); -// -// return ctx->NewObject( -// itemCls, -// initItemMID, -// ctx.long2jLong(streamHandle_c) -// ); -// } -// -// jobject -// streamInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamInfo streamInfo_c) { -// jclass arrayCls = ctx->FindClass("java/util/ArrayList"); -// jmethodID initArrayMID = ctx->GetMethodID( -// arrayCls, -// "", -// "()V"); -// jmethodID addToArrayMID = ctx->GetMethodID( -// arrayCls, -// "add", -// "(Ljava/lang/Object;)Z" -// ); -// -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/streams/StreamInfo"); -// -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "(" -// "Ljava/lang/Long;" // id -// "Ljava/lang/String;" // userId -// "Ljava/util/List;" // tracks -// "Ljava/lang/Long;" // streamId -// "Ljava/lang/String;" // metadata -// "Ljava/lang/Boolean;" // dummy -// "Ljava/lang/Boolean;" // talking -// ")V" -// ); -// -// jobject metadata = nullptr; -// jobject dummy = nullptr; -// jobject talking = nullptr; -// -// if (streamInfo_c.metadata.has_value()) { -// metadata = ctx->NewStringUTF(streamInfo_c.metadata.value().c_str()); -// } -// -// if (streamInfo_c.dummy.has_value()) { -// dummy = ctx.bool2jBoolean(streamInfo_c.dummy.value()); -// } -// -// if (streamInfo_c.talking.has_value()) { -// dummy = ctx.bool2jBoolean(streamInfo_c.talking.value()); -// } -// -// jobject tracks = ctx->NewObject(arrayCls, initArrayMID); -// for (auto &track: streamInfo_c.tracks) { -// -// ctx->CallBooleanMethod( -// tracks, -// addToArrayMID, -// streamTrackInfo2Java(ctx, track) -// ); -// } -// -// // todo - check null? -// -// return ctx->NewObject( -// itemCls, -// initItemMID, -// ctx.long2jLong(streamInfo_c.id), -// ctx->NewStringUTF(streamInfo_c.userId.c_str()), -// tracks, -// metadata, -// dummy, -// talking -// ); -// -// } -// -// jobject streamTrackInfo2Java( -// JniContextUtils &ctx, -// privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c -// ) { -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/streams/StreamInfo"); -// -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "(" -// "Ljava/lang/String;" // type -// "Ljava/lang/Long;" // mindex -// "Ljava/lang/String;" // mid -// "Ljava/lang/Boolean;" // disabled [optional] -// "Ljava/lang/String;" // codec [optional] -// "Ljava/lang/String;" // description [optional] -// "Ljava/lang/Boolean;" // moderated [optional] -// "Ljava/lang/Boolean;" // simulcast [optional] -// "Ljava/lang/Boolean;" // talking [optional] -// ")V" -// ); -// -// jobject disabled = nullptr; -// jobject codec = nullptr; -// jobject description = nullptr; -// jobject moderated = nullptr; -// jobject simulcast = nullptr; -// jobject talking = nullptr; -// -// if (streamTrackInfo_c.disabled.has_value()) { -// disabled = ctx.bool2jBoolean(streamTrackInfo_c.disabled.value()); -// } -// -// if (streamTrackInfo_c.codec.has_value()) { -// codec = ctx->NewStringUTF(streamTrackInfo_c.codec.value().c_str()); -// } -// -// if (streamTrackInfo_c.description.has_value()) { -// description = ctx->NewStringUTF(streamTrackInfo_c.description.value().c_str()); -// } -// -// if (streamTrackInfo_c.moderated.has_value()) { -// moderated = ctx.bool2jBoolean(streamTrackInfo_c.moderated.value()); -// } -// -// if (streamTrackInfo_c.simulcast.has_value()) { -// simulcast = ctx.bool2jBoolean(streamTrackInfo_c.simulcast.value()); -// } -// -// if (streamTrackInfo_c.talking.has_value()) { -// talking = ctx.bool2jBoolean(streamTrackInfo_c.talking.value()); -// } -// -// return ctx->NewObject( -// itemCls, -// initItemMID, -// ctx->NewStringUTF(streamTrackInfo_c.type.c_str()), -// ctx.long2jLong(streamTrackInfo_c.mindex), -// ctx->NewStringUTF(streamTrackInfo_c.mid.c_str()), -// disabled, -// codec, -// description, -// moderated, -// simulcast, -// talking -// ); -// } -// jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c){ -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/streams/StreamPublishResult"); -// -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "(" -// "Ljava/lang/Boolean;" // published -// "Lcom/simplito/java/privmx_endpoint/model/streams/PublishedStreamData;" // data -// ")V" -// ); -// -// jobject data = nullptr; -// if(streamPublishResult_c.data.has_value()) -// { -// data = publishedStreamData2Java(ctx, streamPublishResult_c.data.value()); -// } -// -// return ctx->NewObject( -// itemCls, -// initItemMID, -// ctx.bool2jBoolean(streamPublishResult_c.published), -// data -// ); -// } -// -// jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c){ -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/streams/PublishedStreamData"); -// -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "(" -// "Ljava/lang/String;" // streamRoomId -// "Lcom/simplito/java/privmx_endpoint/model/streams/StreamInfo;" // stream -// "Ljava/lang/String;" //userId -// ")V" -// ); -// -// return ctx->NewObject( -// itemCls, -// initItemMID, -// ctx->NewStringUTF(publishedStreamData_c.streamRoomId.c_str()), -// streamInfo2Java(ctx, publishedStreamData_c.stream), -// ctx->NewStringUTF(publishedStreamData_c.userId.c_str()) -// ); -// } -// -// jobject remoteStreamId2Java(JniContextUtils &ctx, -// privmx::endpoint::stream::RemoteStreamId remoteStreamId_c) { -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/streams/RemoteStreamId"); -// -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "(" -// "Ljava/lang/Long;" // value -// ")V" -// ); -// -// return ctx->NewObject( -// itemCls, -// initItemMID, -// ctx.long2jLong(remoteStreamId_c) -// ); -// } -// -// jobject frame2Java(JniContextUtils &ctx, privmx::endpoint::stream::Frame &frame_c) { -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/streams/Frame"); -// -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "()V" -// ); -// -// return ctx->NewObject( -// itemCls, -// initItemMID -// ); -// } } // wrapper } // privmx \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint/src/cpp/parsers/parser.cpp b/jni-wrappers/privmx-endpoint/src/cpp/parsers/parser.cpp index c14a2497..b62a63ba 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/parsers/parser.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/parsers/parser.cpp @@ -70,11 +70,11 @@ parseContainerPolicyWithoutItem(JniContextUtils &ctx, jobject containerPolicyWit jfieldID delete_ = ctx->GetFieldID(policyClass, "delete", "Ljava/lang/String;"); jfieldID updatePolicy = ctx->GetFieldID(policyClass, "updatePolicy", "Ljava/lang/String;"); jfieldID updaterCanBeRemovedFromManagers = ctx->GetFieldID(policyClass, - "updaterCanBeRemovedFromManagers", - "Ljava/lang/String;"); + "updaterCanBeRemovedFromManagers", + "Ljava/lang/String;"); jfieldID ownerCanBeRemovedFromManagers = ctx->GetFieldID(policyClass, - "ownerCanBeRemovedFromManagers", - "Ljava/lang/String;"); + "ownerCanBeRemovedFromManagers", + "Ljava/lang/String;"); jstring value; if ((value = (jstring) ctx->GetObjectField(containerPolicyWithoutItem, get)) != NULL) { result.get = ctx.jString2string(value); @@ -89,11 +89,11 @@ parseContainerPolicyWithoutItem(JniContextUtils &ctx, jobject containerPolicyWit result.updatePolicy = ctx.jString2string(value); } if ((value = (jstring) ctx->GetObjectField(containerPolicyWithoutItem, - updaterCanBeRemovedFromManagers)) != NULL) { + updaterCanBeRemovedFromManagers)) != NULL) { result.updaterCanBeRemovedFromManagers = ctx.jString2string(value); } if ((value = (jstring) ctx->GetObjectField(containerPolicyWithoutItem, - ownerCanBeRemovedFromManagers)) != NULL) { + ownerCanBeRemovedFromManagers)) != NULL) { result.ownerCanBeRemovedFromManagers = ctx.jString2string(value); } return result; @@ -110,15 +110,15 @@ parseContainerPolicy(JniContextUtils &ctx, jobject containerPolicy) { jfieldID delete_ = ctx->GetFieldID(policyClass, "delete", "Ljava/lang/String;"); jfieldID updatePolicy = ctx->GetFieldID(policyClass, "updatePolicy", "Ljava/lang/String;"); jfieldID updaterCanBeRemovedFromManagers = ctx->GetFieldID(policyClass, - "updaterCanBeRemovedFromManagers", - "Ljava/lang/String;"); + "updaterCanBeRemovedFromManagers", + "Ljava/lang/String;"); jfieldID ownerCanBeRemovedFromManagers = ctx->GetFieldID(policyClass, - "ownerCanBeRemovedFromManagers", - "Ljava/lang/String;"); + "ownerCanBeRemovedFromManagers", + "Ljava/lang/String;"); jfieldID item = ctx->GetFieldID(policyClass, - "item", - "Lcom/simplito/java/privmx_endpoint/model/ItemPolicy;"); + "item", + "Lcom/simplito/java/privmx_endpoint/model/ItemPolicy;"); jstring value; if ((value = (jstring) ctx->GetObjectField(containerPolicy, get)) != NULL) { result.get = ctx.jString2string(value); @@ -133,11 +133,11 @@ parseContainerPolicy(JniContextUtils &ctx, jobject containerPolicy) { result.updatePolicy = ctx.jString2string(value); } if ((value = (jstring) ctx->GetObjectField(containerPolicy, - updaterCanBeRemovedFromManagers)) != NULL) { + updaterCanBeRemovedFromManagers)) != NULL) { result.updaterCanBeRemovedFromManagers = ctx.jString2string(value); } if ((value = (jstring) ctx->GetObjectField(containerPolicy, - ownerCanBeRemovedFromManagers)) != NULL) { + ownerCanBeRemovedFromManagers)) != NULL) { result.ownerCanBeRemovedFromManagers = ctx.jString2string(value); } result.item = parseItemPolicy(ctx, ctx->GetObjectField(containerPolicy, item)); @@ -186,7 +186,7 @@ privmx::endpoint::inbox::FilesConfig parseFilesConfig(JniContextUtils &ctx, jobj jfieldID maxCountFID = ctx->GetFieldID(filesConfigCls, "maxCount", "Ljava/lang/Long;"); jfieldID maxFileSizeFID = ctx->GetFieldID(filesConfigCls, "maxFileSize", "Ljava/lang/Long;"); jfieldID maxWholeUploadSizeFID = ctx->GetFieldID(filesConfigCls, "maxWholeUploadSize", - "Ljava/lang/Long;"); + "Ljava/lang/Long;"); result.minCount = ctx.getObject(ctx->GetObjectField(filesConfig, minCountFID)).getLongValue(); result.maxCount = ctx.getObject(ctx->GetObjectField(filesConfig, maxCountFID)).getLongValue(); result.maxFileSize = ctx.getObject( @@ -197,20 +197,20 @@ privmx::endpoint::inbox::FilesConfig parseFilesConfig(JniContextUtils &ctx, jobj } jobject initEvent(JniContextUtils &ctx, std::string type, std::string channel, int64_t connectionId, - std::vector &subscriptions, int64_t timestamp, jobject data_j) { + std::vector &subscriptions, int64_t timestamp, jobject data_j) { if (type.empty()) return nullptr; jclass eventCls = ctx->FindClass("com/simplito/java/privmx_endpoint/model/Event"); jmethodID eventInitMID = ctx->GetMethodID(eventCls, "", "()V"); jfieldID eventTypeFieldID = ctx->GetFieldID(eventCls, "type", "Ljava/lang/String;"); jfieldID eventDataFieldID = ctx->GetFieldID(eventCls, "data", "Ljava/lang/Object;"); jfieldID eventConnectionIdFieldID = ctx->GetFieldID(eventCls, "connectionId", - "Ljava/lang/Long;"); + "Ljava/lang/Long;"); jfieldID eventChannelFieldID = ctx->GetFieldID(eventCls, "channel", "Ljava/lang/String;"); jfieldID eventSubscriptionsFieldID = ctx->GetFieldID(eventCls, "subscriptions", - "Ljava/util/List;"); + "Ljava/util/List;"); jfieldID eventTimestampFieldID = ctx->GetFieldID(eventCls, "timestamp", - "Ljava/lang/Long;"); + "Ljava/lang/Long;"); jclass arrayListCls = ctx->FindClass("java/util/ArrayList"); jmethodID arrayListInit = ctx->GetMethodID(arrayListCls, "", "()V"); @@ -611,7 +611,7 @@ parseEvent(JniContextUtils &ctx, std::shared_ptr event_cast.timestamp, privmx::wrapper::kvdbStatsEventData2Java(ctx, event_cast.data) ); - }else if (kvdb::Events::isKvdbNewEntryEvent(event)) { + } else if (kvdb::Events::isKvdbNewEntryEvent(event)) { privmx::endpoint::kvdb::KvdbNewEntryEvent event_cast = kvdb::Events::extractKvdbNewEntryEvent( event); return initEvent( @@ -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::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::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::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::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::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::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::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::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::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::streamsUpdated2Java(ctx, event_cast.data) + ); } else { return initEvent( ctx, @@ -694,56 +823,63 @@ parsePagingQuery(JniContextUtils &ctx, jobject pagingQuery) { return result; } + // streams -//privmx::endpoint::stream::DeviceType parseDeviceType(JniContextUtils &ctx, jobject type) { -// jclass itemClass = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/streams/DeviceType)"); -// jmethodID ordinalMethod = ctx->GetMethodID(itemClass, "ordinal", "()I"); -// jint ordinalMID = ctx->CallIntMethod(type, ordinalMethod); -// -// privmx::endpoint::stream::DeviceType type_c = static_cast(ordinalMID); -// -// return type_c; -//} -// -//privmx::endpoint::stream::MediaDevice parseMediaDevice(JniContextUtils &ctx, jobject mediaDevice) { -// auto result = privmx::endpoint::stream::MediaDevice(); -// -// jclass mediaDeviceCls = ctx->GetObjectClass(mediaDevice); -// jfieldID name = ctx->GetFieldID(mediaDeviceCls, "name", "Ljava/lang/String;"); -// jfieldID id = ctx->GetFieldID(mediaDeviceCls, "id", "Ljava/lang/String;"); -// jfieldID type = ctx->GetFieldID(mediaDeviceCls, "type", -// "Lcom/simplito/java/privmx_endpoint/model/streams/DeviceType;"); -// -// result.name = ctx.jString2string( -// (jstring) ctx->GetObjectField(mediaDevice, name)); -// result.id = ctx.jString2string( -// (jstring) ctx->GetObjectField(mediaDevice, id)); -// result.type = parseDeviceType(ctx, ctx->GetObjectField(mediaDevice, type)); -// -// return result; -//} -// -//privmx::endpoint::stream::StreamHandle parseStreamHandle( -// JniContextUtils &ctx, -// jobject streamHandle -//) { -// jclass streamHandleCls = ctx->GetObjectClass(streamHandle); -// jfieldID valueFID = ctx->GetFieldID(streamHandleCls, "value", "Ljava/lang/Long;"); -// -// return jobject2long(ctx, ctx->GetObjectField(streamHandle, valueFID)); -//} -// -//privmx::endpoint::stream::Settings parseSettings(JniContextUtils &ctx, jobject settings){ -// auto result = privmx::endpoint::stream::Settings(); -// return result; -//} +privmx::endpoint::stream::DeviceType parseDeviceType( + JniContextUtils &ctx, + jobject type +) { + jclass itemClass = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/streams/DeviceType)"); + jmethodID ordinalMethod = ctx->GetMethodID(itemClass, "ordinal", "()I"); + jint ordinalMID = ctx->CallIntMethod(type, ordinalMethod); + + privmx::endpoint::stream::DeviceType type_c = static_cast(ordinalMID); + + return type_c; +} + +privmx::endpoint::stream::MediaDevice parseMediaDevice( + JniContextUtils &ctx, + jobject mediaDevice +) { + auto result = privmx::endpoint::stream::MediaDevice(); -//privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env,jobject streamSettings){ -// privmx::endpoint::stream::StreamSettings result; + jclass mediaDeviceCls = ctx->GetObjectClass(mediaDevice); + jfieldID name = ctx->GetFieldID(mediaDeviceCls, "name", "Ljava/lang/String;"); + jfieldID id = ctx->GetFieldID(mediaDeviceCls, "id", "Ljava/lang/String;"); + jfieldID type = ctx->GetFieldID(mediaDeviceCls, "type", + "Lcom/simplito/java/privmx_endpoint/model/streams/DeviceType;"); + + result.name = ctx.jString2string( + (jstring) ctx->GetObjectField(mediaDevice, name)); + result.id = ctx.jString2string( + (jstring) ctx->GetObjectField(mediaDevice, id)); + result.type = parseDeviceType(ctx, ctx->GetObjectField(mediaDevice, type)); + + return result; +} + +privmx::endpoint::stream::StreamHandle parseStreamHandle( + JniContextUtils &ctx, + jobject streamHandle +) { + jclass streamHandleCls = ctx->GetObjectClass(streamHandle); + jfieldID valueFID = ctx->GetFieldID(streamHandleCls, "value", "Ljava/lang/Long;"); + + return jobject2long(ctx, ctx->GetObjectField(streamHandle, valueFID)); +} + +privmx::endpoint::stream::Settings parseSettings(JniContextUtils &ctx, jobject settings) { + auto result = privmx::endpoint::stream::Settings(); + return result; +} + +privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env, jobject streamSettings) { + privmx::endpoint::stream::StreamSettings result; // JniContextUtils ctx(env); // jclass cls = ctx->GetObjectClass(streamSettings); -// StreamSettingsJNI streamSettingsJni (env, streamSettings); +//// StreamSettingsJNI streamSettingsJni (env, streamSettings); // // jfieldID settingsFID = env->GetFieldID( // env->GetObjectClass(streamSettings), @@ -754,36 +890,54 @@ parsePagingQuery(JniContextUtils &ctx, jobject pagingQuery) { // jobject jsettings = ctx->GetObjectField(streamSettings, settingsFID); // // result.settings = parseSettings(ctx, jsettings); -// result.OnFrame = streamSettingsJni.OnFrame; -// result.OnVideo = streamSettingsJni.OnVideo; -// result.OnVideoRemove = streamSettingsJni.OnVideoRemove; +//// result.OnFrame = streamSettingsJni.OnFrame; +//// result.OnVideo = streamSettingsJni.OnVideo; +//// result.OnVideoRemove = streamSettingsJni.OnVideoRemove; // -// return nullptr; -//} + return result; +} + +privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription) { + privmx::endpoint::stream::StreamSubscription result; + jclass cls = ctx->GetObjectClass(streamSubscription); + jfieldID streamIdFID = ctx->GetFieldID( + ctx->GetObjectClass(streamSubscription), + "streamId", + "J" + ); + + jfieldID trackIdFID = ctx->GetFieldID( + ctx->GetObjectClass(streamSubscription), + "streamTrackId", + "Ljava/lang/String;" + ); + + jlong streamId = ctx->GetLongField(streamSubscription, streamIdFID); + jobject streamTrackId = ctx->GetObjectField(streamSubscription, trackIdFID); + + result.streamId = streamId; + if (streamTrackId != nullptr) result.streamTrackId = jobject2string(ctx, streamTrackId); + + return result; +} + +privmx::endpoint::stream::SdpWithTypeModel parseSdpWithTypeModel(JniContextUtils &ctx, jobject sdpWithTypeModel) { + jclass cls = ctx->FindClass( + "com/simplito/java/privmx_endpoint/model/SdpWithTypeModel"); + + jfieldID sdpFID = ctx->GetFieldID(cls, "sdp", "Ljava/lang/String;"); + jfieldID typeFID = ctx->GetFieldID(cls, "type", "Ljava/lang/String;"); + + jstring sdp_j = (jstring) ctx->GetObjectField(sdpWithTypeModel, sdpFID); + jstring type_j = (jstring) ctx->GetObjectField(sdpWithTypeModel, typeFID); + + privmx::endpoint::stream::SdpWithTypeModel result; + result.sdp = ctx.jString2string(sdp_j); + result.type = ctx.jString2string(type_j); + + return result; +} -//privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription){ -// privmx::endpoint::stream::StreamSubscription result; -// jclass cls = ctx->GetObjectClass(streamSubscription); -// jfieldID streamIdFID = ctx->GetFieldID( -// ctx->GetObjectClass(streamSubscription), -// "streamId", -// "J" -// ); -// -// jfieldID trackIdFID = ctx->GetFieldID( -// ctx->GetObjectClass(streamSubscription), -// "streamTrackId", -// "Ljava/lang/String;" -// ); -// -// jobject streamId = ctx->GetObjectField(streamSubscription, streamIdFID); -// jobject streamTrackId = ctx->GetObjectField(streamSubscription, trackIdFID); -// -// result.streamId = jobject2long(ctx, streamId); -// if(streamTrackId != nullptr) result.streamTrackId = jobject2string(ctx, streamTrackId); -// -// return result; -//} // java -> c++ template @@ -844,7 +998,7 @@ jobject pagingList2Java( jclass pagingListCls = ctx->FindClass( "com/simplito/java/privmx_endpoint/model/PagingList"); jmethodID pagingListInitMID = ctx->GetMethodID(pagingListCls, "", - "(Ljava/lang/Long;Ljava/util/List;)V" + "(Ljava/lang/Long;Ljava/util/List;)V" ); jobject array = vectorTojArray(ctx, pagingList.readItems, fun); 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 deleted file mode 100644 index 9f91efa4..00000000 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/model_native_initializers.cpp +++ /dev/null @@ -1,500 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h" - -namespace privmx { - namespace wrapper { - namespace streams { - //Streams - jobject keyType2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::KeyType keyType_c - ) { - jclass keyTypeClass = ctx.findClass("com/simplito/java/privmx_endpoint/model/stream/KeyType"); - jfieldID caseFieldId = nullptr; - switch (keyType_c) { - case privmx::endpoint::stream::KeyType::LOCAL: - caseFieldId = ctx->GetStaticFieldID( - keyTypeClass, - "LOCAL", - "Lcom/simplito/java/privmx_endpoint/model/stream/KeyType;"); - break; - default: - caseFieldId = ctx->GetStaticFieldID( - keyTypeClass, - "REMOTE", - "Lcom/simplito/java/privmx_endpoint/model/stream/KeyType;"); - break; - } - return ctx->GetStaticObjectField(keyTypeClass, caseFieldId); - } - - jobject key2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::Key key_c - ) { - jclass keyCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/stream/Key"); - jmethodID initKeyMID = ctx->GetMethodID( - keyCls, - "", - "(Ljava/lang/String;" - "[B" - "Lcom/simplito/java/privmx_endpoint/model/stream/KeyType;" - ")V" - ); - - jbyteArray jKey = ctx->NewByteArray(key_c.key.size()); - ctx->SetByteArrayRegion(jKey, 0, key_c.key.size(), (jbyte *) key_c.key.data()); - - return ctx->NewObject( - keyCls, - initKeyMID, - ctx->NewStringUTF(key_c.keyId.c_str()), - jKey, - keyType2Java(ctx, key_c.type) - ); - } - - jobject stream2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::Stream stream_c - ) { - jclass streamCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/Stream"); - jmethodID initStreamMID = ctx->GetMethodID( - streamCls, - "", - "(" - "Ljava/lang/Long;" //streamId - "Ljava/lang/String;" //userId - ")V" - ); - return ctx->NewObject( - streamCls, - initStreamMID, - ctx.long2jLong(stream_c.streamId), - ctx->NewStringUTF(stream_c.userId.c_str()) - ); - } - - jobject turnCredentials2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::TurnCredentials turnCredentials_c - ) { - jclass turnCredentialsCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/stream/TurnCredentials"); - jmethodID initTurnCredentialsMID = ctx->GetMethodID( - turnCredentialsCls, - "", - "(" - "Ljava/lang/String;" //url - "Ljava/lang/String;" //username - "Ljava/lang/String;" //password - "Ljava/lang/Long;" //expirationTime - ")V" - ); - return ctx->NewObject( - turnCredentialsCls, - initTurnCredentialsMID, - ctx->NewStringUTF(turnCredentials_c.url.c_str()), - ctx->NewStringUTF(turnCredentials_c.username.c_str()), - ctx->NewStringUTF(turnCredentials_c.password.c_str()), - ctx.long2jLong(turnCredentials_c.expirationTime) - ); - } - - jobject sdpWithTypeModel2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c - ) { - jclass sdpWithTypeModelCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/stream/SdpWithTypeModel"); - jmethodID initSdpWithTypeModelMID = ctx->GetMethodID( - sdpWithTypeModelCls, - "", - "(" - "Ljava/lang/String;" //url - "Ljava/lang/String;" //username - ")V" - ); - return ctx->NewObject( - sdpWithTypeModelCls, - initSdpWithTypeModelMID, - ctx->NewStringUTF(sdpWithTypeModel_c.sdp.c_str()), - ctx->NewStringUTF(sdpWithTypeModel_c.type.c_str()) - ); - } - - // Stream - jobject streamRoom2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamRoom streamRoom_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/stream/StreamRoom"); - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // contextId - "Ljava/lang/String;" // streamRoomId - "Ljava/lang/Long;" // createDate - "Ljava/lang/String;" // creator - "Ljava/lang/Long;" // lastModificationDate - "Ljava/lang/String;" // lastModifier - "Ljava/util/List;" // users - "Ljava/util/List;" // managers - "Ljava/lang/Long;" // version - "[B" // publicMeta - "[B" // privateMeta - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" // policy - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - ")V" - ); - - jbyteArray publicMeta = ctx->NewByteArray(streamRoom_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(streamRoom_c.privateMeta.size()); - - ctx->SetByteArrayRegion(publicMeta, 0, streamRoom_c.publicMeta.size(), - (jbyte *) streamRoom_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, streamRoom_c.privateMeta.size(), - (jbyte *) streamRoom_c.privateMeta.data()); - - jobject users = vectorTojArray(ctx, streamRoom_c.users, string2jobject); - jobject managers = vectorTojArray(ctx, streamRoom_c.managers, string2jobject); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(streamRoom_c.contextId.c_str()), - ctx->NewStringUTF(streamRoom_c.streamRoomId.c_str()), - ctx.long2jLong(streamRoom_c.createDate), - ctx->NewStringUTF(streamRoom_c.creator.c_str()), - ctx.long2jLong(streamRoom_c.lastModificationDate), - ctx->NewStringUTF(streamRoom_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(streamRoom_c.version), - publicMeta, - privateMeta, - privmx::wrapper::containerPolicy2Java(ctx, streamRoom_c.policy), - ctx.long2jLong(streamRoom_c.statusCode), - ctx.long2jLong(streamRoom_c.schemaVersion) - ); - } - - jobject deviceType2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::DeviceType deviceType_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/DeviceType"); - - jmethodID valuesMID = ctx->GetStaticMethodID(itemCls, "values", - "()[Lcom/simplito/java/privmx_endpoint/model/DeviceType;"); - - jobjectArray enumValues = (jobjectArray) ctx->CallStaticObjectMethod(itemCls, - valuesMID); - - return (jobject) ctx->GetObjectArrayElement(enumValues, (int) deviceType_c); - } - - - jobject mediaDevice2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::MediaDevice mediaDevice_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/MediaDevice"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // name - "Ljava/lang/String;" // id - "Lcom/simplito/java/privmx_endpoint/model/DeviceType;" // type - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(mediaDevice_c.name.c_str()), - ctx->NewStringUTF(mediaDevice_c.id.c_str()), - deviceType2Java(ctx, mediaDevice_c.type) - - ); - } - - jobject streamHandle2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamHandle streamHandle_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/stream/StreamHandle"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // value - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(streamHandle_c) - ); - } - - jobject streamTrackInfo2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/stream/StreamTrackInfo"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // type - "Ljava/lang/Long;" // mindex - "Ljava/lang/String;" // mid - "Ljava/lang/Boolean;" // disabled [optional] - "Ljava/lang/String;" // codec [optional] - "Ljava/lang/String;" // description [optional] - "Ljava/lang/Boolean;" // moderated [optional] - "Ljava/lang/Boolean;" // simulcast [optional] - "Ljava/lang/Boolean;" // talking [optional] - ")V" - ); - - jobject disabled = nullptr; - jobject codec = nullptr; - jobject description = nullptr; - jobject moderated = nullptr; - jobject simulcast = nullptr; - jobject talking = nullptr; - - if (streamTrackInfo_c.disabled.has_value()) { - disabled = ctx.bool2jBoolean(streamTrackInfo_c.disabled.value()); - } - - if (streamTrackInfo_c.codec.has_value()) { - codec = ctx->NewStringUTF(streamTrackInfo_c.codec.value().c_str()); - } - - if (streamTrackInfo_c.description.has_value()) { - description = ctx->NewStringUTF(streamTrackInfo_c.description.value().c_str()); - } - - if (streamTrackInfo_c.moderated.has_value()) { - moderated = ctx.bool2jBoolean(streamTrackInfo_c.moderated.value()); - } - - if (streamTrackInfo_c.simulcast.has_value()) { - simulcast = ctx.bool2jBoolean(streamTrackInfo_c.simulcast.value()); - } - - if (streamTrackInfo_c.talking.has_value()) { - talking = ctx.bool2jBoolean(streamTrackInfo_c.talking.value()); - } - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(streamTrackInfo_c.type.c_str()), - ctx.long2jLong(streamTrackInfo_c.mindex), - ctx->NewStringUTF(streamTrackInfo_c.mid.c_str()), - disabled, - codec, - description, - moderated, - simulcast, - talking - ); - } - - jobject streamInfo2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamInfo streamInfo_c - ) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/stream/StreamInfo"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // id - "Ljava/lang/String;" // userId - "Ljava/util/List;" // tracks - "Ljava/lang/String;" // metadata - "Ljava/lang/Boolean;" // dummy - "Ljava/lang/Boolean;" // talking - ")V" - ); - - jobject metadata = nullptr; - jobject dummy = nullptr; - jobject talking = nullptr; - - if (streamInfo_c.metadata.has_value()) { - metadata = ctx->NewStringUTF(streamInfo_c.metadata.value().c_str()); - } - - if (streamInfo_c.dummy.has_value()) { - dummy = ctx.bool2jBoolean(streamInfo_c.dummy.value()); - } - - if (streamInfo_c.talking.has_value()) { - talking = ctx.bool2jBoolean(streamInfo_c.talking.value()); - } - - jobject tracks = ctx->NewObject(arrayCls, initArrayMID); - for (auto &track: streamInfo_c.tracks) { - ctx->CallBooleanMethod( - tracks, - addToArrayMID, - streamTrackInfo2Java(ctx, track) - ); - } - - // todo - check null? - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(streamInfo_c.id), - ctx->NewStringUTF(streamInfo_c.userId.c_str()), - tracks, - metadata, - dummy, - talking - ); - - } - - jobject publishedStreamData2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::PublishedStreamData publishedStreamData_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/stream/PublishedStreamData"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // streamRoomId - "Lcom/simplito/java/privmx_endpoint/model/stream/StreamInfo;" // stream - "Ljava/lang/String;" //userId - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(publishedStreamData_c.streamRoomId.c_str()), - streamInfo2Java(ctx, publishedStreamData_c.stream), - ctx->NewStringUTF(publishedStreamData_c.userId.c_str()) - ); - } - - jobject streamPublishResult2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamPublishResult streamPublishResult_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/stream/StreamPublishResult"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Boolean;" // published - "Lcom/simplito/java/privmx_endpoint/model/stream/PublishedStreamData;" // data - ")V" - ); - - jobject data = nullptr; - if (streamPublishResult_c.data.has_value()) { - data = publishedStreamData2Java(ctx, streamPublishResult_c.data.value()); - } - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.bool2jBoolean(streamPublishResult_c.published), - data - ); - } - - jobject remoteStreamId2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::RemoteStreamId remoteStreamId_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/RemoteStreamId"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // value - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(remoteStreamId_c) - ); - } - - jobject frame2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::Frame &frame_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Frame"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "()V" - ); - - return ctx->NewObject( - itemCls, - initItemMID - ); - } - } // streams - } // wrapper -} // privmx \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/parser.cpp b/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/parser.cpp deleted file mode 100644 index 5edbfa33..00000000 --- a/jni-wrappers/privmx-endpoint/src/cpp/streams/parsers/parser.cpp +++ /dev/null @@ -1,106 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h" - -using namespace privmx::endpoint; - -// streams -privmx::endpoint::stream::DeviceType parseDeviceType(JniContextUtils &ctx, jobject type) { - jclass itemClass = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/DeviceType)"); - jmethodID ordinalMethod = ctx->GetMethodID(itemClass, "ordinal", "()I"); - jint ordinalMID = ctx->CallIntMethod(type, ordinalMethod); - - privmx::endpoint::stream::DeviceType type_c = static_cast(ordinalMID); - - return type_c; -} - -privmx::endpoint::stream::MediaDevice parseMediaDevice(JniContextUtils &ctx, jobject mediaDevice) { - auto result = privmx::endpoint::stream::MediaDevice(); - - jclass mediaDeviceCls = ctx->GetObjectClass(mediaDevice); - jfieldID name = ctx->GetFieldID(mediaDeviceCls, "name", "Ljava/lang/String;"); - jfieldID id = ctx->GetFieldID(mediaDeviceCls, "id", "Ljava/lang/String;"); - jfieldID type = ctx->GetFieldID(mediaDeviceCls, "type", - "Lcom/simplito/java/privmx_endpoint/model/streams/DeviceType;"); - - result.name = ctx.jString2string( - (jstring) ctx->GetObjectField(mediaDevice, name)); - result.id = ctx.jString2string( - (jstring) ctx->GetObjectField(mediaDevice, id)); - result.type = parseDeviceType(ctx, ctx->GetObjectField(mediaDevice, type)); - - return result; -} - -privmx::endpoint::stream::StreamHandle parseStreamHandle( - JniContextUtils &ctx, - jobject streamHandle -) { - jclass streamHandleCls = ctx->GetObjectClass(streamHandle); - jfieldID valueFID = ctx->GetFieldID(streamHandleCls, "value", "Ljava/lang/Long;"); - - return jobject2long(ctx, ctx->GetObjectField(streamHandle, valueFID)); -} - -privmx::endpoint::stream::Settings parseSettings(JniContextUtils &ctx, jobject settings){ - auto result = privmx::endpoint::stream::Settings(); - return result; -} - -privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env,jobject streamSettings){ - privmx::endpoint::stream::StreamSettings result; -// JniContextUtils ctx(env); -// jclass cls = ctx->GetObjectClass(streamSettings); -//// StreamSettingsJNI streamSettingsJni (env, streamSettings); -// -// jfieldID settingsFID = env->GetFieldID( -// env->GetObjectClass(streamSettings), -// "settings", -// "Lcom/simplito/java/privmx_endpoint/model/streams/Settings;" -// ); -// -// jobject jsettings = ctx->GetObjectField(streamSettings, settingsFID); -// -// result.settings = parseSettings(ctx, jsettings); -//// result.OnFrame = streamSettingsJni.OnFrame; -//// result.OnVideo = streamSettingsJni.OnVideo; -//// result.OnVideoRemove = streamSettingsJni.OnVideoRemove; -// - return result; -} - -privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription){ - privmx::endpoint::stream::StreamSubscription result; - jclass cls = ctx->GetObjectClass(streamSubscription); - jfieldID streamIdFID = ctx->GetFieldID( - ctx->GetObjectClass(streamSubscription), - "streamId", - "J" - ); - - jfieldID trackIdFID = ctx->GetFieldID( - ctx->GetObjectClass(streamSubscription), - "streamTrackId", - "Ljava/lang/String;" - ); - - jlong streamId = ctx->GetLongField(streamSubscription, streamIdFID); - jobject streamTrackId = ctx->GetObjectField(streamSubscription, trackIdFID); - - result.streamId = streamId; - if(streamTrackId != nullptr) result.streamTrackId = jobject2string(ctx, streamTrackId); - - return result; -} \ No newline at end of file From 84db6ddc356167930096af84af1f56032aaad03d Mon Sep 17 00:00:00 2001 From: Doominika Date: Fri, 20 Feb 2026 13:33:39 +0100 Subject: [PATCH 14/19] feat: uncomment implemented methods --- .../modules/stream/StreamApiLow.java | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java index e872f588..ff809f7e 100644 --- a/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java +++ b/privmx-endpoint/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java @@ -14,6 +14,7 @@ import com.simplito.java.privmx_endpoint.model.ContainerPolicy; import com.simplito.java.privmx_endpoint.model.PagingList; import com.simplito.java.privmx_endpoint.model.UserWithPubKey; +import com.simplito.java.privmx_endpoint.model.stream.SdpWithTypeModel; import com.simplito.java.privmx_endpoint.model.stream.Settings; import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; @@ -21,6 +22,8 @@ import com.simplito.java.privmx_endpoint.model.stream.StreamRoom; import com.simplito.java.privmx_endpoint.model.stream.StreamSubscription; import com.simplito.java.privmx_endpoint.model.stream.TurnCredentials; +import com.simplito.java.privmx_endpoint.model.stream.events.eventSelectorTypes.StreamEventSelectorType; +import com.simplito.java.privmx_endpoint.model.stream.events.eventTypes.StreamEventType; import com.simplito.java.privmx_endpoint.modules.core.Connection; import com.simplito.java.privmx_endpoint.modules.event.EventApi; @@ -183,8 +186,7 @@ public native StreamHandle createStream( public native StreamPublishResult publishStream(StreamHandle streamHandle); - // todo -// public native StreamPublishResult updateStream(StreamHandle streamHandle); + public native StreamPublishResult updateStream(StreamHandle streamHandle); public native void unpublishStream(StreamHandle streamHandle); @@ -196,31 +198,28 @@ public native StreamHandle createStream( public native void trickle(long sessionId, String candidateAsJson); - - // todo -// public native void acceptOfferOnReconfigure( -// long sessionId, -// SdpWithTypeModel sdp -// ); + public native void acceptOfferOnReconfigure( + long sessionId, + SdpWithTypeModel sdp + ); public native List subscribeFor(List subscriptionQueries); public native void unsubscribeFrom(List subscriptionIds); -// private native String buildSubscriptionQuery(long eventType, long selectorType, String selectorId); -// -// public String buildSubscriptionQuery( -// StreamEventType eventType, -// StreamEventSelectorType selectorType, -// String selectorId -// ) { -// return buildSubscriptionQuery( -// eventType.ordinal(), -// selectorType.ordinal(), -// selectorId -// ); -// } + private native String buildSubscriptionQuery(long eventType, long selectorType, String selectorId); + public String buildSubscriptionQuery( + StreamEventType eventType, + StreamEventSelectorType selectorType, + String selectorId + ) { + return buildSubscriptionQuery( + eventType.ordinal(), + selectorType.ordinal(), + selectorId + ); + } public native void keyManagement(String streamRoomId, boolean disable); From fcd92df19923cb746440ff7496a2d3435ce04563 Mon Sep 17 00:00:00 2001 From: Doominika Date: Fri, 20 Feb 2026 13:33:54 +0100 Subject: [PATCH 15/19] feat: init method in jni --- .../src/cpp/modules/StreamApiLow.cpp | 78 ++++--------------- 1 file changed, 17 insertions(+), 61 deletions(-) diff --git a/jni-wrappers/privmx-endpoint/src/cpp/modules/StreamApiLow.cpp b/jni-wrappers/privmx-endpoint/src/cpp/modules/StreamApiLow.cpp index ca5814bc..dfdf24c4 100644 --- a/jni-wrappers/privmx-endpoint/src/cpp/modules/StreamApiLow.cpp +++ b/jni-wrappers/privmx-endpoint/src/cpp/modules/StreamApiLow.cpp @@ -26,77 +26,33 @@ StreamApiLow *getStreamApi(JniContextUtils &ctx, jobject streamApiInstance) { return (stream::StreamApiLow *) ctx.getObject(apiLong).getLongValue(); } -//extern "C" -//JNIEXPORT jobject JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_init( -// JNIEnv *env, -// jobject thiz, -// jobject connection, -// jobject eventApi -//) { -// JniContextUtils ctx(env); -// jobject result; -// -// if (ctx.nullCheck(connection, "Connection") || -// ctx.nullCheck(eventApi, "EventApi")) { -// return nullptr; -// } -// -//// ctx.callResultEndpointApi(&result, [&ctx, &env, &thiz, &connection, &eventApi] { -// auto connection_c = getConnection(env, connection); -// auto eventApi_c = getEventApi(ctx, eventApi); -// auto streamApiLow = stream::StreamApiLow::create( -// *connection_c, -// *eventApi_c -// ); -// auto streamApiLow_ptr = new stream::StreamApiLow(); -// *streamApiLow_ptr = streamApiLow; -// return ctx.long2jLong((jlong) streamApiLow_ptr); -//// }); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} - extern "C" JNIEXPORT jobject JNICALL -Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_create( +Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_init( JNIEnv *env, - jclass clazz, + jobject thiz, jobject connection, jobject eventApi ) { JniContextUtils ctx(env); - if (ctx.nullCheck(connection, "Connection")) { - return nullptr; - } - -// jobject result; -// ctx.callResultEndpointApi(&result, [&ctx, &env, &clazz, &connection, &eventApi] { - jmethodID initMID = ctx->GetMethodID(clazz, "", - "(Ljava/lang/Long;)V"); - auto connection_c = getConnection(env, connection); - auto eventApi_c = getEventApi(env, eventApi); - auto streamApiLow = StreamApiLow::create( - *connection_c, - *eventApi_c - ); - auto *api = new StreamApiLow(); - *api = streamApiLow; - - jobject result = ctx->NewObject( - clazz, - initMID, - ctx.long2jLong((jlong) api) - ); - return result; + jobject result; -// }); - if (ctx->ExceptionCheck()) { + if (ctx.nullCheck(connection, "Connection") || + ctx.nullCheck(eventApi, "EventApi")) { return nullptr; } - return result; + + ctx.callResultEndpointApi(&result, [&ctx, &env, &connection, &eventApi] { + auto connection_c = getConnection(env, connection); + auto eventApi_c = getEventApi(env, eventApi); + auto streamApiLow = stream::StreamApiLow::create( + *connection_c, + *eventApi_c + ); + auto streamApiLow_ptr = new stream::StreamApiLow(); + *streamApiLow_ptr = streamApiLow; + return ctx.long2jLong((jlong) streamApiLow_ptr); + }); } extern "C" From afa11ef1e043920af2d4e962d2fe0db309c64186 Mon Sep 17 00:00:00 2001 From: Doominika Date: Fri, 20 Feb 2026 13:34:15 +0100 Subject: [PATCH 16/19] feat: correct imports --- .../java/privmx_endpoint/modules/stream/StreamApi.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java index f1415aff..88ec05bc 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java @@ -15,14 +15,14 @@ import com.simplito.java.privmx_endpoint.model.MediaDevice; import com.simplito.java.privmx_endpoint.model.PagingList; import com.simplito.java.privmx_endpoint.model.UserWithPubKey; -import com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes.StreamEventSelectorType; -import com.simplito.java.privmx_endpoint.model.events.eventTypes.StreamEventType; import com.simplito.java.privmx_endpoint.model.stream.Settings; +import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; import com.simplito.java.privmx_endpoint.model.stream.StreamPublishResult; import com.simplito.java.privmx_endpoint.model.stream.StreamRoom; -import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; import com.simplito.java.privmx_endpoint.model.stream.StreamSubscription; +import com.simplito.java.privmx_endpoint.model.stream.events.eventSelectorTypes.StreamEventSelectorType; +import com.simplito.java.privmx_endpoint.model.stream.events.eventTypes.StreamEventType; import org.webrtc.AudioSource; import org.webrtc.AudioTrack; From 2dd746062c7eb51de65934222300e689799dfc19 Mon Sep 17 00:00:00 2001 From: Doominika Date: Fri, 20 Feb 2026 13:34:29 +0100 Subject: [PATCH 17/19] feat: remove class --- .../modules/stream/StreamApiLow.java | 236 ------------------ 1 file changed, 236 deletions(-) delete mode 100644 privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java 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 deleted file mode 100644 index b21a3892..00000000 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApiLow.java +++ /dev/null @@ -1,236 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2025 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package com.simplito.java.privmx_endpoint.modules.stream; - -import com.simplito.java.privmx_endpoint.model.ContainerPolicy; -import com.simplito.java.privmx_endpoint.model.PagingList; -import com.simplito.java.privmx_endpoint.model.UserWithPubKey; -import com.simplito.java.privmx_endpoint.model.events.eventSelectorTypes.StreamEventSelectorType; -import com.simplito.java.privmx_endpoint.model.events.eventTypes.StreamEventType; -import com.simplito.java.privmx_endpoint.model.stream.SdpWithTypeModel; -import com.simplito.java.privmx_endpoint.model.stream.Settings; -import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; -import com.simplito.java.privmx_endpoint.model.stream.StreamInfo; -import com.simplito.java.privmx_endpoint.model.stream.StreamPublishResult; -import com.simplito.java.privmx_endpoint.model.stream.StreamRoom; -import com.simplito.java.privmx_endpoint.model.stream.StreamSubscription; -import com.simplito.java.privmx_endpoint.model.stream.TurnCredentials; -import com.simplito.java.privmx_endpoint.modules.core.Connection; -import com.simplito.java.privmx_endpoint.modules.event.EventApi; - -import java.util.List; - -public class StreamApiLow implements AutoCloseable { - static { -// System.loadLibrary("crypto"); -// System.loadLibrary("ssl"); -// System.loadLibrary("privmx-endpoint-java"); -// System.loadLibrary("privmx-endpoint-streams-android"); - } - - @SuppressWarnings("FieldCanBeLocal") - private final Long api; - - private StreamApiLow(Long api) { - this.api = api; - } - -// private native Long init(Connection connection, EventApi eventApi) throws IllegalStateException; - - public static native StreamApiLow create( - Connection connection, - EventApi eventApi - ); - -// public StreamApiLow( -// Connection connection -// ) throws IllegalStateException { -// this(connection, null); -// } - -// public StreamApiLow( -// Connection connection, -// EventApi eventApi -// ) throws IllegalStateException { -// Objects.requireNonNull(connection); -// EventApi tmpEventApi = eventApi == null ? new EventApi(connection) : null; -// this.api = init( -// connection, -// Optional.ofNullable(eventApi).orElse(tmpEventApi) -// ); -// try { -// if (eventApi != null) tmpEventApi.close(); -// } catch (Exception ignore) { -// } -// } - - public native List getTurnCredentials(); - - public String createStreamRoom( - String contextId, - List users, - List managers, - byte[] publicMeta, - byte[] privateMeta - ) { - return this.createStreamRoom(contextId, users, managers, publicMeta, privateMeta, null); - } - - public native String createStreamRoom( - String contextId, - List users, - List managers, - byte[] publicMeta, - byte[] privateMeta, - ContainerPolicy policies - ); - - //TODO: write methods with default values for force and forceGenerateNewKey parameters - public void updateStreamRoom( - String streamRoomId, - List users, - List managers, - byte[] publicMeta, - byte[] privateMeta, - long version, - boolean force, - boolean forceGenerateNewKey - ) { - this.updateStreamRoom(streamRoomId, users, managers, publicMeta, privateMeta, version, force, forceGenerateNewKey, null); - } - - public native void updateStreamRoom( - String streamRoomId, - List users, - List managers, - byte[] publicMeta, - byte[] privateMeta, - long version, - boolean force, - boolean forceGenerateNewKey, - ContainerPolicy policies - ); - - public native PagingList listStreamRooms( - String contextId, - long skip, - long limit, - String sortOrder, - String lastId, - String sortBy, - String queryAsJson - ); - - public PagingList listStreamRooms( - String contextId, - long skip, - long limit, - String sortOrder, - String lastId, - String sortBy - ){ - return listStreamRooms(contextId, skip, limit, sortOrder, lastId, sortBy, null); - } - public PagingList listStreamRooms( - String contextId, - long skip, - long limit, - String sortOrder, - String lastId - ){ - return listStreamRooms(contextId, skip, limit, sortOrder, lastId, null, null); - } - - public PagingList listStreamRooms( - String contextId, - long skip, - long limit, - String sortOrder - ){ - return listStreamRooms(contextId, skip, limit, sortOrder, null, null, null); - } - - public PagingList listStreamRooms( - String contextId, - long skip, - long limit - ){ - return listStreamRooms(contextId, skip, limit, "desc", null, null, null); - } - - public native StreamRoom getStreamRoom(String streamRoomId); - - public native void deleteStreamRoom(String streamRoomId); - - // Stream - public native List listStreams(String streamRoomId); - - public native void joinStreamRoom( - String streamRoomId, - WebRTCInterface webRtc - ); - - public native void leaveStreamRoom(String streamRoomId); - - public native StreamHandle createStream( - String streamRoomId - ); - - public native StreamPublishResult publishStream(StreamHandle streamHandle); - - // todo - add jni -// public native StreamPublishResult updateStream(StreamHandle streamHandle); - - public native void unpublishStream(StreamHandle streamHandle); - - public native void subscribeToRemoteStreams(String streamRoomId, List subscriptions, Settings options); - - public native void modifyRemoteStreamsSubscriptions(String streamRoomId, List subscriptionsToAdd, List subscriptionsToRemove, Settings options); - - public native void unsubscribeFromRemoteStreams(String streamRoomId, List subscriptionsToRemove); - - public native void trickle(long sessionId, String candidateAsJson); - - - // todo - // public native void acceptOfferOnReconfigure( - public void acceptOfferOnReconfigure( - long sessionId, - SdpWithTypeModel sdp - ){ - - } - - public native List subscribeFor(List subscriptionQueries); - - public native void unsubscribeFrom(List subscriptionIds); - - // todo - // public native String buildSubscriptionQuery( - public String buildSubscriptionQuery ( - StreamEventType eventType, - StreamEventSelectorType selectorType, - String selectorId - ){ - return ""; - } - - - public native void keyManagement(String streamRoomId, boolean disable); - - private native void deinit() throws IllegalStateException; - - @Override - public void close() throws Exception { - deinit(); - } -} From 44060a4244a8677ced6b1f44d62498c1af04093a Mon Sep 17 00:00:00 2001 From: Doominika Date: Fri, 20 Feb 2026 13:52:34 +0100 Subject: [PATCH 18/19] feat: remove stream parsers --- .../parsers/model_native_initializers.cpp | 575 ----- .../wrapper/streams/parsers/parser.cpp | 105 - .../parsers/model_native_initializers.h | 68 - .../endpoint/wrapper/streams/parsers/parser.h | 33 - .../parsers/model_native_initializers.cpp | 1959 ----------------- .../endpoint/streams/parsers/parser.cpp | 104 - 6 files changed, 2844 deletions(-) delete mode 100644 jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.cpp delete mode 100644 jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/parser.cpp delete mode 100644 jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h delete mode 100644 jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/parser.h delete mode 100644 jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/model_native_initializers.cpp delete mode 100644 jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/parser.cpp diff --git a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.cpp b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.cpp deleted file mode 100644 index acb00c61..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.cpp +++ /dev/null @@ -1,575 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h" - -namespace privmx { - namespace wrapper { - namespace streams { - - //Streams - jobject keyType2Java(JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c) { - jclass keyTypeClass = ctx.findClass("com/simplito/java/privmx_endpoint/model/KeyType"); - jfieldID caseFieldId = nullptr; - switch (keyType_c) { - case privmx::endpoint::stream::KeyType::LOCAL: - caseFieldId = ctx->GetStaticFieldID( - keyTypeClass, - "LOCAL", - "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); - break; - default: - caseFieldId = ctx->GetStaticFieldID( - keyTypeClass, - "REMOTE", - "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); - break; - } - return ctx->GetStaticObjectField(keyTypeClass, caseFieldId); - } - - jobject key2Java(JniContextUtils &ctx, privmx::endpoint::stream::Key key_c) { - jclass keyCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/Key"); - jmethodID initKeyMID = ctx->GetMethodID( - keyCls, - "", - "(Ljava/lang/String;[BLcom/simplito/java/privmx_endpoint/model/KeyType;)V" - ); - - jbyteArray jKey = ctx->NewByteArray(key_c.key.size()); - ctx->SetByteArrayRegion(jKey, 0, key_c.key.size(), (jbyte *) key_c.key.data()); - - return ctx->NewObject( - keyCls, - initKeyMID, - ctx->NewStringUTF(key_c.keyId.c_str()), - jKey, - keyType2Java(ctx, key_c.type) - ); - } - -// jobject -// streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c) { -// jclass streamRoomCls = ctx.findClass( -// "com/simplito/java/privmx_endpoint/model/StreamRoom"); -// jmethodID initStreamRoomMID = ctx->GetMethodID( -// streamRoomCls, -// "", -// "(" -// "Ljava/lang/String;" //contextId -// "Ljava/lang/String;" //streamRoomId -// "Ljava/lang/Long;" //createDate -// "Ljava/lang/String;" //creator -// "Ljava/lang/Long;" //lastModificationDate -// "Ljava/lang/String;" //lastModifier -// "Ljava/util/List;" //users -// "Ljava/util/List;" //managers -// "Ljava/lang/Long;" //version -// "[B" //publicMeta -// "[B" //privateMeta -// "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy -// "Ljava/lang/Long;" //statusCode -// ")V" -// ); -// -// jclass arrayCls = ctx.findClass("java/util/ArrayList"); -// jmethodID initArrayMID = ctx->GetMethodID( -// arrayCls, -// "", -// "()V"); -// jmethodID addToArrayMID = ctx->GetMethodID( -// arrayCls, -// "add", -// "(Ljava/lang/Object;)Z" -// ); -// jstring contextId = ctx->NewStringUTF(streamRoom_c.contextId.c_str()); -// jstring streamRoomId = ctx->NewStringUTF(streamRoom_c.streamRoomId.c_str()); -// jstring creator = ctx->NewStringUTF(streamRoom_c.creator.c_str()); -// jstring lastModifier = ctx->NewStringUTF(streamRoom_c.lastModifier.c_str()); -// jobject users = ctx->NewObject(arrayCls, initArrayMID); -// jobject managers = ctx->NewObject(arrayCls, initArrayMID); -// jbyteArray publicMeta = ctx->NewByteArray(streamRoom_c.publicMeta.size()); -// jbyteArray privateMeta = ctx->NewByteArray(streamRoom_c.privateMeta.size()); -// ctx->SetByteArrayRegion(publicMeta, 0, streamRoom_c.publicMeta.size(), -// (jbyte *) streamRoom_c.publicMeta.data()); -// ctx->SetByteArrayRegion(privateMeta, 0, streamRoom_c.privateMeta.size(), -// (jbyte *) streamRoom_c.privateMeta.data()); -// for (auto &user: streamRoom_c.users) { -// ctx->CallBooleanMethod(users, -// addToArrayMID, -// ctx->NewStringUTF(user.c_str())); -// } -// for (auto &manager: streamRoom_c.managers) { -// ctx->CallBooleanMethod(managers, -// addToArrayMID, -// ctx->NewStringUTF(manager.c_str())); -// } -// return ctx->NewObject( -// streamRoomCls, -// initStreamRoomMID, -// contextId, -// streamRoomId, -// ctx.long2jLong(streamRoom_c.createDate), -// creator, -// ctx.long2jLong(streamRoom_c.lastModificationDate), -// lastModifier, -// users, -// managers, -// ctx.long2jLong(streamRoom_c.version), -// publicMeta, -// privateMeta, -// containerPolicy2Java(ctx, streamRoom_c.policy), -// ctx.long2jLong(streamRoom_c.statusCode) -// ); -// } - - jobject stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c) { - jclass streamCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/Stream"); - jmethodID initStreamMID = ctx->GetMethodID( - streamCls, - "", - "(" - "Ljava/lang/Long;" //streamId - "Ljava/lang/String;" //userId - ")V" - ); - return ctx->NewObject( - streamCls, - initStreamMID, - ctx.long2jLong(stream_c.streamId), - ctx->NewStringUTF(stream_c.userId.c_str()) - ); - } - - jobject - turnCredentials2Java(JniContextUtils &ctx, - privmx::endpoint::stream::TurnCredentials turnCredentials_c) { - jclass turnCredentialsCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/TurnCredentials"); - jmethodID initTurnCredentialsMID = ctx->GetMethodID( - turnCredentialsCls, - "", - "(" - "Ljava/lang/String;" //url - "Ljava/lang/String;" //username - "Ljava/lang/String;" //password - "Ljava/lang/Long;" //expirationTime - ")V" - ); - return ctx->NewObject( - turnCredentialsCls, - initTurnCredentialsMID, - ctx->NewStringUTF(turnCredentials_c.url.c_str()), - ctx->NewStringUTF(turnCredentials_c.username.c_str()), - ctx->NewStringUTF(turnCredentials_c.password.c_str()), - ctx.long2jLong(turnCredentials_c.expirationTime) - ); - } - - jobject - sdpWithTypeModel2Java(JniContextUtils &ctx, - privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c) { - jclass sdpWithTypeModelCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/SdpWithTypeModel"); - jmethodID initSdpWithTypeModelMID = ctx->GetMethodID( - sdpWithTypeModelCls, - "", - "(" - "Ljava/lang/String;" //url - "Ljava/lang/String;" //username - ")V" - ); - return ctx->NewObject( - sdpWithTypeModelCls, - initSdpWithTypeModelMID, - ctx->NewStringUTF(sdpWithTypeModel_c.sdp.c_str()), - ctx->NewStringUTF(sdpWithTypeModel_c.type.c_str()) - ); - } - - // Stream - jobject streamRoom2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamRoom streamRoom_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamRoom"); - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // contextId - "Ljava/lang/String;" // streamRoomId - "Ljava/lang/Long;" // createDate - "Ljava/lang/String;" // creator - "Ljava/lang/Long;" // lastModificationDate - "Ljava/lang/String;" // lastModifier - "Ljava/util/List;" // users - "Ljava/util/List;" // managers - "Ljava/lang/Long;" // version - "[B" // publicMeta - "[B" // privateMeta - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" // policy - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - ")V" - ); - - jbyteArray publicMeta = ctx->NewByteArray(streamRoom_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(streamRoom_c.privateMeta.size()); - - ctx->SetByteArrayRegion(publicMeta, 0, streamRoom_c.publicMeta.size(), - (jbyte *) streamRoom_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, streamRoom_c.privateMeta.size(), - (jbyte *) streamRoom_c.privateMeta.data()); - - jobject users = vectorTojArray(ctx, streamRoom_c.users, string2jobject); - jobject managers = vectorTojArray(ctx, streamRoom_c.managers, string2jobject); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(streamRoom_c.contextId.c_str()), - ctx->NewStringUTF(streamRoom_c.streamRoomId.c_str()), - ctx.long2jLong(streamRoom_c.createDate), - ctx->NewStringUTF(streamRoom_c.creator.c_str()), - ctx.long2jLong(streamRoom_c.lastModificationDate), - ctx->NewStringUTF(streamRoom_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(streamRoom_c.version), - publicMeta, - privateMeta, - privmx::wrapper::containerPolicy2Java(ctx, streamRoom_c.policy), - ctx.long2jLong(streamRoom_c.statusCode), - ctx.long2jLong(streamRoom_c.schemaVersion) - ); - } - //Stream -// jobject stream2Java( -// JniContextUtils &ctx, -// privmx::endpoint::stream::Stream stream_c -// ) { -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/Stream"); -// -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "(" -// "Ljava/lang/Long;" // streamId -// "Ljava/lang/String;" // userId -// ")V" -// ); -// -// return ctx->NewObject( -// itemCls, -// initItemMID, -// ctx.long2jLong(stream_c.streamId), -// ctx->NewStringUTF(stream_c.userId.c_str()) -// ); -// } - - jobject deviceType2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::DeviceType deviceType_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/DeviceType"); - - jmethodID valuesMID = ctx->GetStaticMethodID(itemCls, "values", - "()[Lcom/simplito/java/privmx_endpoint/model/DeviceType;"); - - jobjectArray enumValues = (jobjectArray) ctx->CallStaticObjectMethod(itemCls, - valuesMID); - - return (jobject) ctx->GetObjectArrayElement(enumValues, (int) deviceType_c); - } - - - jobject mediaDevice2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::MediaDevice mediaDevice_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/MediaDevice"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // name - "Ljava/lang/String;" // id - "Lcom/simplito/java/privmx_endpoint/model/DeviceType;" // type - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(mediaDevice_c.name.c_str()), - ctx->NewStringUTF(mediaDevice_c.id.c_str()), - deviceType2Java(ctx, mediaDevice_c.type) - - ); - } - - jobject streamHandle2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamHandle streamHandle_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamHandle"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // value - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(streamHandle_c) - ); - } - - jobject streamTrackInfo2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamTrackInfo"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // type - "Ljava/lang/Long;" // mindex - "Ljava/lang/String;" // mid - "Ljava/lang/Boolean;" // disabled [optional] - "Ljava/lang/String;" // codec [optional] - "Ljava/lang/String;" // description [optional] - "Ljava/lang/Boolean;" // moderated [optional] - "Ljava/lang/Boolean;" // simulcast [optional] - "Ljava/lang/Boolean;" // talking [optional] - ")V" - ); - - jobject disabled = nullptr; - jobject codec = nullptr; - jobject description = nullptr; - jobject moderated = nullptr; - jobject simulcast = nullptr; - jobject talking = nullptr; - - if (streamTrackInfo_c.disabled.has_value()) { - disabled = ctx.bool2jBoolean(streamTrackInfo_c.disabled.value()); - } - - if (streamTrackInfo_c.codec.has_value()) { - codec = ctx->NewStringUTF(streamTrackInfo_c.codec.value().c_str()); - } - - if (streamTrackInfo_c.description.has_value()) { - description = ctx->NewStringUTF(streamTrackInfo_c.description.value().c_str()); - } - - if (streamTrackInfo_c.moderated.has_value()) { - moderated = ctx.bool2jBoolean(streamTrackInfo_c.moderated.value()); - } - - if (streamTrackInfo_c.simulcast.has_value()) { - simulcast = ctx.bool2jBoolean(streamTrackInfo_c.simulcast.value()); - } - - if (streamTrackInfo_c.talking.has_value()) { - talking = ctx.bool2jBoolean(streamTrackInfo_c.talking.value()); - } - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(streamTrackInfo_c.type.c_str()), - ctx.long2jLong(streamTrackInfo_c.mindex), - ctx->NewStringUTF(streamTrackInfo_c.mid.c_str()), - disabled, - codec, - description, - moderated, - simulcast, - talking - ); - } - - jobject - streamInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamInfo streamInfo_c) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamInfo"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // id - "Ljava/lang/String;" // userId - "Ljava/util/List;" // tracks - "Ljava/lang/Long;" // streamId - "Ljava/lang/String;" // metadata - "Ljava/lang/Boolean;" // dummy - "Ljava/lang/Boolean;" // talking - ")V" - ); - - jobject metadata = nullptr; - jobject dummy = nullptr; - jobject talking = nullptr; - - if (streamInfo_c.metadata.has_value()) { - metadata = ctx->NewStringUTF(streamInfo_c.metadata.value().c_str()); - } - - if (streamInfo_c.dummy.has_value()) { - dummy = ctx.bool2jBoolean(streamInfo_c.dummy.value()); - } - - if (streamInfo_c.talking.has_value()) { - dummy = ctx.bool2jBoolean(streamInfo_c.talking.value()); - } - - jobject tracks = ctx->NewObject(arrayCls, initArrayMID); - for (auto &track: streamInfo_c.tracks) { - - ctx->CallBooleanMethod( - tracks, - addToArrayMID, - streamTrackInfo2Java(ctx, track) - ); - } - - // todo - check null? - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(streamInfo_c.id), - ctx->NewStringUTF(streamInfo_c.userId.c_str()), - tracks, - metadata, - dummy, - talking - ); - - } - jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/PublishedStreamData"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // streamRoomId - "Lcom/simplito/java/privmx_endpoint/model/StreamInfo;" // stream - "Ljava/lang/String;" //userId - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(publishedStreamData_c.streamRoomId.c_str()), - streamInfo2Java(ctx, publishedStreamData_c.stream), - ctx->NewStringUTF(publishedStreamData_c.userId.c_str()) - ); - } - - jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamPublishResult"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Boolean;" // published - "Lcom/simplito/java/privmx_endpoint/model/PublishedStreamData;" // data - ")V" - ); - - jobject data = nullptr; - if (streamPublishResult_c.data.has_value()) { - data = publishedStreamData2Java(ctx, streamPublishResult_c.data.value()); - } - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.bool2jBoolean(streamPublishResult_c.published), - data - ); - } - - - jobject remoteStreamId2Java(JniContextUtils &ctx, - privmx::endpoint::stream::RemoteStreamId remoteStreamId_c) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/RemoteStreamId"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // value - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(remoteStreamId_c) - ); - } - - jobject frame2Java(JniContextUtils &ctx, privmx::endpoint::stream::Frame &frame_c) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Frame"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "()V" - ); - - return ctx->NewObject( - itemCls, - initItemMID - ); - } - } // streams - } // wrapper -} // privmx \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/parser.cpp b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/parser.cpp deleted file mode 100644 index 65c5fe70..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/parsers/parser.cpp +++ /dev/null @@ -1,105 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#include "privmx/endpoint/wrapper/parsers/parser.h" - -using namespace privmx::endpoint; - -// streams -privmx::endpoint::stream::DeviceType parseDeviceType(JniContextUtils &ctx, jobject type) { - jclass itemClass = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/DeviceType)"); - jmethodID ordinalMethod = ctx->GetMethodID(itemClass, "ordinal", "()I"); - jint ordinalMID = ctx->CallIntMethod(type, ordinalMethod); - - privmx::endpoint::stream::DeviceType type_c = static_cast(ordinalMID); - - return type_c; -} - -privmx::endpoint::stream::MediaDevice parseMediaDevice(JniContextUtils &ctx, jobject mediaDevice) { - auto result = privmx::endpoint::stream::MediaDevice(); - - jclass mediaDeviceCls = ctx->GetObjectClass(mediaDevice); - jfieldID name = ctx->GetFieldID(mediaDeviceCls, "name", "Ljava/lang/String;"); - jfieldID id = ctx->GetFieldID(mediaDeviceCls, "id", "Ljava/lang/String;"); - jfieldID type = ctx->GetFieldID(mediaDeviceCls, "type", - "Lcom/simplito/java/privmx_endpoint/model/streams/DeviceType;"); - - result.name = ctx.jString2string( - (jstring) ctx->GetObjectField(mediaDevice, name)); - result.id = ctx.jString2string( - (jstring) ctx->GetObjectField(mediaDevice, id)); - result.type = parseDeviceType(ctx, ctx->GetObjectField(mediaDevice, type)); - - return result; -} - -privmx::endpoint::stream::StreamHandle parseStreamHandle( - JniContextUtils &ctx, - jobject streamHandle -) { - jclass streamHandleCls = ctx->GetObjectClass(streamHandle); - jfieldID valueFID = ctx->GetFieldID(streamHandleCls, "value", "Ljava/lang/Long;"); - - return jobject2long(ctx, ctx->GetObjectField(streamHandle, valueFID)); -} - -privmx::endpoint::stream::Settings parseSettings(JniContextUtils &ctx, jobject settings){ - auto result = privmx::endpoint::stream::Settings(); - return result; -} - -privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env,jobject streamSettings){ -// privmx::endpoint::stream::StreamSettings result = privmx::wrapper::streams::StreamSettingsJNI(env, streamSettings);; -// JniContextUtils ctx(env); -// jclass cls = ctx->GetObjectClass(streamSettings); -//// StreamSettingsJNI streamSettingsJni (env, streamSettings); -// -// jfieldID settingsFID = env->GetFieldID( -// env->GetObjectClass(streamSettings), -// "settings", -// "Lcom/simplito/java/privmx_endpoint/model/streams/Settings;" -// ); -// -// jobject jsettings = ctx->GetObjectField(streamSettings, settingsFID); -// -// result.settings = parseSettings(ctx, jsettings); -//// result.OnFrame = streamSettingsJni.OnFrame; -//// result.OnVideo = streamSettingsJni.OnVideo; -//// result.OnVideoRemove = streamSettingsJni.OnVideoRemove; -// -// return result; -} - -privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription){ - privmx::endpoint::stream::StreamSubscription result; - jclass cls = ctx->GetObjectClass(streamSubscription); - jfieldID streamIdFID = ctx->GetFieldID( - ctx->GetObjectClass(streamSubscription), - "streamId", - "J" - ); - - jfieldID trackIdFID = ctx->GetFieldID( - ctx->GetObjectClass(streamSubscription), - "streamTrackId", - "Ljava/lang/String;" - ); - - jobject streamId = ctx->GetObjectField(streamSubscription, streamIdFID); - jobject streamTrackId = ctx->GetObjectField(streamSubscription, trackIdFID); - - result.streamId = jobject2long(ctx, streamId); - if(streamTrackId != nullptr) result.streamTrackId = jobject2string(ctx, streamTrackId); - - return result; -} \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h b/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h deleted file mode 100644 index 6e3364db..00000000 --- a/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h +++ /dev/null @@ -1,68 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#ifndef PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H -#define PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H - -#include -#include "privmx/endpoint/wrapper/utils/utils.hpp" -#include "privmx/endpoint/wrapper/parsers/parser.h" -#include "privmx/endpoint/stream/Types.hpp" -#include "privmx/endpoint/stream/webrtc/Types.hpp" -#include "privmx/endpoint/stream/StreamApi.hpp" -#include "privmx/endpoint/stream/StreamApiLow.hpp" -#include "privmx/endpoint/stream/WebRTCInterface.hpp" - -namespace privmx { - namespace wrapper { - //Stream - jobject streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c); - - jobject stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c); - - jobject deviceType2Java(JniContextUtils &ctx,privmx::endpoint::stream::DeviceType deviceType_c); - - jobject mediaDevice2Java(JniContextUtils &ctx, privmx::endpoint::stream::MediaDevice mediaDevice_c); - - jobject streamHandle2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamHandle streamHandle_c); - - jobject streamInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamInfo streamInfo_c); - - jobject streamTrackInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c); - - jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c); - - jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c); - - jobject remoteStreamId2Java(JniContextUtils &ctx, privmx::endpoint::stream::RemoteStreamId remoteStreamId_c); - - jobject frame2Java(JniContextUtils &ctx, privmx::endpoint::stream::Frame &frame_c); - - jobject keyType2Java(JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c); - - jobject key2Java(JniContextUtils &ctx, privmx::endpoint::stream::Key key_c); - - jobject - streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c); - - jobject - stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c); - - jobject - turnCredentials2Java(JniContextUtils &ctx, privmx::endpoint::stream::TurnCredentials turnCredentials_c); - - jobject - sdpWithTypeModel2Java(JniContextUtils &ctx, privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c); - - } // wrapper -} // privmx - -#endif //PRIVMXENDPOINTWRAPPER_MODEL_NATIVE_INITIALIZERS_H diff --git a/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/parser.h b/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/parser.h deleted file mode 100644 index 9bb18e12..00000000 --- a/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/parsers/parser.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#ifndef PRIVMX_POCKET_LIB_PARSER_H -#define PRIVMX_POCKET_LIB_PARSER_H - -#include "utils.hpp" -//#include "modules/StreamSettingsJNI.h" -#include -#include "model_native_initializers.h" - -// streams -privmx::endpoint::stream::DeviceType parseDeviceType(JniContextUtils &ctx, jobject type); - -privmx::endpoint::stream::MediaDevice parseMediaDevice(JniContextUtils &ctx, jobject mediaDevice); - -privmx::endpoint::stream::StreamHandle parseStreamHandle(JniContextUtils &ctx, jobject streamHandle); - -privmx::endpoint::stream::Settings parseSettings(JniContextUtils &ctx, jobject settings); - -privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env, jobject streamSettings); - -privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription); - -#endif //PRIVMX_POCKET_LIB_PARSER_H diff --git a/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/model_native_initializers.cpp b/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/model_native_initializers.cpp deleted file mode 100644 index 8af79e41..00000000 --- a/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/model_native_initializers.cpp +++ /dev/null @@ -1,1959 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#include "privmx/endpoint/wrapper/streams/model_native_initializers.h" -#include "libs/include/privmx/endpoint/stream/Types.hpp" -#include "libs/Darwin/arm64/include/privmx/endpoint/stream/Types.hpp" - -namespace privmx { - namespace wrapper { - - //Core - jobject - itemPolicy2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ItemPolicy itemPolicy - ) { - jclass itemPolicyCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ItemPolicy"); - jmethodID initItemPolicyMID = ctx->GetMethodID( - itemPolicyCls, - "", - "(" - "Ljava/lang/String;" // get - "Ljava/lang/String;" // listMy - "Ljava/lang/String;" // listAll - "Ljava/lang/String;" // create - "Ljava/lang/String;" // update - "Ljava/lang/String;" // delete - ")V" - ); - jstring get = nullptr; - jstring listMy = nullptr; - jstring listAll = nullptr; - jstring create = nullptr; - jstring update = nullptr; - jstring delete_ = nullptr; - if (itemPolicy.get.has_value()) get = ctx->NewStringUTF(itemPolicy.get->c_str()); - if (itemPolicy.listMy.has_value()) - listMy = ctx->NewStringUTF(itemPolicy.listMy->c_str()); - if (itemPolicy.listAll.has_value()) - listAll = ctx->NewStringUTF(itemPolicy.listAll->c_str()); - if (itemPolicy.create.has_value()) - create = ctx->NewStringUTF(itemPolicy.create->c_str()); - if (itemPolicy.update.has_value()) - update = ctx->NewStringUTF(itemPolicy.update->c_str()); - if (itemPolicy.delete_.has_value()) - delete_ = ctx->NewStringUTF(itemPolicy.delete_->c_str()); - return ctx->NewObject( - itemPolicyCls, - initItemPolicyMID, - get, - listMy, - listAll, - create, - update, - delete_ - ); - } - - jobject containerPolicyWithoutItem2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContainerPolicyWithoutItem containerPolicyWithoutItem - ) { - jclass containerPolicyWithoutItemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ContainerPolicyWithoutItem"); - jmethodID initContainerPolicyWithoutItemMID = ctx->GetMethodID( - containerPolicyWithoutItemCls, - "", - "(" - "Ljava/lang/String;" // get - "Ljava/lang/String;" // update - "Ljava/lang/String;" // delete - "Ljava/lang/String;" // updatePolicy - "Ljava/lang/String;" // updaterCanBeRemovedFromManagers - "Ljava/lang/String;" // ownerCanBeRemovedFromManagers - ")V" - ); - jstring get = nullptr; - jstring update = nullptr; - jstring delete_ = nullptr; - jstring updatePolicy = nullptr; - jstring updaterCanBeRemovedFromManagers = nullptr; - jstring ownerCanBeRemovedFromManagers = nullptr; - if (containerPolicyWithoutItem.get.has_value()) { - get = ctx->NewStringUTF(containerPolicyWithoutItem.get->c_str()); - } - if (containerPolicyWithoutItem.update.has_value()) { - update = ctx->NewStringUTF(containerPolicyWithoutItem.update->c_str()); - } - if (containerPolicyWithoutItem.delete_.has_value()) { - delete_ = ctx->NewStringUTF(containerPolicyWithoutItem.delete_->c_str()); - } - if (containerPolicyWithoutItem.updatePolicy.has_value()) { - updatePolicy = ctx->NewStringUTF(containerPolicyWithoutItem.updatePolicy->c_str()); - } - if (containerPolicyWithoutItem.updaterCanBeRemovedFromManagers.has_value()) { - updaterCanBeRemovedFromManagers = ctx->NewStringUTF( - containerPolicyWithoutItem.updaterCanBeRemovedFromManagers->c_str()); - } - if (containerPolicyWithoutItem.ownerCanBeRemovedFromManagers.has_value()) { - ownerCanBeRemovedFromManagers = ctx->NewStringUTF( - containerPolicyWithoutItem.ownerCanBeRemovedFromManagers->c_str()); - } - - return ctx->NewObject( - containerPolicyWithoutItemCls, - initContainerPolicyWithoutItemMID, - get, - update, - delete_, - updatePolicy, - updaterCanBeRemovedFromManagers, - ownerCanBeRemovedFromManagers - ); - } - - jobject containerPolicy2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContainerPolicy containerPolicy - ) { - jclass containerPolicyCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ContainerPolicy"); - jmethodID initContainerPolicyMID = ctx->GetMethodID( - containerPolicyCls, - "", - "(" - "Ljava/lang/String;" // get - "Ljava/lang/String;" // update - "Ljava/lang/String;" // delete - "Ljava/lang/String;" // updatePolicy - "Ljava/lang/String;" // updaterCanBeRemovedFromManagers - "Ljava/lang/String;" // ownerCanBeRemovedFromManagers - "Lcom/simplito/java/privmx_endpoint/model/ItemPolicy;" // item - ")V" - ); - jstring get = nullptr; - jstring update = nullptr; - jstring delete_ = nullptr; - jstring updatePolicy = nullptr; - jstring updaterCanBeRemovedFromManagers = nullptr; - jstring ownerCanBeRemovedFromManagers = nullptr; - jobject itemPolicy = nullptr; - if (containerPolicy.get.has_value()) { - get = ctx->NewStringUTF(containerPolicy.get->c_str()); - } - if (containerPolicy.update.has_value()) { - update = ctx->NewStringUTF(containerPolicy.update->c_str()); - } - if (containerPolicy.delete_.has_value()) { - delete_ = ctx->NewStringUTF(containerPolicy.delete_->c_str()); - } - if (containerPolicy.updatePolicy.has_value()) { - updatePolicy = ctx->NewStringUTF(containerPolicy.updatePolicy->c_str()); - } - if (containerPolicy.updaterCanBeRemovedFromManagers.has_value()) { - updaterCanBeRemovedFromManagers = ctx->NewStringUTF( - containerPolicy.updaterCanBeRemovedFromManagers->c_str()); - } - if (containerPolicy.ownerCanBeRemovedFromManagers.has_value()) { - ownerCanBeRemovedFromManagers = ctx->NewStringUTF( - containerPolicy.ownerCanBeRemovedFromManagers->c_str()); - } - if (containerPolicy.item.has_value()) { - itemPolicy = itemPolicy2Java(ctx, containerPolicy.item.value()); - } - - return ctx->NewObject( - containerPolicyCls, - initContainerPolicyMID, - get, - update, - delete_, - updatePolicy, - updaterCanBeRemovedFromManagers, - ownerCanBeRemovedFromManagers, - itemPolicy - ); - } - - // CollectionItemChange - jobject collectionItemChange2Java( - JniContextUtils &ctx, - privmx::endpoint::core::CollectionItemChange collectionItemChange_c - ) { - jclass collectionItemChangeCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/CollectionItemChange"); - jmethodID initCollectionItemChangeMID = ctx->GetMethodID( - collectionItemChangeCls, - "", - "(" - "Ljava/lang/String;Ljava/lang/String;" // itemId - "Ljava/lang/String;Ljava/lang/String;" // action - ")V" - ); - return ctx->NewObject( - collectionItemChangeCls, - initCollectionItemChangeMID, - ctx->NewStringUTF(collectionItemChange_c.itemId.c_str()), - ctx->NewStringUTF(collectionItemChange_c.action.c_str()) - ); - } - - //Context - jobject context2Java( - JniContextUtils &ctx, - privmx::endpoint::core::Context context_c - ) { - jclass contextCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Context"); - jmethodID initThreadDataMID = ctx->GetMethodID( - contextCls, - "", - "(Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - contextCls, - initThreadDataMID, - ctx->NewStringUTF(context_c.userId.c_str()), - ctx->NewStringUTF(context_c.contextId.c_str()) - ); - } - - // UserWithPubKey - jobject userWithPubKey2Java( - JniContextUtils &ctx, - privmx::endpoint::core::UserWithPubKey userWithPubKey - ) { - jclass userCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/UserWithPubKey"); - jmethodID initUserMID = ctx->GetMethodID( - userCls, - "", - "(Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - userCls, - initUserMID, - ctx->NewStringUTF(userWithPubKey.userId.c_str()), - ctx->NewStringUTF(userWithPubKey.pubKey.c_str()) - ); - } - - // UserWithPubKey - jobject userStatusChange2Java( - JniContextUtils &ctx, - privmx::endpoint::core::UserStatusChange userStatusChange - ) { - jclass userStatusCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/UserStatusChange"); - jmethodID initUserStatusMID = ctx->GetMethodID( - userStatusCls, - "", - "(" - "Ljava/lang/String;" // action - "Ljava/lang/Long;" // timestamp - ")V" - ); - return ctx->NewObject( - userStatusCls, - initUserStatusMID, - ctx->NewStringUTF(userStatusChange.action.c_str()), - ctx.long2jLong(userStatusChange.timestamp) - ); - } - - //UserInfo - jobject userInfo2Java( - JniContextUtils &ctx, - privmx::endpoint::core::UserInfo userInfo - ) { - jclass userInfoCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/UserInfo"); - jmethodID initUserInfoMID = ctx->GetMethodID( - userInfoCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/UserWithPubKey;" // userWithPubKey - "Z" // isActive - "Lcom/simplito/java/privmx_endpoint/model/UserStatusChange;" // lastStatusChange - ")V" - ); - - jobject userStatusChange = userInfo.lastStatusChange.has_value() ? - userStatusChange2Java(ctx, userInfo.lastStatusChange.value()) - : - nullptr; - return ctx->NewObject( - userInfoCls, - initUserInfoMID, - userWithPubKey2Java(ctx, userInfo.user), - (jboolean) userInfo.isActive, - userStatusChange); - } - - // UserWithAction - jobject userWithAction2Java(JniContextUtils &ctx, - privmx::endpoint::core::UserWithAction userWithAction) { - jclass userWithActionCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/UserWithAction"); - jmethodID initUserWithActionMID = ctx->GetMethodID( - userWithActionCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/UserWithPubKey;" // userWithPubKey - "Ljava/lang/String;" // action - ")V" - ); - return ctx->NewObject( - userWithActionCls, - initUserWithActionMID, - userWithPubKey2Java(ctx, userWithAction.user), - ctx->NewStringUTF(userWithAction.action.c_str()) - ); - } - - jobject bridgeIdentity2Java( - JniContextUtils &ctx, - privmx::endpoint::core::BridgeIdentity bridgeIdentity_c - ) { - jclass bridgeIdentityCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/BridgeIdentity"); - jmethodID initBridgeIdentityMID = ctx->GetMethodID( - bridgeIdentityCls, - "", - "(" - "Ljava/lang/String;" - "Ljava/lang/String;" - "Ljava/lang/String;" - ")V" - ); - - jstring pubKey_c = nullptr; - if (bridgeIdentity_c.pubKey.has_value()) { - pubKey_c = ctx->NewStringUTF(bridgeIdentity_c.pubKey.value().c_str()); - } - - jstring instanceId_c = nullptr; - if (bridgeIdentity_c.instanceId.has_value()) { - instanceId_c = ctx->NewStringUTF(bridgeIdentity_c.instanceId.value().c_str()); - } - - return ctx->NewObject( - bridgeIdentityCls, - initBridgeIdentityMID, - ctx->NewStringUTF(bridgeIdentity_c.url.c_str()), - pubKey_c, - instanceId_c - ); - } - - jobject verificationRequest2Java( - JniContextUtils &ctx, - privmx::endpoint::core::VerificationRequest verificationRequest_c - ) { - jclass verificationRequestCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/VerificationRequest"); - jmethodID initVerificationRequestMID = ctx->GetMethodID( - verificationRequestCls, - "", - "(" - "Ljava/lang/String;" - "Ljava/lang/String;" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "Lcom/simplito/java/privmx_endpoint/model/BridgeIdentity;" - ")V" - ); - - jobject bridgeIdentity = nullptr; - if (verificationRequest_c.bridgeIdentity.has_value()) { - bridgeIdentity = bridgeIdentity2Java(ctx, - verificationRequest_c.bridgeIdentity.value()); - } - - return ctx->NewObject( - verificationRequestCls, - initVerificationRequestMID, - ctx->NewStringUTF(verificationRequest_c.contextId.c_str()), - ctx->NewStringUTF(verificationRequest_c.senderId.c_str()), - ctx->NewStringUTF(verificationRequest_c.senderPubKey.c_str()), - ctx.long2jLong(verificationRequest_c.date), - bridgeIdentity - ); - } - - //Crypto - jobject extKey2Java(JniContextUtils &ctx, privmx::endpoint::crypto::ExtKey extKey_c) { - jclass ExtKeyCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/modules/crypto/ExtKey"); - jmethodID initExtKeyMID = ctx->GetMethodID( - ExtKeyCls, "", "(Ljava/lang/Long;)V"); - - auto *key = new privmx::endpoint::crypto::ExtKey(extKey_c); - return ctx->NewObject( - ExtKeyCls, - initExtKeyMID, - ctx.long2jLong((jlong) key)); - } - - jobject BIP392Java(JniContextUtils &ctx, privmx::endpoint::crypto::BIP39_t BIP39_c) { - jclass BIP39Cls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/BIP39"); - jmethodID initBIP39MID = ctx->GetMethodID( - BIP39Cls, - "", - "(" - "Ljava/lang/String;" //mnemonic - "Lcom/simplito/java/privmx_endpoint/modules/crypto/ExtKey;" //Ecc Key - "[B" // BIP-39 entropy - ")V" - ); - jbyteArray entropy = ctx->NewByteArray(BIP39_c.entropy.size()); - ctx->SetByteArrayRegion(entropy, 0, BIP39_c.entropy.size(), - (jbyte *) BIP39_c.entropy.data()); - - return ctx->NewObject( - BIP39Cls, - initBIP39MID, - ctx->NewStringUTF(BIP39_c.mnemonic.c_str()), - extKey2Java(ctx, BIP39_c.ext_key), - entropy - ); - } - - //Threads - jobject thread2Java(JniContextUtils &ctx, privmx::endpoint::thread::Thread thread_c) { - jclass threadCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Thread"); - jmethodID initThreadMID = ctx->GetMethodID( - threadCls, - "", - "(" - "Ljava/lang/String;" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "Ljava/lang/String;" - "Ljava/util/List;" - "Ljava/util/List;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "[B" - "[B" - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - ")V" - ); - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jstring threadId = ctx->NewStringUTF(thread_c.threadId.c_str()); - jstring contextId = ctx->NewStringUTF(thread_c.contextId.c_str()); - jstring creator = ctx->NewStringUTF(thread_c.creator.c_str()); - jstring lastModifier = ctx->NewStringUTF(thread_c.lastModifier.c_str()); - jobject users = ctx->NewObject(arrayCls, initArrayMID); - jobject managers = ctx->NewObject(arrayCls, initArrayMID); - jbyteArray publicMeta = ctx->NewByteArray(thread_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(thread_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, thread_c.publicMeta.size(), - (jbyte *) thread_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, thread_c.privateMeta.size(), - (jbyte *) thread_c.privateMeta.data()); - for (auto &user: thread_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - ctx->NewStringUTF(user.c_str())); - } - for (auto &manager: thread_c.managers) { - ctx->CallBooleanMethod(managers, - addToArrayMID, - ctx->NewStringUTF(manager.c_str())); - } - return ctx->NewObject( - threadCls, - initThreadMID, - contextId, - threadId, - ctx.long2jLong(thread_c.createDate), - creator, - ctx.long2jLong(thread_c.lastModificationDate), - lastModifier, - users, - managers, - ctx.long2jLong(thread_c.version), - ctx.long2jLong(thread_c.lastMsgDate), - publicMeta, - privateMeta, - containerPolicy2Java(ctx, thread_c.policy), - ctx.long2jLong(thread_c.messagesCount), - ctx.long2jLong(thread_c.statusCode), - ctx.long2jLong(thread_c.schemaVersion) - ); - } - - //Messages - jobject serverMessageInfo2Java(JniContextUtils &ctx, - privmx::endpoint::thread::ServerMessageInfo serverMessageInfo_c) { - jclass messageCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ServerMessageInfo"); - jmethodID initMessageMID = ctx->GetMethodID( - messageCls, - "", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;)V" - ); - return ctx->NewObject( - messageCls, - initMessageMID, - ctx->NewStringUTF(serverMessageInfo_c.threadId.c_str()), - ctx->NewStringUTF(serverMessageInfo_c.messageId.c_str()), - ctx.long2jLong(serverMessageInfo_c.createDate), - ctx->NewStringUTF(serverMessageInfo_c.author.c_str()) - ); - } - - jobject message2Java(JniContextUtils &ctx, privmx::endpoint::thread::Message message_c) { - jclass messageCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Message"); - jmethodID initMessageMID = ctx->GetMethodID( - messageCls, - "", - "(Lcom/simplito/java/privmx_endpoint/model/ServerMessageInfo;" - "[B" - "[B" - "[B" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - ")V" - ); - - jbyteArray publicMeta = ctx->NewByteArray(message_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(message_c.privateMeta.size()); - jbyteArray data = ctx->NewByteArray(message_c.data.size()); - ctx->SetByteArrayRegion(publicMeta, 0, message_c.publicMeta.size(), - (jbyte *) message_c.publicMeta.data()); - - ctx->SetByteArrayRegion(privateMeta, 0, message_c.privateMeta.size(), - (jbyte *) message_c.privateMeta.data()); - - ctx->SetByteArrayRegion(data, 0, message_c.data.size(), - (jbyte *) message_c.data.data()); - - return ctx->NewObject( - messageCls, - initMessageMID, - serverMessageInfo2Java(ctx, message_c.info), - publicMeta, - privateMeta, - data, - ctx->NewStringUTF(message_c.authorPubKey.c_str()), - ctx.long2jLong(message_c.statusCode), - ctx.long2jLong(message_c.schemaVersion) - ); - } - - //Store - jobject store2Java(JniContextUtils &ctx, privmx::endpoint::store::Store store_c) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - - jclass storeCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Store"); - jmethodID initStoreMID = ctx->GetMethodID( - storeCls, - "", - "(" - "Ljava/lang/String;" //storeId - "Ljava/lang/String;" //contextId - "Ljava/lang/Long;" //createDate - "Ljava/lang/String;" //creator - "Ljava/lang/Long;" //lastModificationDate - "Ljava/lang/Long;" //lastFileDate - "Ljava/lang/String;" //lastModifier - "Ljava/util/List;" //users - "Ljava/util/List;" //managers - "Ljava/lang/Long;" //version - "[B" //publicMeta - "[B" //privateMeta - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy - "Ljava/lang/Long;" //filesCount - "Ljava/lang/Long;" //statusCode - "Ljava/lang/Long;" //schemaVersion - ")V" - ); - - jobject users = ctx->NewObject(arrayCls, initArrayMID); - jobject managers = ctx->NewObject(arrayCls, initArrayMID); - jbyteArray publicMeta = ctx->NewByteArray(store_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(store_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, store_c.publicMeta.size(), - (jbyte *) store_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, store_c.privateMeta.size(), - (jbyte *) store_c.privateMeta.data()); - for (auto &user: store_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - ctx->NewStringUTF(user.c_str())); - } - for (auto &manager: store_c.managers) { - ctx->CallBooleanMethod(managers, - addToArrayMID, - ctx->NewStringUTF(manager.c_str())); - } - - return ctx->NewObject( - storeCls, - initStoreMID, - ctx->NewStringUTF(store_c.storeId.c_str()), - ctx->NewStringUTF(store_c.contextId.c_str()), - ctx.long2jLong(store_c.createDate), - ctx->NewStringUTF(store_c.creator.c_str()), - ctx.long2jLong(store_c.lastModificationDate), - ctx.long2jLong(store_c.lastFileDate), - ctx->NewStringUTF(store_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(store_c.version), - publicMeta, - privateMeta, - containerPolicy2Java(ctx, store_c.policy), - ctx.long2jLong(store_c.filesCount), - ctx.long2jLong(store_c.statusCode), - ctx.long2jLong(store_c.schemaVersion) - ); - } - - //Inbox - jobject inbox2Java(JniContextUtils &ctx, privmx::endpoint::inbox::Inbox inbox_c) { - jclass inboxCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Inbox"); - jmethodID initInboxMID = ctx->GetMethodID( - inboxCls, - "", - "(" - "Ljava/lang/String;" //inboxId - "Ljava/lang/String;" //contextId - "Ljava/lang/Long;" //createDate - "Ljava/lang/String;" //creator - "Ljava/lang/Long;" //lastModificationDate - "Ljava/lang/String;" //lastModifier - "Ljava/util/List;" //users - "Ljava/util/List;" //managers - "Ljava/lang/Long;" //version - "[B" //publicMeta - "[B" //privateMeta - "Lcom/simplito/java/privmx_endpoint/model/FilesConfig;" //filesConfig - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicyWithoutItem;" //policy - "Ljava/lang/Long;" //statusCode - "Ljava/lang/Long;" //schemaVersion - ")V" - ); - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jobject users = ctx->NewObject(arrayCls, initArrayMID); - jobject managers = ctx->NewObject(arrayCls, initArrayMID); - jbyteArray publicMeta = ctx->NewByteArray(inbox_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(inbox_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, inbox_c.publicMeta.size(), - (jbyte *) inbox_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, inbox_c.privateMeta.size(), - (jbyte *) inbox_c.privateMeta.data()); - for (auto &user: inbox_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - ctx->NewStringUTF(user.c_str())); - } - for (auto &manager: inbox_c.managers) { - ctx->CallBooleanMethod(managers, - addToArrayMID, - ctx->NewStringUTF(manager.c_str())); - } - - jobject filesConfig = nullptr; - if (inbox_c.filesConfig.has_value()) { - filesConfig = filesConfig2Java(ctx, inbox_c.filesConfig.value()); - } - - return ctx->NewObject( - inboxCls, - initInboxMID, - ctx->NewStringUTF(inbox_c.inboxId.c_str()), - ctx->NewStringUTF(inbox_c.contextId.c_str()), - ctx.long2jLong(inbox_c.createDate), - ctx->NewStringUTF(inbox_c.creator.c_str()), - ctx.long2jLong(inbox_c.lastModificationDate), - ctx->NewStringUTF(inbox_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(inbox_c.version), - publicMeta, - privateMeta, - filesConfig, - containerPolicyWithoutItem2Java(ctx, inbox_c.policy), - ctx.long2jLong(inbox_c.statusCode), - ctx.long2jLong(inbox_c.schemaVersion) - ); - } - - jobject - inboxEntry2Java(JniContextUtils &ctx, privmx::endpoint::inbox::InboxEntry inboxEntry_c) { - jclass inboxEntryCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/InboxEntry"); - jmethodID initEntryViewMID = ctx->GetMethodID( - inboxEntryCls, - "", - "(" - "Ljava/lang/String;" //entryId - "Ljava/lang/String;" //inboxId - "[B" //data - "Ljava/util/List;" //files - "Ljava/lang/String;" //authorPubKey - "Ljava/lang/Long;" // createDate - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - ")V" - ); - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jbyteArray data = ctx->NewByteArray(inboxEntry_c.data.size()); - ctx->SetByteArrayRegion(data, 0, inboxEntry_c.data.size(), - (jbyte *) inboxEntry_c.data.data()); - jobject files = ctx->NewObject(arrayCls, initArrayMID); - for (auto &file: inboxEntry_c.files) { - ctx->CallBooleanMethod(files, - addToArrayMID, - file2Java(ctx, file)); - } - return ctx->NewObject( - inboxEntryCls, - initEntryViewMID, - ctx->NewStringUTF(inboxEntry_c.entryId.c_str()), - ctx->NewStringUTF(inboxEntry_c.inboxId.c_str()), - data, - files, - ctx->NewStringUTF(inboxEntry_c.authorPubKey.c_str()), - ctx.long2jLong(inboxEntry_c.createDate), - ctx.long2jLong(inboxEntry_c.statusCode), - ctx.long2jLong(inboxEntry_c.schemaVersion) - ); - } - - jobject inboxPublicView2Java(JniContextUtils &ctx, - privmx::endpoint::inbox::InboxPublicView inboxPublicView_c) { - jclass inboxPublicViewCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/InboxPublicView"); - jmethodID initInboxPublicViewMID = ctx->GetMethodID( - inboxPublicViewCls, - "", - "(" - "Ljava/lang/String;" - "Ljava/lang/Long;" - "[B" - ")V" - ); - jbyteArray publicMeta = ctx->NewByteArray(inboxPublicView_c.publicMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, inboxPublicView_c.publicMeta.size(), - (jbyte *) inboxPublicView_c.publicMeta.data()); - return ctx->NewObject( - inboxPublicViewCls, - initInboxPublicViewMID, - ctx->NewStringUTF(inboxPublicView_c.inboxId.c_str()), - ctx.long2jLong(inboxPublicView_c.version), - publicMeta - ); - } - - jobject - filesConfig2Java(JniContextUtils &ctx, privmx::endpoint::inbox::FilesConfig filesConfig_c) { - jclass filesConfigCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/FilesConfig"); - jmethodID initFilesConfigMID = ctx->GetMethodID( - filesConfigCls, - "", - "(" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - ")V" - ); - return ctx->NewObject( - filesConfigCls, - initFilesConfigMID, - ctx.long2jLong(filesConfig_c.minCount), - ctx.long2jLong(filesConfig_c.maxCount), - ctx.long2jLong(filesConfig_c.maxFileSize), - ctx.long2jLong(filesConfig_c.maxWholeUploadSize) - ); - } - - //Files - jobject serverFileInfo2Java(JniContextUtils &ctx, - privmx::endpoint::store::ServerFileInfo serverFileInfo_c) { - jclass serverFileInfoCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ServerFileInfo"); - jmethodID initServerFileInfoMID = ctx->GetMethodID( - serverFileInfoCls, - "", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;)V" - ); - return ctx->NewObject( - serverFileInfoCls, - initServerFileInfoMID, - ctx->NewStringUTF(serverFileInfo_c.storeId.c_str()), - ctx->NewStringUTF(serverFileInfo_c.fileId.c_str()), - ctx.long2jLong(serverFileInfo_c.createDate), - ctx->NewStringUTF(serverFileInfo_c.author.c_str()) - ); - } - - jobject file2Java(JniContextUtils &ctx, privmx::endpoint::store::File file_c) { - jclass fileCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/File"); - jmethodID initFileMID = ctx->GetMethodID( - fileCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/ServerFileInfo;" // info - "[B" // publicMeta - "[B" // privateMeta - "Ljava/lang/Long;" // size - "Ljava/lang/String;" // authorPubKey - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - "Z" // randomWrite - ")V" - ); - - jbyteArray publicMeta = ctx->NewByteArray(file_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(file_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, file_c.publicMeta.size(), - (jbyte *) file_c.publicMeta.data()); - - ctx->SetByteArrayRegion(privateMeta, 0, file_c.privateMeta.size(), - (jbyte *) file_c.privateMeta.data()); - - return ctx->NewObject( - fileCls, - initFileMID, - serverFileInfo2Java(ctx, file_c.info), - publicMeta, - privateMeta, - ctx.long2jLong(file_c.size), - ctx->NewStringUTF(file_c.authorPubKey.c_str()), - ctx.long2jLong(file_c.statusCode), - ctx.long2jLong(file_c.schemaVersion), - (jboolean) file_c.randomWrite - ); - } - - jobject fileChange2Java( - JniContextUtils &ctx, - privmx::endpoint::store::FileChange file_change_c - ) { - jclass fileChangeCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/FileChange"); - - jmethodID initFcMID = ctx->GetMethodID( - fileChangeCls, - "", - "(" - "Ljava/lang/Long;" - "Ljava/lang/Long;" - "Z" - ")V" - ); - - jobject javaPos = ctx.long2jLong(file_change_c.pos); - jobject javaLength = ctx.long2jLong(file_change_c.length); - jboolean javaTruncate = (jboolean) file_change_c.truncate; - - return ctx->NewObject( - fileChangeCls, - initFcMID, - javaPos, - javaLength, - javaTruncate - ); - } - - //Event - jobject contextUsersStatusChangeData2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContextUsersStatusChangedEventData contextUsersStatusChangeData_c - ) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jclass contextUsersStatusChangeDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ContextUsersStatusChangedEventData"); - jmethodID initContextUsersStatusChangeDataMID = ctx->GetMethodID( - contextUsersStatusChangeDataCls, - "", - "(" - "Ljava/lang/String;" // contextId - "Ljava/util/List;" // users - ")V" - ); - - jobject users = ctx->NewObject(arrayCls, initArrayMID); - - for (auto &user: contextUsersStatusChangeData_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - userWithAction2Java(ctx, user) - ); - } - - return ctx->NewObject( - contextUsersStatusChangeDataCls, - initContextUsersStatusChangeDataMID, - ctx->NewStringUTF(contextUsersStatusChangeData_c.contextId.c_str()), - users - ); - } - - jobject contextUserEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::core::ContextUserEventData contextUserEventData_c - ) { - jclass contextUserEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ContextUserEventData"); - jmethodID initContextUserEventDataMID = ctx->GetMethodID( - contextUserEventDataCls, - "", - "(" - "Ljava/lang/String;" // contextId - "Lcom/simplito/java/privmx_endpoint/model/UserWithPubKey;" // user - ")V" - ); - - return ctx->NewObject( - contextUserEventDataCls, - initContextUserEventDataMID, - ctx->NewStringUTF(contextUserEventData_c.contextId.c_str()), - userWithPubKey2Java(ctx, contextUserEventData_c.user) - ); - } - - // CollectionChangedEventData - jobject collectionChangedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::core::CollectionChangedEventData collectionChangedEventData_c - ) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jclass collectionChangedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/CollectionChangedEventData"); - jmethodID initCollectionChangedEventDataMID = ctx->GetMethodID( - collectionChangedEventDataCls, - "", - "(" - "Ljava/lang/String;" // moduleType - "Ljava/lang/String;" // moduleId - "Ljava/lang/Long;" // affectedItemsCount - "Ljava/util/List;" // items - ")V" - ); - - jobject items = ctx->NewObject(arrayCls, initArrayMID); - - for (auto &item: collectionChangedEventData_c.items) { - ctx->CallBooleanMethod(items, - addToArrayMID, - collectionItemChange2Java(ctx, item) - ); - } - - return ctx->NewObject( - collectionChangedEventDataCls, - initCollectionChangedEventDataMID, - ctx->NewStringUTF(collectionChangedEventData_c.moduleType.c_str()), - ctx->NewStringUTF(collectionChangedEventData_c.moduleId.c_str()), - ctx.long2jLong(collectionChangedEventData_c.affectedItemsCount), - items - ); - } - - jobject storeFileDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::store::StoreFileDeletedEventData storeFileDeletedEventData_c) { - jclass storeFileDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StoreFileDeletedEventData"); - jmethodID initStoreFileDeletedEventDataMID = ctx->GetMethodID( - storeFileDeletedEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - storeFileDeletedEventDataCls, - initStoreFileDeletedEventDataMID, - ctx->NewStringUTF(storeFileDeletedEventData_c.fileId.c_str()), - ctx->NewStringUTF(storeFileDeletedEventData_c.contextId.c_str()), - ctx->NewStringUTF(storeFileDeletedEventData_c.storeId.c_str()) - ); - } - - jobject storeStatsChangedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::store::StoreStatsChangedEventData storeStatsChangedEventData_c) { - jclass storeStatsChangedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StoreStatsChangedEventData"); - jmethodID initStoreStatsChangedEventDataMID = ctx->GetMethodID( - storeStatsChangedEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;)V" - ); - return ctx->NewObject( - storeStatsChangedEventDataCls, - initStoreStatsChangedEventDataMID, - ctx->NewStringUTF(storeStatsChangedEventData_c.storeId.c_str()), - ctx->NewStringUTF(storeStatsChangedEventData_c.contextId.c_str()), - ctx.long2jLong(storeStatsChangedEventData_c.lastFileDate), - ctx.long2jLong(storeStatsChangedEventData_c.filesCount) - ); - } - - jobject threadDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::thread::ThreadDeletedEventData threadDeletedEventData_c) { - jclass threadDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ThreadDeletedEventData"); - jmethodID initThreadDeletedEventDataMID = ctx->GetMethodID( - threadDeletedEventDataCls, - "", - "(Ljava/lang/String;)V" - ); - return ctx->NewObject( - threadDeletedEventDataCls, - initThreadDeletedEventDataMID, - ctx->NewStringUTF(threadDeletedEventData_c.threadId.c_str()) - ); - } - - jobject threadDeletedMessageEventData2Java(JniContextUtils &ctx, - privmx::endpoint::thread::ThreadDeletedMessageEventData threadDeletedMessageEventData) { - jclass threadDeletedMessageEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ThreadDeletedMessageEventData"); - jmethodID initThreadDeletedMessageEventDataMID = ctx->GetMethodID( - threadDeletedMessageEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - threadDeletedMessageEventDataCls, - initThreadDeletedMessageEventDataMID, - ctx->NewStringUTF(threadDeletedMessageEventData.threadId.c_str()), - ctx->NewStringUTF(threadDeletedMessageEventData.messageId.c_str()) - ); - } - - jobject storeDeletedEventData2Java(JniContextUtils &ctx, - privmx::endpoint::store::StoreDeletedEventData storeDeletedEventData_c) { - jclass storeDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StoreDeletedEventData"); - jmethodID initStoreDeletedEventDataMID = ctx->GetMethodID( - storeDeletedEventDataCls, - "", - "(Ljava/lang/String;)V" - ); - return ctx->NewObject( - storeDeletedEventDataCls, - initStoreDeletedEventDataMID, - ctx->NewStringUTF(storeDeletedEventData_c.storeId.c_str()) - ); - } - - jobject storeFileUpdatedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::store::StoreFileUpdatedEventData storeFileUpdatedEventData_c - ) { - jclass storeFileUpdatedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/StoreFileUpdatedEventData"); - jmethodID initStoreFileUpdatedEventDataMID = ctx->GetMethodID( - storeFileUpdatedEventDataCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/File;" - "Ljava/util/List;" - ")V" - ); - - jclass arrayListCls = ctx->FindClass("java/util/ArrayList"); - jmethodID arrayListInitMID = ctx->GetMethodID(arrayListCls, "", "()V"); - jmethodID arrayListAddMID = ctx->GetMethodID(arrayListCls, "add", - "(Ljava/lang/Object;)Z"); - - jobject changesList = ctx->NewObject( - arrayListCls, - arrayListInitMID - ); - - for (const auto &change: storeFileUpdatedEventData_c.changes) { - jobject javaFileChange = fileChange2Java(ctx, change); - ctx->CallBooleanMethod(changesList, arrayListAddMID, javaFileChange); - } - - return ctx->NewObject( - storeFileUpdatedEventDataCls, - initStoreFileUpdatedEventDataMID, - file2Java(ctx, storeFileUpdatedEventData_c.file), - changesList - ); - } - - jobject threadStatsEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::thread::ThreadStatsEventData threadStatsEventData_c - ) { - jclass threadStatsEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/ThreadStatsEventData"); - jmethodID initThreadStatsEventDataMID = ctx->GetMethodID( - threadStatsEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;)V" - ); - return ctx->NewObject( - threadStatsEventDataCls, - initThreadStatsEventDataMID, - ctx->NewStringUTF(threadStatsEventData_c.threadId.c_str()), - ctx.long2jLong(threadStatsEventData_c.lastMsgDate), - ctx.long2jLong(threadStatsEventData_c.messagesCount) - ); - } - - jobject inboxDeletedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::inbox::InboxDeletedEventData inboxDeletedEventData_c - ) { - jclass inboxDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/InboxDeletedEventData"); - jmethodID initInboxDeletedEventDataMID = ctx->GetMethodID( - inboxDeletedEventDataCls, - "", - "(Ljava/lang/String;)V" - ); - return ctx->NewObject( - inboxDeletedEventDataCls, - initInboxDeletedEventDataMID, - ctx->NewStringUTF(inboxDeletedEventData_c.inboxId.c_str()) - ); - } - - jobject inboxEntryDeletedEventData2Java( - JniContextUtils &ctx, - privmx::endpoint::inbox::InboxEntryDeletedEventData inboxEntryDeletedEventData_c - ) { - jclass inboxEntryDeletedEventDataCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/events/InboxEntryDeletedEventData"); - jmethodID initInboxEntryDeletedEventDataMID = ctx->GetMethodID( - inboxEntryDeletedEventDataCls, - "", - "(Ljava/lang/String;Ljava/lang/String;)V" - ); - return ctx->NewObject( - inboxEntryDeletedEventDataCls, - initInboxEntryDeletedEventDataMID, - ctx->NewStringUTF(inboxEntryDeletedEventData_c.inboxId.c_str()), - ctx->NewStringUTF(inboxEntryDeletedEventData_c.entryId.c_str()) - ); - } -// -// jobject contextCustomEventData2Java( -// JniContextUtils &ctx, -// privmx::endpoint::event::ContextCustomEventData contextCustomEventData_c -// ) { -// jclass contextCustomEventDataCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/events/ContextCustomEventData"); -// jmethodID initContextCustomEventDataMID = ctx->GetMethodID( -// contextCustomEventDataCls, -// "", -// "(" -// "Ljava/lang/String;" // contextId -// "Ljava/lang/String;" // userId -// "[B" // payload -// "Ljava/lang/Long;" // statusCode -// "Ljava/lang/Long;" // schemaVersion -// ")V" -// ); -// jbyteArray data = ctx->NewByteArray(contextCustomEvent_c.payload.size()); -// ctx->SetByteArrayRegion(data, 0, contextCustomEvent_c.payload.size(), -// (jbyte *) contextCustomEvent_c.payload.data()); -// return ctx->NewObject( -// contextCustomEventDataCls, -// initContextCustomEventDataMID, -// ctx->NewStringUTF(contextCustomEvent_c.contextId.c_str()), -// ctx->NewStringUTF(contextCustomEvent_c.userId.c_str()), -// payload, -// ctx.long2jLong(contextCustomEvent_c.statusCode), -// ctx.long2jLong(contextCustomEvent_c.schemaVersion) -// ); -// } - - - - //Kvdb - jobject kvdb2Java( - JniContextUtils &ctx, - privmx::endpoint::kvdb::Kvdb kvdb_c - ) { - jclass kvdbCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/Kvdb"); - jmethodID initKvdbMID = ctx->GetMethodID( - kvdbCls, - "", - "(" - "Ljava/lang/String;" //contextId - "Ljava/lang/String;" //kvdbId - "Ljava/lang/Long;" //createDate - "Ljava/lang/String;" //creator - "Ljava/lang/Long;" //lastModificationDate - "Ljava/lang/String;" //lastModifier - "Ljava/util/List;" //users - "Ljava/util/List;" //managers - "Ljava/lang/Long;" //version - "[B" //publicMeta - "[B" //privateMeta - "Ljava/lang/Long;" //entries - "Ljava/lang/Long;" //lastEntryDate - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy - "Ljava/lang/Long;" //statusCode - "Ljava/lang/Long;" //schemaVersion - ")V" - ); - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - jobject users = ctx->NewObject(arrayCls, initArrayMID); - jobject managers = ctx->NewObject(arrayCls, initArrayMID); - jbyteArray publicMeta = ctx->NewByteArray(kvdb_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(kvdb_c.privateMeta.size()); - ctx->SetByteArrayRegion(publicMeta, 0, kvdb_c.publicMeta.size(), - (jbyte *) kvdb_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, kvdb_c.privateMeta.size(), - (jbyte *) kvdb_c.privateMeta.data()); - for (auto &user: kvdb_c.users) { - ctx->CallBooleanMethod(users, - addToArrayMID, - ctx->NewStringUTF(user.c_str())); - } - for (auto &manager: kvdb_c.managers) { - ctx->CallBooleanMethod(managers, - addToArrayMID, - ctx->NewStringUTF(manager.c_str())); - } - - return ctx->NewObject( - kvdbCls, - initKvdbMID, - ctx->NewStringUTF(kvdb_c.contextId.c_str()), - ctx->NewStringUTF(kvdb_c.kvdbId.c_str()), - ctx.long2jLong(kvdb_c.createDate), - ctx->NewStringUTF(kvdb_c.creator.c_str()), - ctx.long2jLong(kvdb_c.lastModificationDate), - ctx->NewStringUTF(kvdb_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(kvdb_c.version), - publicMeta, - privateMeta, - ctx.long2jLong(kvdb_c.entries), - ctx.long2jLong(kvdb_c.lastEntryDate), - containerPolicy2Java(ctx, kvdb_c.policy), - ctx.long2jLong(kvdb_c.statusCode), - ctx.long2jLong(kvdb_c.schemaVersion) - ); - } - - jobject serverKvdbEntryInfo2Java( - JniContextUtils &ctx, - privmx::endpoint::kvdb::ServerKvdbEntryInfo serverKvdbEntryInfo_c - ) { - jclass serverItemInfoCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/ServerKvdbEntryInfo"); - jmethodID initServerItemInfoMID = ctx->GetMethodID( - serverItemInfoCls, - "", - "(Ljava/lang/String;" // kvdbId - "Ljava/lang/String;" // key - "Ljava/lang/Long;" // createDate - "Ljava/lang/String;" // author - ")V" - ); - return ctx->NewObject( - serverItemInfoCls, - initServerItemInfoMID, - ctx->NewStringUTF(serverKvdbEntryInfo_c.kvdbId.c_str()), - ctx->NewStringUTF(serverKvdbEntryInfo_c.key.c_str()), - ctx.long2jLong(serverKvdbEntryInfo_c.createDate), - ctx->NewStringUTF(serverKvdbEntryInfo_c.author.c_str()) - ); - } - - jobject kvdbEntry2Java( - JniContextUtils &ctx, - privmx::endpoint::kvdb::KvdbEntry kvdbEntry_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/KvdbEntry"); - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Lcom/simplito/java/privmx_endpoint/model/ServerKvdbEntryInfo;" // info - "[B" // publicMeta - "[B" // privateMeta - "[B" // data - "Ljava/lang/String;" // authorPubKey - "Ljava/lang/Long;" // version - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - ")V" - ); - - jbyteArray publicMeta = ctx->NewByteArray(kvdbEntry_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(kvdbEntry_c.privateMeta.size()); - jbyteArray data = ctx->NewByteArray(kvdbEntry_c.data.size()); - - ctx->SetByteArrayRegion(publicMeta, 0, kvdbEntry_c.publicMeta.size(), - (jbyte *) kvdbEntry_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, kvdbEntry_c.privateMeta.size(), - (jbyte *) kvdbEntry_c.privateMeta.data()); - ctx->SetByteArrayRegion(data, 0, kvdbEntry_c.data.size(), - (jbyte *) kvdbEntry_c.data.data()); - - return ctx->NewObject( - itemCls, - initItemMID, - serverKvdbEntryInfo2Java(ctx, kvdbEntry_c.info), - publicMeta, - privateMeta, - data, - ctx->NewStringUTF(kvdbEntry_c.authorPubKey.c_str()), - ctx.long2jLong(kvdbEntry_c.version), - ctx.long2jLong(kvdbEntry_c.statusCode), - ctx.long2jLong(kvdbEntry_c.schemaVersion) - ); - } - - - //Streams - - jobject keyType2Java(JniContextUtils &ctx, privmx::endpoint::stream::KeyType keyType_c) { - jclass keyTypeClass = ctx.findClass("com/simplito/java/privmx_endpoint/model/KeyType"); - jfieldID caseFieldId = nullptr; - switch (keyType_c) { - case privmx::endpoint::stream::KeyType::LOCAL: - caseFieldId = ctx->GetStaticFieldID( - keyTypeClass, - "LOCAL", - "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); - break; - default: - caseFieldId = ctx->GetStaticFieldID( - keyTypeClass, - "REMOTE", - "Lcom/simplito/java/privmx_endpoint/model/KeyType;"); - break; - } - return ctx->GetStaticObjectField(keyTypeClass, caseFieldId); - } - - jobject key2Java(JniContextUtils &ctx, privmx::endpoint::stream::Key key_c) { - jclass keyCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/Key"); - jmethodID initKeyMID = ctx->GetMethodID( - keyCls, - "", - "(Ljava/lang/String;[BLcom/simplito/java/privmx_endpoint/model/KeyType;)V" - ); - - jbyteArray jKey = ctx->NewByteArray(key_c.key.size()); - ctx->SetByteArrayRegion(jKey, 0, key_c.key.size(), (jbyte *) key_c.key.data()); - - return ctx->NewObject( - keyCls, - initKeyMID, - ctx->NewStringUTF(key_c.keyId.c_str()), - jKey, - keyType2Java(ctx, key_c.type) - ); - } - -// jobject -// streamRoom2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamRoom streamRoom_c) { -// jclass streamRoomCls = ctx.findClass( -// "com/simplito/java/privmx_endpoint/model/StreamRoom"); -// jmethodID initStreamRoomMID = ctx->GetMethodID( -// streamRoomCls, -// "", -// "(" -// "Ljava/lang/String;" //contextId -// "Ljava/lang/String;" //streamRoomId -// "Ljava/lang/Long;" //createDate -// "Ljava/lang/String;" //creator -// "Ljava/lang/Long;" //lastModificationDate -// "Ljava/lang/String;" //lastModifier -// "Ljava/util/List;" //users -// "Ljava/util/List;" //managers -// "Ljava/lang/Long;" //version -// "[B" //publicMeta -// "[B" //privateMeta -// "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" //policy -// "Ljava/lang/Long;" //statusCode -// ")V" -// ); -// -// jclass arrayCls = ctx.findClass("java/util/ArrayList"); -// jmethodID initArrayMID = ctx->GetMethodID( -// arrayCls, -// "", -// "()V"); -// jmethodID addToArrayMID = ctx->GetMethodID( -// arrayCls, -// "add", -// "(Ljava/lang/Object;)Z" -// ); -// jstring contextId = ctx->NewStringUTF(streamRoom_c.contextId.c_str()); -// jstring streamRoomId = ctx->NewStringUTF(streamRoom_c.streamRoomId.c_str()); -// jstring creator = ctx->NewStringUTF(streamRoom_c.creator.c_str()); -// jstring lastModifier = ctx->NewStringUTF(streamRoom_c.lastModifier.c_str()); -// jobject users = ctx->NewObject(arrayCls, initArrayMID); -// jobject managers = ctx->NewObject(arrayCls, initArrayMID); -// jbyteArray publicMeta = ctx->NewByteArray(streamRoom_c.publicMeta.size()); -// jbyteArray privateMeta = ctx->NewByteArray(streamRoom_c.privateMeta.size()); -// ctx->SetByteArrayRegion(publicMeta, 0, streamRoom_c.publicMeta.size(), -// (jbyte *) streamRoom_c.publicMeta.data()); -// ctx->SetByteArrayRegion(privateMeta, 0, streamRoom_c.privateMeta.size(), -// (jbyte *) streamRoom_c.privateMeta.data()); -// for (auto &user: streamRoom_c.users) { -// ctx->CallBooleanMethod(users, -// addToArrayMID, -// ctx->NewStringUTF(user.c_str())); -// } -// for (auto &manager: streamRoom_c.managers) { -// ctx->CallBooleanMethod(managers, -// addToArrayMID, -// ctx->NewStringUTF(manager.c_str())); -// } -// return ctx->NewObject( -// streamRoomCls, -// initStreamRoomMID, -// contextId, -// streamRoomId, -// ctx.long2jLong(streamRoom_c.createDate), -// creator, -// ctx.long2jLong(streamRoom_c.lastModificationDate), -// lastModifier, -// users, -// managers, -// ctx.long2jLong(streamRoom_c.version), -// publicMeta, -// privateMeta, -// containerPolicy2Java(ctx, streamRoom_c.policy), -// ctx.long2jLong(streamRoom_c.statusCode) -// ); -// } - - jobject stream2Java(JniContextUtils &ctx, privmx::endpoint::stream::Stream stream_c) { - jclass streamCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/Stream"); - jmethodID initStreamMID = ctx->GetMethodID( - streamCls, - "", - "(" - "Ljava/lang/Long;" //streamId - "Ljava/lang/String;" //userId - ")V" - ); - return ctx->NewObject( - streamCls, - initStreamMID, - ctx.long2jLong(stream_c.streamId), - ctx->NewStringUTF(stream_c.userId.c_str()) - ); - } - - jobject - turnCredentials2Java(JniContextUtils &ctx, - privmx::endpoint::stream::TurnCredentials turnCredentials_c) { - jclass turnCredentialsCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/TurnCredentials"); - jmethodID initTurnCredentialsMID = ctx->GetMethodID( - turnCredentialsCls, - "", - "(" - "Ljava/lang/String;" //url - "Ljava/lang/String;" //username - "Ljava/lang/String;" //password - "Ljava/lang/Long;" //expirationTime - ")V" - ); - return ctx->NewObject( - turnCredentialsCls, - initTurnCredentialsMID, - ctx->NewStringUTF(turnCredentials_c.url.c_str()), - ctx->NewStringUTF(turnCredentials_c.username.c_str()), - ctx->NewStringUTF(turnCredentials_c.password.c_str()), - ctx.long2jLong(turnCredentials_c.expirationTime) - ); - } - - jobject - sdpWithTypeModel2Java(JniContextUtils &ctx, - privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c) { - jclass sdpWithTypeModelCls = ctx.findClass( - "com/simplito/java/privmx_endpoint/model/SdpWithTypeModel"); - jmethodID initSdpWithTypeModelMID = ctx->GetMethodID( - sdpWithTypeModelCls, - "", - "(" - "Ljava/lang/String;" //url - "Ljava/lang/String;" //username - ")V" - ); - return ctx->NewObject( - sdpWithTypeModelCls, - initSdpWithTypeModelMID, - ctx->NewStringUTF(sdpWithTypeModel_c.sdp.c_str()), - ctx->NewStringUTF(sdpWithTypeModel_c.type.c_str()) - ); - } - - // Stream - jobject streamRoom2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamRoom streamRoom_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/StreamRoom"); - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // contextId - "Ljava/lang/String;" // streamRoomId - "Ljava/lang/Long;" // createDate - "Ljava/lang/String;" // creator - "Ljava/lang/Long;" // lastModificationDate - "Ljava/lang/String;" // lastModifier - "Ljava/util/List;" // users - "Ljava/util/List;" // managers - "Ljava/lang/Long;" // version - "[B" // publicMeta - "[B" // privateMeta - "Lcom/simplito/java/privmx_endpoint/model/ContainerPolicy;" // policy - "Ljava/lang/Long;" // statusCode - "Ljava/lang/Long;" // schemaVersion - ")V" - ); - - jbyteArray publicMeta = ctx->NewByteArray(streamRoom_c.publicMeta.size()); - jbyteArray privateMeta = ctx->NewByteArray(streamRoom_c.privateMeta.size()); - - ctx->SetByteArrayRegion(publicMeta, 0, streamRoom_c.publicMeta.size(), - (jbyte *) streamRoom_c.publicMeta.data()); - ctx->SetByteArrayRegion(privateMeta, 0, streamRoom_c.privateMeta.size(), - (jbyte *) streamRoom_c.privateMeta.data()); - - jobject users = vectorTojArray(ctx, streamRoom_c.users, string2jobject); - jobject managers = vectorTojArray(ctx, streamRoom_c.managers, string2jobject); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(streamRoom_c.contextId.c_str()), - ctx->NewStringUTF(streamRoom_c.streamRoomId.c_str()), - ctx.long2jLong(streamRoom_c.createDate), - ctx->NewStringUTF(streamRoom_c.creator.c_str()), - ctx.long2jLong(streamRoom_c.lastModificationDate), - ctx->NewStringUTF(streamRoom_c.lastModifier.c_str()), - users, - managers, - ctx.long2jLong(streamRoom_c.version), - publicMeta, - privateMeta, - containerPolicy2Java(ctx, streamRoom_c.policy), - ctx.long2jLong(streamRoom_c.statusCode), - ctx.long2jLong(streamRoom_c.schemaVersion) - ); - } - //Stream -// jobject stream2Java( -// JniContextUtils &ctx, -// privmx::endpoint::stream::Stream stream_c -// ) { -// jclass itemCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/Stream"); -// -// jmethodID initItemMID = ctx->GetMethodID( -// itemCls, -// "", -// "(" -// "Ljava/lang/Long;" // streamId -// "Ljava/lang/String;" // userId -// ")V" -// ); -// -// return ctx->NewObject( -// itemCls, -// initItemMID, -// ctx.long2jLong(stream_c.streamId), -// ctx->NewStringUTF(stream_c.userId.c_str()) -// ); -// } - - jobject deviceType2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::DeviceType deviceType_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/DeviceType"); - - jmethodID valuesMID = ctx->GetStaticMethodID(itemCls, "values", - "()[Lcom/simplito/java/privmx_endpoint/model/streams/DeviceType;"); - - jobjectArray enumValues = (jobjectArray) ctx->CallStaticObjectMethod(itemCls, - valuesMID); - - return (jobject) ctx->GetObjectArrayElement(enumValues, (int) deviceType_c); - } - - - jobject mediaDevice2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::MediaDevice mediaDevice_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/MediaDevice"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // name - "Ljava/lang/String;" // id - "Lcom/simplito/java/privmx_endpoint/model/streams/DeviceType;" // type - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(mediaDevice_c.name.c_str()), - ctx->NewStringUTF(mediaDevice_c.id.c_str()), - deviceType2Java(ctx, mediaDevice_c.type) - - ); - } - - jobject streamHandle2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamHandle streamHandle_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/StreamHandle"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // value - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(streamHandle_c) - ); - } - - jobject - streamInfo2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamInfo streamInfo_c) { - jclass arrayCls = ctx->FindClass("java/util/ArrayList"); - jmethodID initArrayMID = ctx->GetMethodID( - arrayCls, - "", - "()V"); - jmethodID addToArrayMID = ctx->GetMethodID( - arrayCls, - "add", - "(Ljava/lang/Object;)Z" - ); - - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/StreamInfo"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // id - "Ljava/lang/String;" // userId - "Ljava/util/List;" // tracks - "Ljava/lang/Long;" // streamId - "Ljava/lang/String;" // metadata - "Ljava/lang/Boolean;" // dummy - "Ljava/lang/Boolean;" // talking - ")V" - ); - - jobject metadata = nullptr; - jobject dummy = nullptr; - jobject talking = nullptr; - - if (streamInfo_c.metadata.has_value()) { - metadata = ctx->NewStringUTF(streamInfo_c.metadata.value().c_str()); - } - - if (streamInfo_c.dummy.has_value()) { - dummy = ctx.bool2jBoolean(streamInfo_c.dummy.value()); - } - - if (streamInfo_c.talking.has_value()) { - dummy = ctx.bool2jBoolean(streamInfo_c.talking.value()); - } - - jobject tracks = ctx->NewObject(arrayCls, initArrayMID); - for (auto &track: streamInfo_c.tracks) { - - ctx->CallBooleanMethod( - tracks, - addToArrayMID, - streamTrackInfo2Java(ctx, track) - ); - } - - // todo - check null? - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(streamInfo_c.id), - ctx->NewStringUTF(streamInfo_c.userId.c_str()), - tracks, - metadata, - dummy, - talking - ); - - } - - jobject streamTrackInfo2Java( - JniContextUtils &ctx, - privmx::endpoint::stream::StreamTrackInfo streamTrackInfo_c - ) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/StreamInfo"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // type - "Ljava/lang/Long;" // mindex - "Ljava/lang/String;" // mid - "Ljava/lang/Boolean;" // disabled [optional] - "Ljava/lang/String;" // codec [optional] - "Ljava/lang/String;" // description [optional] - "Ljava/lang/Boolean;" // moderated [optional] - "Ljava/lang/Boolean;" // simulcast [optional] - "Ljava/lang/Boolean;" // talking [optional] - ")V" - ); - - jobject disabled = nullptr; - jobject codec = nullptr; - jobject description = nullptr; - jobject moderated = nullptr; - jobject simulcast = nullptr; - jobject talking = nullptr; - - if (streamTrackInfo_c.disabled.has_value()) { - disabled = ctx.bool2jBoolean(streamTrackInfo_c.disabled.value()); - } - - if (streamTrackInfo_c.codec.has_value()) { - codec = ctx->NewStringUTF(streamTrackInfo_c.codec.value().c_str()); - } - - if (streamTrackInfo_c.description.has_value()) { - description = ctx->NewStringUTF(streamTrackInfo_c.description.value().c_str()); - } - - if (streamTrackInfo_c.moderated.has_value()) { - moderated = ctx.bool2jBoolean(streamTrackInfo_c.moderated.value()); - } - - if (streamTrackInfo_c.simulcast.has_value()) { - simulcast = ctx.bool2jBoolean(streamTrackInfo_c.simulcast.value()); - } - - if (streamTrackInfo_c.talking.has_value()) { - talking = ctx.bool2jBoolean(streamTrackInfo_c.talking.value()); - } - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(streamTrackInfo_c.type.c_str()), - ctx.long2jLong(streamTrackInfo_c.mindex), - ctx->NewStringUTF(streamTrackInfo_c.mid.c_str()), - disabled, - codec, - description, - moderated, - simulcast, - talking - ); - } - jobject streamPublishResult2Java(JniContextUtils &ctx, privmx::endpoint::stream::StreamPublishResult streamPublishResult_c){ - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/StreamPublishResult"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Boolean;" // published - "Lcom/simplito/java/privmx_endpoint/model/streams/PublishedStreamData;" // data - ")V" - ); - - jobject data = nullptr; - if(streamPublishResult_c.data.has_value()) - { - data = publishedStreamData2Java(ctx, streamPublishResult_c.data.value()); - } - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.bool2jBoolean(streamPublishResult_c.published), - data - ); - } - - jobject publishedStreamData2Java(JniContextUtils &ctx, privmx::endpoint::stream::PublishedStreamData publishedStreamData_c){ - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/PublishedStreamData"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/String;" // streamRoomId - "Lcom/simplito/java/privmx_endpoint/model/streams/StreamInfo;" // stream - "Ljava/lang/String;" //userId - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx->NewStringUTF(publishedStreamData_c.streamRoomId.c_str()), - streamInfo2Java(ctx, publishedStreamData_c.stream), - ctx->NewStringUTF(publishedStreamData_c.userId.c_str()) - ); - } - - jobject remoteStreamId2Java(JniContextUtils &ctx, - privmx::endpoint::stream::RemoteStreamId remoteStreamId_c) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/RemoteStreamId"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "(" - "Ljava/lang/Long;" // value - ")V" - ); - - return ctx->NewObject( - itemCls, - initItemMID, - ctx.long2jLong(remoteStreamId_c) - ); - } - - jobject frame2Java(JniContextUtils &ctx, privmx::endpoint::stream::Frame &frame_c) { - jclass itemCls = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/Frame"); - - jmethodID initItemMID = ctx->GetMethodID( - itemCls, - "", - "()V" - ); - - return ctx->NewObject( - itemCls, - initItemMID - ); - } - } // wrapper -} // privmx \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/parser.cpp b/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/parser.cpp deleted file mode 100644 index 8b9b4ff4..00000000 --- a/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/parsers/parser.cpp +++ /dev/null @@ -1,104 +0,0 @@ -// -// PrivMX Endpoint Java. -// Copyright © 2024 Simplito sp. z o.o. -// -// This file is part of the PrivMX Platform (https://privmx.dev). -// This software is Licensed under the MIT License. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#include "privmx/endpoint/wrapper/parsers/parser.h" -using namespace privmx::endpoint; - -// streams -privmx::endpoint::stream::DeviceType parseDeviceType(JniContextUtils &ctx, jobject type) { - jclass itemClass = ctx->FindClass( - "com/simplito/java/privmx_endpoint/model/streams/DeviceType)"); - jmethodID ordinalMethod = ctx->GetMethodID(itemClass, "ordinal", "()I"); - jint ordinalMID = ctx->CallIntMethod(type, ordinalMethod); - - privmx::endpoint::stream::DeviceType type_c = static_cast(ordinalMID); - - return type_c; -} - -privmx::endpoint::stream::MediaDevice parseMediaDevice(JniContextUtils &ctx, jobject mediaDevice) { - auto result = privmx::endpoint::stream::MediaDevice(); - - jclass mediaDeviceCls = ctx->GetObjectClass(mediaDevice); - jfieldID name = ctx->GetFieldID(mediaDeviceCls, "name", "Ljava/lang/String;"); - jfieldID id = ctx->GetFieldID(mediaDeviceCls, "id", "Ljava/lang/String;"); - jfieldID type = ctx->GetFieldID(mediaDeviceCls, "type", - "Lcom/simplito/java/privmx_endpoint/model/streams/DeviceType;"); - - result.name = ctx.jString2string( - (jstring) ctx->GetObjectField(mediaDevice, name)); - result.id = ctx.jString2string( - (jstring) ctx->GetObjectField(mediaDevice, id)); - result.type = parseDeviceType(ctx, ctx->GetObjectField(mediaDevice, type)); - - return result; -} - -privmx::endpoint::stream::StreamHandle parseStreamHandle( - JniContextUtils &ctx, - jobject streamHandle -) { - jclass streamHandleCls = ctx->GetObjectClass(streamHandle); - jfieldID valueFID = ctx->GetFieldID(streamHandleCls, "value", "Ljava/lang/Long;"); - - return jobject2long(ctx, ctx->GetObjectField(streamHandle, valueFID)); -} - -privmx::endpoint::stream::Settings parseSettings(JniContextUtils &ctx, jobject settings){ - auto result = privmx::endpoint::stream::Settings(); - return result; -} - -privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env,jobject streamSettings){ - privmx::endpoint::stream::StreamSettings result; - JniContextUtils ctx(env); - jclass cls = ctx->GetObjectClass(streamSettings); -// StreamSettingsJNI streamSettingsJni (env, streamSettings); - - jfieldID settingsFID = env->GetFieldID( - env->GetObjectClass(streamSettings), - "settings", - "Lcom/simplito/java/privmx_endpoint/model/streams/Settings;" - ); - - jobject jsettings = ctx->GetObjectField(streamSettings, settingsFID); - - result.settings = parseSettings(ctx, jsettings); -// result.OnFrame = streamSettingsJni.OnFrame; -// result.OnVideo = streamSettingsJni.OnVideo; -// result.OnVideoRemove = streamSettingsJni.OnVideoRemove; - - return result; -} - -privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription){ - privmx::endpoint::stream::StreamSubscription result; - jclass cls = ctx->GetObjectClass(streamSubscription); - jfieldID streamIdFID = ctx->GetFieldID( - ctx->GetObjectClass(streamSubscription), - "streamId", - "J" - ); - - jfieldID trackIdFID = ctx->GetFieldID( - ctx->GetObjectClass(streamSubscription), - "streamTrackId", - "Ljava/lang/String;" - ); - - jobject streamId = ctx->GetObjectField(streamSubscription, streamIdFID); - jobject streamTrackId = ctx->GetObjectField(streamSubscription, trackIdFID); - - result.streamId = jobject2long(ctx, streamId); - if(streamTrackId != nullptr) result.streamTrackId = jobject2string(ctx, streamTrackId); - - return result; -} \ No newline at end of file From e82468fad9ecf183a655ee0cd780e8a9b7642b39 Mon Sep 17 00:00:00 2001 From: Doominika Date: Fri, 20 Feb 2026 13:53:42 +0100 Subject: [PATCH 19/19] feat: remove classes from android jni and move them to privmx-endpoint --- .../wrapper/streams/modules/StreamApiLow.cpp | 824 ------------------ .../streams/modules/StreamSettingsJNI.cpp | 166 ---- .../streams/modules/WebRTCInterfaceJNI.cpp | 196 ----- .../streams/modules/StreamSettingsJNI.h | 29 + .../streams/modules/StreamSettingsJNI.cpp | 7 +- .../wrapper/modules/WebRTCInterfaceJNI.h | 68 ++ 6 files changed, 101 insertions(+), 1189 deletions(-) delete mode 100644 jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp delete mode 100644 jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.cpp delete mode 100644 jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.cpp create mode 100644 jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h create mode 100644 jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/modules/WebRTCInterfaceJNI.h diff --git a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp deleted file mode 100644 index bdae7960..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamApiLow.cpp +++ /dev/null @@ -1,824 +0,0 @@ -//#include -// -//// -//// Created by Dawid Jenczewski on 14/02/2025. -//// -//#include "privmx/endpoint/wrapper/utils/utils.hpp" -//#include "privmx/endpoint/wrapper/parsers/parser.h" -//#include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" -//#include "privmx/endpoint/wrapper/modules/Connection.h" -//#include "privmx/endpoint/wrapper/modules/EventApi.h" -// -//#include "privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h" -//#include -//#include "privmx/endpoint/wrapper/streams/parsers/parser.h" -// -//using namespace privmx::endpoint; -// -//StreamApiLow *getStreamApi(JniContextUtils &ctx, jobject streamApiInstance) { -// jclass cls = ctx->GetObjectClass(streamApiInstance); -// jfieldID apiFID = ctx->GetFieldID(cls, "api", "Ljava/lang/Long;"); -// jobject apiLong = ctx->GetObjectField(streamApiInstance, apiFID); -// if (apiLong == nullptr) { -// throw IllegalStateException("ThreadApi cannot be used"); -// } -// return (stream::StreamApiLow *) ctx.getObject(apiLong).getLongValue(); -//} -// -//extern "C" -//JNIEXPORT jobject JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_init( -// JNIEnv *env, -// jobject thiz, -// jobject connection, -// jobject eventApi -//) { -// JniContextUtils ctx(env); -// jobject result; -// -// if (ctx.nullCheck(connection, "Connection") || -// ctx.nullCheck(eventApi, "EventApi")) { -// return nullptr; -// } -// -// ctx.callResultEndpointApi(&result, [&ctx, &env, &connection, &eventApi] { -// auto connection_c = getConnection(env, connection); -// auto eventApi_c = getEventApi(env, eventApi); -// auto streamApiLow = stream::StreamApiLow::create( -// *connection_c, -// *eventApi_c -// ); -// auto streamApiLow_ptr = new stream::StreamApiLow(); -// *streamApiLow_ptr = streamApiLow; -// return ctx.long2jLong((jlong) streamApiLow_ptr); -// }); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} -// -//extern "C" -//JNIEXPORT void JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deinit( -// JNIEnv *env, -// jobject thiz -//) { -// try { -// JniContextUtils ctx(env); -// //if null go to catch -// auto api = getStreamApi(ctx, thiz); -// delete api; -// jclass cls = env->GetObjectClass(thiz); -// jfieldID apiFID = env->GetFieldID(cls, "api", "Ljava/lang/Long;"); -// env->SetObjectField(thiz, apiFID, (jobject) nullptr); -// } catch (const IllegalStateException &e) { -// env->ThrowNew( -// env->FindClass("java/lang/IllegalStateException"), -// e.what() -// ); -// } -//} -// -//extern "C" -//JNIEXPORT jstring JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStreamRoom( -// JNIEnv *env, -// jobject thiz, -// jstring context_id, -// jobject users, -// jobject managers, -// jbyteArray public_meta, -// jbyteArray private_meta, -// jobject policies -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(context_id, "Context ID") || -// ctx.nullCheck(users, "Users list") || -// ctx.nullCheck(managers, "Managers list") || -// ctx.nullCheck(public_meta, "Public meta") || -// ctx.nullCheck(private_meta, "Private meta")) { -// return nullptr; -// } -// -// jstring result; -// ctx.callResultEndpointApi( -// &result, -// [ -// &ctx, -// &thiz, -// context_id, -// &users, -// &managers, -// &public_meta, -// &private_meta, -// &policies -// ]() { -// std::vector users_c = usersToVector( -// ctx, -// ctx.jObject2jArray(users)); -// std::vector managers_c = usersToVector( -// ctx, -// ctx.jObject2jArray(managers)); -// auto container_policies_c = std::optional( -// parseContainerPolicy(ctx, policies)); -// return ctx->NewStringUTF( -// getStreamApi(ctx, thiz)->createStreamRoom( -// ctx.jString2string(context_id), -// users_c, -// managers_c, -// core::Buffer::from(ctx.jByteArray2String(public_meta)), -// core::Buffer::from(ctx.jByteArray2String(private_meta)), -// container_policies_c -// ).c_str()); -// }); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} -// -//extern "C" -//JNIEXPORT void JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_updateStreamRoom( -// JNIEnv *env, -// jobject thiz, -// jstring stream_room_id, -// jobject users, -// jobject managers, -// jbyteArray public_meta, -// jbyteArray private_meta, -// jlong version, -// jboolean force, -// jboolean force_generate_new_key, -// jobject policies -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(stream_room_id, "Stream room ID") || -// ctx.nullCheck(users, "Users list") || -// ctx.nullCheck(managers, "Managers list") || -// ctx.nullCheck(public_meta, "Public meta") || -// ctx.nullCheck(private_meta, "Private meta")) { -// return; -// } -// ctx.callVoidEndpointApi( -// [ -// &ctx, -// &thiz, -// &stream_room_id, -// &users, -// &managers, -// &public_meta, -// &private_meta, -// &version, -// force, -// &force_generate_new_key, -// &policies -// ]() { -// std::vector users_c = usersToVector( -// ctx, -// ctx.jObject2jArray(users)); -// std::vector managers_c = usersToVector( -// ctx, -// ctx.jObject2jArray(managers)); -// auto container_policies_c = std::optional( -// parseContainerPolicy(ctx, policies)); -// getStreamApi(ctx, thiz)->updateStreamRoom( -// ctx.jString2string(stream_room_id), -// users_c, -// managers_c, -// core::Buffer::from(ctx.jByteArray2String(public_meta)), -// core::Buffer::from(ctx.jByteArray2String(private_meta)), -// version, -// force == JNI_TRUE, -// force_generate_new_key == JNI_TRUE, -// container_policies_c -// ); -// } -// ); -//} -// -//extern "C" -//JNIEXPORT jobject JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreamRooms( -// JNIEnv *env, -// jobject thiz, -// jstring context_id, -// jlong skip, -// jlong limit, -// jstring sort_order, -// jstring last_id, -// jstring sort_by // todo - use in this impl. -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(context_id, "Context ID") || -// ctx.nullCheck(sort_order, "Sort order")) { -// return nullptr; -// } -// -// jobject result; -// ctx.callResultEndpointApi( -// &result, -// [ -// &ctx, -// &env, -// &thiz, -// &context_id, -// &skip, -// &limit, -// &sort_order, -// &last_id, -// &sort_by -// ]() { -// jclass pagingListCls = env->FindClass( -// "com/simplito/java/privmx_endpoint/model/PagingList"); -// jmethodID pagingListInitMID = env->GetMethodID( -// pagingListCls, "", -// "(Ljava/lang/Long;Ljava/util/List;)V"); -// jclass arrayCls = env->FindClass("java/util/ArrayList"); -// jmethodID initArrayMID = env->GetMethodID(arrayCls, -// "", -// "()V"); -// jmethodID addToArrayMID = env->GetMethodID(arrayCls, -// "add", -// "(Ljava/lang/Object;)Z"); -// auto query = core::PagingQuery(); -// query.skip = skip; -// query.limit = limit; -// query.sortOrder = ctx.jString2string(sort_order); -// if (last_id != nullptr) { -// query.lastId = ctx.jString2string(last_id); -// } -// if (sort_by != nullptr) { -// query.sortBy = ctx.jString2string(sort_by); -// } -// -// auto streamRooms_c( -// getStreamApi(ctx, thiz)->listStreamRooms( -// ctx.jString2string(context_id), -// query -// ) -// ); -// jobject array = env->NewObject(arrayCls, initArrayMID); -// for (auto &streamRoom_c: streamRooms_c.readItems) { -// env->CallBooleanMethod(array, -// addToArrayMID, -// privmx::wrapper::streams::streamRoom2Java( -// ctx, streamRoom_c) -// ); -// } -// return ctx->NewObject( -// pagingListCls, -// pagingListInitMID, -// ctx.long2jLong(streamRooms_c.totalAvailable), -// array -// ); -// } -// ); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} -// -//extern "C" -//JNIEXPORT jobject JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getStreamRoom( -// JNIEnv *env, -// jobject thiz, -// jstring stream_room_id -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { -// return nullptr; -// } -// jobject result; -// ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_room_id] { -// -// return privmx::wrapper::streams::streamRoom2Java( -// ctx, -// getStreamApi(ctx, thiz)->getStreamRoom( -// ctx.jString2string(stream_room_id) -// ) -// ); -// }); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} -// -//extern "C" -//JNIEXPORT void JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_deleteStreamRoom( -// JNIEnv *env, -// jobject thiz, -// jstring stream_room_id -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { -// return; -// } -// ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id]() { -// getStreamApi(ctx, thiz)->deleteStreamRoom( -// ctx.jString2string(stream_room_id) -// ); -// }); -//} -// -//extern "C" -//JNIEXPORT jobject JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_createStream( -// JNIEnv *env, -// jobject thiz, -// jstring stream_room_id -// // todo - made changes in arguments -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(stream_room_id, "Stream room ID")) -// return {}; -// -// jobject result; -// ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_room_id] { -// -// return privmx::wrapper::streams::streamHandle2Java( -// ctx, -// getStreamApi(ctx, thiz)->createStream( -// ctx.jString2string(stream_room_id) -// ) -// ); -// -// }); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} -// -//extern "C" -//JNIEXPORT jobject JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_publishStream( -// JNIEnv *env, -// jobject thiz, -// jobject stream_handle -// // todo - made changes in arguments -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(stream_handle, "Stream Handle")) -// return {}; -// -// jobject result; -// ctx.callResultEndpointApi(&result, [&ctx, &thiz, &stream_handle] { -// -// auto result = getStreamApi(ctx, thiz)->publishStream( -// parseStreamHandle(ctx, stream_handle) -// ); -// -// return privmx::wrapper::streams::streamPublishResult2Java( -// ctx, -// result -// ); -// }); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} -// -//extern "C" -//JNIEXPORT void JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_joinStreamRoom( -// JNIEnv *env, -// jobject thiz, -// jstring stream_room_id, -// jobject web_rtc -// // todo - made changes in arguments -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(stream_room_id, "Stream room ID") || -// ctx.nullCheck(web_rtc, "webRtc")) { -// return; -// } -// -// ctx.callVoidEndpointApi([&ctx, &env, &thiz, &stream_room_id, &web_rtc]() { -// auto webrtc = std::make_shared( -// WebRTCInterfaceJNI(env, web_rtc) -// ); // todo - protected destructor commented -// std::vector streams_id_c; -// -// getStreamApi(ctx, thiz)->joinStreamRoom( -// ctx.jString2string(stream_room_id), -// webrtc -// ); -// }); -//} -// -//extern "C" -//JNIEXPORT jobject JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_listStreams( -// JNIEnv *env, -// jobject thiz, -// jstring stream_room_id -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(stream_room_id, "Stream room ID")) { -// return nullptr; -// } -// -// jobject result; -// ctx.callResultEndpointApi(&result, [&ctx, &thiz, &env, &stream_room_id] { -// jclass arrayCls = env->FindClass("java/util/ArrayList"); -// jmethodID initArrayMID = env->GetMethodID(arrayCls, "", "()V"); -// jmethodID addToArrayMID = env->GetMethodID(arrayCls, "add", "(Ljava/lang/Object;)Z"); -// -// auto stream_infos_c = getStreamApi(ctx, thiz)->listStreams( -// ctx.jString2string(stream_room_id) -// ); -// jobject array = env->NewObject(arrayCls, initArrayMID); -// for (auto &info_c: stream_infos_c) { -// env->CallBooleanMethod( -// array, -// addToArrayMID, -// privmx::wrapper::streams::streamInfo2Java(ctx, info_c) -// ); -// } -// return array; -// }); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} -// -//extern "C" -//JNIEXPORT void JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unpublishStream( -// JNIEnv *env, -// jobject thiz, -// jobject stream_handle -// // todo - made changes in arguments -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(stream_handle, "Stream Handle")) { -// return; -// } -// -// ctx.callVoidEndpointApi([&ctx, &thiz, &stream_handle]() { -// getStreamApi(ctx, thiz)->unpublishStream( -// parseStreamHandle(ctx, stream_handle) -// ); -// }); -//} -// -//extern "C" -//JNIEXPORT void JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_leaveStreamRoom( -// JNIEnv *env, -// jobject thiz, -// jstring stream_room_id -// // todo - made changes in arguments -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { -// return; -// } -// -// ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id]() { -// getStreamApi(ctx, thiz)->leaveStreamRoom( -// ctx.jString2string(stream_room_id) -// ); -// }); -//} -// -//extern "C" -//JNIEXPORT jobject JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_getTurnCredentials( -// JNIEnv *env, -// jobject thiz -//) { -// JniContextUtils ctx(env); -// jobject result; -// ctx.callResultEndpointApi(&result, [&ctx, &env, &thiz] { -// jclass arrayCls = env->FindClass("java/util/ArrayList"); -// jmethodID initArrayMID = env->GetMethodID(arrayCls, "", "()V"); -// jmethodID addToArrayMID = env->GetMethodID(arrayCls, "add", "(Ljava/lang/Object;)Z"); -// -// auto turnCredentialsVector = getStreamApi(ctx, thiz)->getTurnCredentials(); -// jobject array = env->NewObject(arrayCls, initArrayMID); -// for ( -// auto &turnCredentials_c: turnCredentialsVector) { -// env->CallBooleanMethod( -// array, -// addToArrayMID, -// privmx::wrapper::streams::turnCredentials2Java(ctx, turnCredentials_c) -// ); -// } -// -// return array; -// }); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} -// -//extern "C" -//JNIEXPORT jobject JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeFor( -// JNIEnv *env, -// jobject thiz, -// jobject subscription_queries -// // todo - made changes in arguments -//) { -// JniContextUtils ctx(env); -// jobject result; -// ctx.callResultEndpointApi(&result, [&ctx, &env, &thiz, &subscription_queries] { -// jclass arrayListCls = env->FindClass("java/util/ArrayList"); -// jmethodID initMID = env->GetMethodID(arrayListCls, "", "()V"); -// jmethodID addToListMID = env->GetMethodID(arrayListCls, "add", "(Ljava/lang/Object;)Z"); -// -// auto subscription_queries_arr = ctx.jObject2jArray(subscription_queries); -// auto subscription_queries_c = std::vector(); -// -// int length = ctx->GetArrayLength(subscription_queries_arr); -// for (int i = 0; i < length; i++) { -// jobject arrayElement = ctx->GetObjectArrayElement(subscription_queries_arr, i); -// subscription_queries_c.push_back(ctx.jString2string((jstring) arrayElement)); -// } -// -// jobject arrayList = env->NewObject(arrayListCls, initMID); -// auto subscription_ids_c = getStreamApi(ctx, thiz)->subscribeFor( -// subscription_queries_c -// ); -// -// for (auto &id_str: subscription_ids_c) { -// jstring java_id_str = ctx->NewStringUTF(id_str.c_str()); -// env->CallBooleanMethod( -// arrayList, -// addToListMID, -// java_id_str -// ); -// } -// return arrayList; -// -// }); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} -// -//extern "C" -//JNIEXPORT void JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeFrom( -// JNIEnv *env, -// jobject thiz, -// jobject subscription_ids -// // todo - made changes in arguments -//) { -////TODO: Add nullchecks -// JniContextUtils ctx(env); -// if (ctx.nullCheck(subscription_ids, "Subscription ids")) { -// return; -// } -// -// ctx.callVoidEndpointApi([&ctx, &thiz, &subscription_ids]() { -// auto subscription_ids_arr = ctx.jObject2jArray(subscription_ids); -// auto subscription_ids_c = std::vector(); -// -// int length = ctx->GetArrayLength(subscription_ids_arr); -// for (int i = 0; i < length; i++) { -// jobject arrayElement = ctx->GetObjectArrayElement(subscription_ids_arr, i); -// if (ctx.nullCheck(arrayElement, "Subscription ids array elements")) { -// return; -// } -// subscription_ids_c.push_back(ctx.jString2string((jstring) arrayElement)); -// } -// -// getStreamApi(ctx, thiz)->unsubscribeFrom(subscription_ids_c); -// }); -//} -// -//extern "C" -//JNIEXPORT void JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_keyManagement( -// JNIEnv *env, -// jobject thiz, -// jstring stream_room_id, -// jboolean disable -// // todo - made changes in arguments -// -//) { -////TODO: Add nullchecks -// JniContextUtils ctx(env); -// if (ctx.nullCheck(stream_room_id, "Stream Room ID")) { -// return; -// } -// -// ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id, &disable]() { -// getStreamApi(ctx, thiz)->keyManagement( -// ctx.jString2string(stream_room_id), -// disable == JNI_TRUE -// ); -// -// }); -//} -// -//extern "C" -//JNIEXPORT void JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_trickle( -// JNIEnv *env, -// jobject thiz, -// jlong session_id, -// jstring candidate_as_json -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(candidate_as_json, "Candidate as JSON")) { -// return; -// } -// -// ctx.callVoidEndpointApi([&ctx, &thiz, &session_id, &candidate_as_json]() { -// getStreamApi(ctx, thiz)->trickle( -// session_id, -// ctx.jString2string(candidate_as_json) -// ); -// }); -//} -// -//extern "C" -//JNIEXPORT void JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_unsubscribeFromRemoteStreams( -// JNIEnv *env, -// jobject thiz, -// jstring stream_room_id, -// jobject subscriptions_to_remove -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(stream_room_id, "Stream Room ID") || -// ctx.nullCheck(subscriptions_to_remove, "Subscriptions to remove")) { -// return; -// } -// -// ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id, &subscriptions_to_remove]() { -// auto subscriptions_to_remove_arr = ctx.jObject2jArray(subscriptions_to_remove); -// auto subscriptions_to_remove_c = std::vector(); -// -// int length = ctx->GetArrayLength(subscriptions_to_remove_arr); -// for (int i = 0; i < length; i++) { -// jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_to_remove_arr, i); -// if (ctx.nullCheck(arrayElement, "Subscriptions to remove array elements")) { -// return; -// } -// subscriptions_to_remove_c.push_back( -// parseStreamSubscription( -// ctx, -// arrayElement -// ) -// ); -// } -// -// getStreamApi(ctx, thiz)->unsubscribeFromRemoteStreams( -// ctx.jString2string(stream_room_id), -// subscriptions_to_remove_c -// ); -// }); -//} -// -//extern "C" -//JNIEXPORT void JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_modifyRemoteStreamsSubscriptions( -// JNIEnv *env, -// jobject thiz, -// jstring stream_room_id, -// jobject subscriptions_to_add, -// jobject subscriptions_to_remove, -// jobject options -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(stream_room_id, "Stream Room ID") || -// ctx.nullCheck(subscriptions_to_add, "Subscriptions to add") || -// ctx.nullCheck(subscriptions_to_add, "Subscriptions to remove") || -// ctx.nullCheck(options, "Options")) { -// return; -// } -// -// ctx.callVoidEndpointApi( -// [&ctx, &thiz, &stream_room_id, &subscriptions_to_add, &subscriptions_to_remove, &options]() { -// auto subscriptions_to_add_arr = ctx.jObject2jArray(subscriptions_to_remove); -// auto subscriptions_to_remove_arr = ctx.jObject2jArray(subscriptions_to_remove); -// auto subscriptions_to_add_c = std::vector(); -// auto subscriptions_to_remove_c = std::vector(); -// -// int subscriptions_to_add_length = ctx->GetArrayLength(subscriptions_to_add_arr); -// int subscriptions_to_remove_length = ctx->GetArrayLength( -// subscriptions_to_remove_arr); -// -// for (int i = 0; i < subscriptions_to_add_length; i++) { -// jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_to_add_arr, i); -// if (ctx.nullCheck(arrayElement, "Subscriptions to add array elements")) { -// return; -// } -// subscriptions_to_add_c.push_back( -// parseStreamSubscription( -// ctx, -// arrayElement -// ) -// ); -// } -// for (int i = 0; i < subscriptions_to_remove_length; i++) { -// jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_to_remove_arr, -// i); -// if (ctx.nullCheck(arrayElement, "Subscriptions to remove array elements")) { -// return; -// } -// subscriptions_to_remove_c.push_back( -// parseStreamSubscription( -// ctx, -// arrayElement -// ) -// ); -// } -// -// getStreamApi(ctx, thiz)->modifyRemoteStreamsSubscriptions( -// ctx.jString2string(stream_room_id), -// subscriptions_to_add_c, -// subscriptions_to_remove_c, -// parseSettings(ctx, options) -// ); -// }); -//} -// -//extern "C" -//JNIEXPORT void JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_subscribeToRemoteStreams( -// JNIEnv *env, -// jobject thiz, -// jstring stream_room_id, -// jobject subscriptions, -// jobject options -//) { -// JniContextUtils ctx(env); -// if (ctx.nullCheck(stream_room_id, "Stream Room ID") || -// ctx.nullCheck(subscriptions, "Subscriptions") || -// ctx.nullCheck(options, "Options")) { -// return; -// } -// -// ctx.callVoidEndpointApi([&ctx, &thiz, &stream_room_id, &subscriptions, &options]() { -// auto subscriptions_arr = ctx.jObject2jArray(subscriptions); -// auto subscriptions_c = std::vector(); -// -// int length = ctx->GetArrayLength(subscriptions_arr); -// for (int i = 0; i < length; i++) { -// jobject arrayElement = ctx->GetObjectArrayElement(subscriptions_arr, i); -// if (ctx.nullCheck(arrayElement, "Subscriptions array elements")) { -// return; -// } -// subscriptions_c.push_back( -// parseStreamSubscription( -// ctx, -// arrayElement -// ) -// ); -// } -// getStreamApi(ctx, thiz)->subscribeToRemoteStreams( -// ctx.jString2string(stream_room_id), -// subscriptions_c, -// parseSettings(ctx, options) -// ); -// }); -//} -//extern "C" -//JNIEXPORT jobject JNICALL -//Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_updateStream( -// JNIEnv *env, -// jobject thiz, -// jobject stream_handle -//) { -// JniContextUtils ctx(env); -// jobject result; -// -// ctx.callResultEndpointApi( -// &result, [ -// &ctx, -// &env, -// &thiz, -// &stream_handle -// ] { -// -// auto stream_handle_c = parseStreamHandle(ctx, stream_handle); -// auto stream_result = getStreamApi(ctx, thiz)->updateStream( -// stream_handle_c -// ); -// -// return privmx::wrapper::streams::streamPublishResult2Java( -// ctx, -// stream_result -// ); -// -// }); -// if (ctx->ExceptionCheck()) { -// return nullptr; -// } -// return result; -//} \ No newline at end of file diff --git a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.cpp b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.cpp deleted file mode 100644 index e9685892..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.cpp +++ /dev/null @@ -1,166 +0,0 @@ -#include "privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h" -#include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" -#include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h" -#include "privmx/endpoint/wrapper/utils/jniUtils.h" -//#include "../utils.hpp" -//#include "StreamApi.h" -//#include "../jniUtils.h" - -namespace privmx::wrapper::streams { - - StreamSettingsJNI::StreamSettingsJNI( - JNIEnv *env, - jobject jstreamSettings - ) { - jclass jstreamJoinSettingsClass = env->FindClass("java/lang/IllegalArgumentException"); - javaVM = nullptr; - this->jstreamSettings = nullptr; - if (!env->IsInstanceOf(jstreamSettings, jstreamJoinSettingsClass)) { - env->ThrowNew( - env->FindClass("java/lang/IllegalArgumentException"), - "ERROR"); - return; - } - env->GetJavaVM(&this->javaVM); - this->jstreamSettings = env->NewGlobalRef(jstreamSettings); - - - this->OnFrame = [this]( - int64_t a, - int64_t b, - const std::shared_ptr &frame, - const std::string &c - ) { - JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( - javaVM, - privmx::wrapper::jni::getPrivmxCallbackThreadName()); - JniContextUtils ctx(env); - }; - - this->OnVideo = [this](const std::string &a) { - JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( - javaVM, - privmx::wrapper::jni::getPrivmxCallbackThreadName()); - JniContextUtils ctx(env); - }; - - this->OnVideoRemove = [this](const std::string &a) { - JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( - javaVM, - privmx::wrapper::jni::getPrivmxCallbackThreadName()); - JniContextUtils ctx(env); - }; - } - -// void StreamSettingsJNI::StreamSettingsJNI::onVideo2( -// JNIEnv *env, -// jobject a -// ) { -// jclass jstreamSettingsClass = env->GetObjectClass(jstreamSettings); -// jmethodID jverifyMID = env->GetMethodID( -// jstreamSettingsClass, -// "OnVideo", -// "(" -// "Ljava/lang/String;" -// ")V" -// ); -// -// env->CallObjectMethod( -// jstreamSettings, -// jverifyMID, -// a -// ); - } -// -//void StreamSettingsJNI::onFrame2( -// JNIEnv *env, -// jobject a, -// jobject b, -// jobject c, -// jstring d -//) { -// JniContextUtils ctx(env); -// -// jfieldID onFrameFID = ctx->GetFieldID( -// this->cls, -// "OnFrame", -// "Lcom/simplito/java/privmx_endpoint/model/OnFrameCallback;" -// ); -// -// jobject onFrameField = ctx->GetObjectField(streamSettings, onFrameFID); -// jclass onFrameCls = ctx->FindClass( -// "com/simplito/java/privmx_endpoint/model/OnFrameCallback"); -// jmethodID onFrameMID = ctx->GetMethodID( -// onFrameCls, -// "run", -// "(" -// "J" -// "J" -// "Lcom/simplito/java/privmx_endpoint/model/OnFrame;" -// "Ljava/lang/String;" -// ")V" -// ); -// -// env->CallVoidMethod( -// onFrameField, -// onFrameMID, -// a, b, c, d -// ); -//} -// -//void StreamSettingsJNI::onVideo2(JNIEnv *env, jobject a) { -// JniContextUtils ctx(env); -// -// jfieldID OnVideoFID = ctx->GetFieldID( -// this->cls, -// "OnVideoFID", -// "Ljava/util/function/Consumer;" -// ); -// -// jobject onVideoField = ctx->GetObjectField(streamSettings, OnVideoFID); -// jclass onVideoCls = ctx->FindClass("java/util/function/Consumer"); -// jmethodID onVideoMID = ctx->GetMethodID(onVideoCls, "accept", "(Ljava/lang/Object;)V"); -// -// env->CallVoidMethod( -// onVideoField, -// onVideoMID, -// a -// ); -//} -// -//void StreamSettingsJNI::onVideoRemove2( -// JNIEnv *env, -// jobject a -//) { -// JniContextUtils ctx(env); -// -// jfieldID OnVideoRemoveFID = ctx->GetFieldID( -// this->cls, -// "OnVideoRemoveFID", -// "Ljava/util/function/Consumer;" -// ); -// -// jobject onVideoField = ctx->GetObjectField(streamSettings, OnVideoRemoveFID); -// jclass onVideoCls = ctx->FindClass("java/util/function/Consumer"); -// jmethodID onVideoMID = ctx->GetMethodID(onVideoCls, "accept", "(Ljava/lang/Object;)V"); -// -// env->CallVoidMethod( -// onVideoField, -// onVideoMID, -// a -// ); -//} -// -//StreamSettingsJNI::~StreamSettingsJNI() { -// if (javaVM != nullptr && streamSettings != nullptr) { -// JNIEnv *env = privmx::wrapper::jni::AttachCurrentThreadIfNeeded( -// javaVM, -// privmx::wrapper::jni::getPrivmxCallbackThreadName() -// ); -// -//// if (env != nullptr) env->DeleteGlobalRef(streamSettings); -// streamSettings = nullptr; -// javaVM = nullptr; -// } -//} - diff --git a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.cpp b/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.cpp deleted file mode 100644 index 8847eafe..00000000 --- a/jni-wrappers/privmx-endpoint-streams/android/src/cpp/privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.cpp +++ /dev/null @@ -1,196 +0,0 @@ -// -// Created by Dawid Jenczewski on 13/02/2025. -// - -#include "privmx/endpoint/wrapper/streams/modules/WebRTCInterfaceJNI.h" -//#include "../../../../../../../../privmx-endpoint/src/main/cpp/model_native_initializers.h" -//#include "../../../../../../../../privmx-endpoint/src/main/cpp/utils.hpp" -#include - -JNIEnv *WebRTCInterfaceJNI::AttachCurrentThreadIfNeeded() { - JNIEnv *jni = nullptr; - jint status = javaVM->GetEnv((void **) &jni, JNI_VERSION_1_6); - //return if current thread is attached - if (jni != nullptr && status == JNI_OK) return jni; - - std::string name( - "WebRTCInterfaceJNI - " + std::to_string( - std::hash{}(std::this_thread::get_id()))); - JavaVMAttachArgs args; - args.version = JNI_VERSION_1_6; - args.name = &name[0]; - args.group = nullptr; -#ifdef _JAVASOFT_JNI_H_ // Oracle's jni.h violates the JNI spec! - void* env = nullptr; -#else - JNIEnv *env = nullptr; -#endif - //TODO: Attached thread should be also detached - if (javaVM->AttachCurrentThread(&env, &args) == JNI_OK) { - return reinterpret_cast(env); - } - return nullptr; -} - -WebRTCInterfaceJNI::WebRTCInterfaceJNI(JNIEnv *env, jobject jwebRTCInterface) { - jclass jwebRTCInterfaceClass = env->FindClass( - "com/simplito/java/privmx_endpoint/modules/stream/WebRTCInterface"); - javaVM = nullptr; - if (!env->IsInstanceOf(jwebRTCInterface, jwebRTCInterfaceClass)) { - env->ThrowNew( - env->FindClass("java/lang/IllegalArgumentException"), - "WebRTCInterfaceJNI::WebRTCInterfaceJNI object must be instance of WebRTCInterface"); - return; - } - env->GetJavaVM(&this->javaVM); - //TODO: Clean this global ref on close() - this->jwebRTCInterface = env->NewGlobalRef(jwebRTCInterface); -} - -//std::string WebRTCInterfaceJNI::createOfferAndSetLocalDescription() { -// JNIEnv *env = AttachCurrentThreadIfNeeded(); -// JniContextUtils ctx(env); -// jclass jwebRTCInterfaceClass = env->GetObjectClass(jwebRTCInterface); -// jmethodID jmethodId = env->GetMethodID( -// jwebRTCInterfaceClass, -// "createOfferAndSetLocalDescription", -// "()Ljava/lang/String;" -// ); -// auto result = (jstring) env->CallObjectMethod(jwebRTCInterface, jmethodId); -// if (result == nullptr) { -// env->ThrowNew( -// env->FindClass("java/lang/NullPointerException"), -// "WebRTCInterfaceJni::createOfferAndSetLocalDescription cannot return null" -// ); -// return {}; -// } -// return ctx.jString2string(result); -//} -// -//std::string WebRTCInterfaceJNI::createAnswerAndSetDescriptions( -// const std::string &sdp, -// const std::string &type -//) { -// JNIEnv *env = AttachCurrentThreadIfNeeded(); -// JniContextUtils ctx(env); -// jclass jwebRTCInterfaceClass = env->GetObjectClass(jwebRTCInterface); -// jmethodID jmethodId = env->GetMethodID( -// jwebRTCInterfaceClass, -// "createAnswerAndSetDescriptions", -// "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"); -// auto result = (jstring) env->CallObjectMethod( -// jwebRTCInterface, -// jmethodId, -// env->NewStringUTF(sdp.c_str()), -// env->NewStringUTF(type.c_str())); -// if (result == nullptr) { -// env->ThrowNew( -// env->FindClass("java/lang/NullPointerException"), -// "WebRTCInterfaceJni::createAnswerAndSetDescriptions cannot return null"); -// return {}; -// } -// return ctx.jString2string(result); -//} -// -//void WebRTCInterfaceJNI::setAnswerAndSetRemoteDescription( -// const std::string &sdp, -// const std::string &type -//) { -// JNIEnv *env = AttachCurrentThreadIfNeeded(); -// JniContextUtils ctx(env); -// jclass jwebRTCInterfaceClass = env->GetObjectClass(jwebRTCInterface); -// jmethodID jmethodId = env->GetMethodID( -// jwebRTCInterfaceClass, -// "setAnswerAndSetRemoteDescription", -// "(Ljava/lang/String;Ljava/lang/String;)V" -// ); -// env->CallVoidMethod( -// jwebRTCInterface, -// jmethodId, -// env->NewStringUTF(sdp.c_str()), -// env->NewStringUTF(type.c_str())); -//} -// -//void WebRTCInterfaceJNI::close() { -// JNIEnv *env = AttachCurrentThreadIfNeeded(); -// jclass jwebRTCInterfaceClass = env->GetObjectClass(jwebRTCInterface); -// jmethodID jmethodId = env->GetMethodID( -// jwebRTCInterfaceClass, -// "close", -// "()V" -// ); -// env->CallVoidMethod(jwebRTCInterface, jmethodId); -//} -// -//void WebRTCInterfaceJNI::updateKeys(const std::vector &keys) { -// JNIEnv *env = AttachCurrentThreadIfNeeded(); -// JniContextUtils ctx(env); -// jclass jwebRTCInterfaceClass = env->GetObjectClass(jwebRTCInterface); -// jmethodID jmethodId = env->GetMethodID( -// jwebRTCInterfaceClass, -// "updateKeys", -// "(Ljava/util/List;)V"); -// jclass arrayCls = env->FindClass("java/util/ArrayList"); -// jmethodID initArrayMID = env->GetMethodID( -// arrayCls, -// "", -// "()V"); -// jobject jKeysArray = env->NewObject(arrayCls, initArrayMID); -// jmethodID addToArrayMID = env->GetMethodID( -// arrayCls, -// "add", -// "(Ljava/lang/Object;)Z"); -// ctx.setClassLoaderFromObject(jwebRTCInterface); -// for (auto &key_c: keys) { -// env->CallBooleanMethod(jKeysArray, -// addToArrayMID, -// privmx::wrapper::key2Java(ctx, key_c)); -// } -// env->CallVoidMethod( -// jwebRTCInterface, -// jmethodId, -// jKeysArray); -//} - -std::string WebRTCInterfaceJNI::createOfferAndSetLocalDescription( - const std::string &streamRoomId -) { - return std::string(); -} - -std::string WebRTCInterfaceJNI::createAnswerAndSetDescriptions( - const std::string &streamRoomId, - const std::string &sdp, - const std::string &type -) { - return std::string(); -} - -void WebRTCInterfaceJNI::setAnswerAndSetRemoteDescription( - const std::string &streamRoomId, - const std::string &sdp, - const std::string &type -) { - -} - -void WebRTCInterfaceJNI::updateSessionId( - const std::string &streamRoomId, - const int64_t sessionId, - const std::string &connectionType -) { - -} - -void WebRTCInterfaceJNI::close( - const std::string &streamRoomId -) { - -} - -void WebRTCInterfaceJNI::updateKeys( - const std::string &streamRoomId, - const std::vector &keys -) { - -} diff --git a/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h b/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h new file mode 100644 index 00000000..372d1b8c --- /dev/null +++ b/jni-wrappers/privmx-endpoint-streams/jvm/includes/privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h @@ -0,0 +1,29 @@ +#include +#include + + +#ifndef PRIVMXENDPOINT_STREAMSETTINGSJNI_H +#define PRIVMXENDPOINT_STREAMSETTINGSJNI_H + +namespace privmx::wrapper::streams { + struct StreamSettingsJNI : privmx::endpoint::stream::StreamSettings { + public: + StreamSettingsJNI(JNIEnv *env, jobject jstreamSettings); + +// StreamSettingsJNI(JNIEnv *env); + ~StreamSettingsJNI(); + + void onFrame2(JNIEnv *env, jobject a, jobject b, jobject c, jstring d); + + std::optional> OnVideo; +// void OnVideo(JNIEnv *env, jobject a) override; + + void onVideoRemove2(JNIEnv *env, jobject a); + + private: + jobject jstreamSettings; + JavaVM *javaVM; + jclass cls; + }; +}; +#endif //PRIVMXENDPOINT_STREAMSETTINGSJNI_H diff --git a/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/modules/StreamSettingsJNI.cpp b/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/modules/StreamSettingsJNI.cpp index 9c7c30cf..2936d0b2 100644 --- a/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/modules/StreamSettingsJNI.cpp +++ b/jni-wrappers/privmx-endpoint-streams/jvm/src/cpp/privmx/endpoint/streams/modules/StreamSettingsJNI.cpp @@ -1,7 +1,8 @@ -#include "privmx/endpoint/wrapper/streams/modules/StreamSettingsJNI.h" #include "privmx/endpoint/wrapper/parsers/model_native_initializers.h" -#include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h" #include "privmx/endpoint/wrapper/utils/jniUtils.h" +//#include "../utils.hpp" +//#include "StreamApi.h" +//#include "../jniUtils.h" namespace privmx::wrapper::streams { @@ -21,7 +22,7 @@ namespace privmx::wrapper::streams { env->GetJavaVM(&this->javaVM); this->jstreamSettings = env->NewGlobalRef(jstreamSettings); -// + // this->OnFrame = [this]( // int64_t a, // int64_t b, diff --git a/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/modules/WebRTCInterfaceJNI.h b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/modules/WebRTCInterfaceJNI.h new file mode 100644 index 00000000..bd4403b4 --- /dev/null +++ b/jni-wrappers/privmx-endpoint/includes/privmx/endpoint/wrapper/modules/WebRTCInterfaceJNI.h @@ -0,0 +1,68 @@ +// +// Created by Dawid Jenczewski on 13/02/2025. +// + +#ifndef PRIVMXENDPOINT_WEBRTCINTERFACEJNI_H +#define PRIVMXENDPOINT_WEBRTCINTERFACEJNI_H + +#include "jni.h" +#include + +using namespace privmx::endpoint::stream; + +class WebRTCInterfaceJNI : public WebRTCInterface { +public: + WebRTCInterfaceJNI(JNIEnv *env, jobject jwebRTCInterface); + +// std::string createOfferAndSetLocalDescription() override; +// +// std::string +// createAnswerAndSetDescriptions(const std::string &sdp, const std::string &type) override; +// +// void setAnswerAndSetRemoteDescription(const std::string &sdp, const std::string &type) override; +// +// void close() override; +// +// void updateKeys(const std::vector &keys) override; + + std::string createOfferAndSetLocalDescription(const std::string &streamRoomId) override; + + std::string createAnswerAndSetDescriptions( + const std::string &streamRoomId, + const std::string &sdp, + const std::string &type + ) override; + + void setAnswerAndSetRemoteDescription( + const std::string &streamRoomId, + const std::string &sdp, + const std::string &type + ) override; + + void updateSessionId( + const std::string &streamRoomId, + const int64_t sessionId, + const std::string &connectionType + ) override; + + void close(const std::string &streamRoomId) override; + + void updateKeys( + const std::string &streamRoomId, + const std::vector &keys + ) override; + + WebRTCInterfaceJNI (const WebRTCInterfaceJNI&) = delete; + WebRTCInterfaceJNI& operator= (const WebRTCInterfaceJNI&) = delete; +//protected: + ~WebRTCInterfaceJNI() override = default; + +private: + jobject jwebRTCInterface; + JavaVM *javaVM; + + JNIEnv *AttachCurrentThreadIfNeeded(); +}; + + +#endif //PRIVMXENDPOINT_WEBRTCINTERFACEJNI_H