Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions jni-wrappers/privmx-endpoint/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ add_library(${CMAKE_PROJECT_NAME} SHARED
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/modules/ExtKey.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/modules/Utils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/modules/KvdbApi.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/modules/EventsList.cpp
src/cpp/streams/modules/StreamApiLow.cpp
src/cpp/streams/modules/WebRTCInterfaceJNI.cpp
src/cpp/streams/modules/StreamSettingsJNI.cpp
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#ifndef PRIVMXENDPOINT_EVENTSLIST_H
#define PRIVMXENDPOINT_EVENTSLIST_H

#include "privmx/endpoint/wrapper/parsers/parser.h"

class EventsList {
private:
EventsList() {
addParser(parseEvent);
}

public:
static EventsList &instance(){
static EventsList eventsList;
return eventsList;
}

void addParser( jobject (*fun)(JniContextUtils&, std::shared_ptr<privmx::endpoint::core::Event>)){
list_of_parsers.push_back(fun);
}

jobject getEvent(
JniContextUtils& ctx,
std::shared_ptr<privmx::endpoint::core::Event> event
) {
int size = list_of_parsers.size() -1;
for(int i=size; i>=0; --i)
{
jobject res = list_of_parsers[i](ctx, event);
if (res != nullptr) {
return res;
}
}

return nullptr;
}

std::vector< jobject (*)(JniContextUtils &ctx, std::shared_ptr<privmx::endpoint::core::Event> event)> list_of_parsers;
};


#endif //PRIVMXENDPOINT_EVENTSLIST_H
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
#include "privmx/endpoint/core/Types.hpp"
#include "privmx/endpoint/core/Events.hpp"
#include "privmx/endpoint/inbox/Types.hpp"
#include "privmx/endpoint/stream/Events.hpp"
#include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h"

std::vector<privmx::endpoint::core::UserWithPubKey>
usersToVector(JniContextUtils &ctx, jobjectArray users);
Expand All @@ -35,6 +37,9 @@ privmx::endpoint::core::ItemPolicy parseItemPolicy(JniContextUtils &ctx, jobject

privmx::endpoint::inbox::FilesConfig parseFilesConfig(JniContextUtils &ctx, jobject filesConfig);

jobject initEvent(JniContextUtils &ctx, std::string type, std::string channel, int64_t connectionId,
std::vector<std::string> &subscriptions, int64_t timestamp, jobject data_j) ;

jobject parseEvent(JniContextUtils &ctx, std::shared_ptr<privmx::endpoint::core::Event> event);

privmx::endpoint::core::PagingQuery parsePagingQuery(JniContextUtils &ctx, jobject pagingQuery);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,46 @@ namespace privmx {

jobject
sdpWithTypeModel2Java(JniContextUtils &ctx, privmx::endpoint::stream::SdpWithTypeModel sdpWithTypeModel_c);
jobject
streamTrackModificationPair2Java(JniContextUtils & ctx, endpoint::stream::StreamTrackModificationPair
streamTrackModificationPair);

jobject
streamTrackModification2Java(JniContextUtils & ctx, endpoint::stream::StreamTrackModification
streamTrackModification);

jobject
streamUpdatedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamUpdatedEventData
data);

jobject
updatedStreamData2Java(JniContextUtils & ctx, endpoint::stream::UpdatedStreamData
updatedStreamData);

jobject
streamRoomDeletedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamRoomDeletedEventData
data);

jobject
streamPublishedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamPublishedEventData
data);

jobject
streamEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamEventData
data);

jobject
streamUnpublishedEventData2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamUnpublishedEventData
data);

jobject
newStreams2Java(JniContextUtils & ctx, privmx::endpoint::stream::NewStreams
data);

jobject
streamsUpdated2Java(JniContextUtils & ctx, privmx::endpoint::stream::StreamsUpdatedData
data);

} // streams
} // wrapper
} // privmx
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,5 @@ privmx::endpoint::stream::StreamSettings parseStreamSettings(JNIEnv *env, jobjec
privmx::endpoint::stream::StreamSubscription parseStreamSubscription(JniContextUtils &ctx, jobject streamSubscription);

//#endif //PRIVMX_POCKET_LIB_PARSER_H
jobject parseStreamEvent(JniContextUtils &ctx, std::shared_ptr<privmx::endpoint::core::Event> event);

7 changes: 4 additions & 3 deletions jni-wrappers/privmx-endpoint/src/cpp/modules/EventQueue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <privmx/endpoint/core/EventQueue.hpp>
#include "privmx/endpoint/wrapper/utils/utils.hpp"
#include "privmx/endpoint/wrapper/parsers/parser.h"
#include "privmx/endpoint/wrapper/modules/EventsList.h"

using namespace privmx::endpoint::core;

Expand All @@ -36,7 +37,7 @@ Java_com_simplito_java_privmx_1endpoint_modules_core_EventQueue_waitEvent(
JniContextUtils ctx(env);
jobject result;
ctx.callResultEndpointApi<jobject>(&result, [&ctx]() {
return parseEvent(ctx, EventQueue::getInstance().waitEvent().get());
return EventsList::instance().getEvent(ctx, EventQueue::getInstance().waitEvent().get());
});
if (ctx->ExceptionCheck()) {
return nullptr;
Expand All @@ -54,8 +55,8 @@ Java_com_simplito_java_privmx_1endpoint_modules_core_EventQueue_getEvent(
ctx.callResultEndpointApi<jobject>(&result, [&ctx]() {
auto eventHolder = EventQueue::getInstance().getEvent();
return !eventHolder.has_value() ?
nullptr :
parseEvent(ctx, eventHolder.value().get());
nullptr :
EventsList::instance().getEvent(ctx, eventHolder.value().get());
});
if (ctx->ExceptionCheck()) {
return nullptr;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#include "privmx/endpoint/wrapper/streams/parsers/model_native_initializers.h"
#include "privmx/endpoint/wrapper/streams/parsers/parser.h"

//#include <privmx-endpoint/includes/privmx/endpoint/wrapper/parsers/parser.h>
#include "privmx/endpoint/wrapper/modules/EventsList.h"

using namespace privmx::endpoint::stream;
using namespace privmx::endpoint;
Expand Down Expand Up @@ -75,6 +75,8 @@ Java_com_simplito_java_privmx_1endpoint_modules_stream_StreamApiLow_create(
return nullptr;
}

EventsList::instance().addParser(parseStreamEvent);

// jobject result;
// ctx.callResultEndpointApi<jobject>(&result, [&ctx, &env, &clazz, &connection, &eventApi] {
jmethodID initMID = ctx->GetMethodID(clazz, "<init>",
Expand Down Expand Up @@ -649,6 +651,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<jstring>(
&result,
[&ctx, &thiz, &event_type, &selector_type, &selector_id]() {
std::string query_result_c = getStreamApi(ctx, thiz)->buildSubscriptionQuery(
static_cast<stream::EventType>(event_type),
static_cast<stream::EventSelectorType>(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(
Expand Down
Loading