Skip to content

Commit 533626c

Browse files
Updated to latest libsession-util and clean up (#16)
1 parent c275bdd commit 533626c

33 files changed

+918
-988
lines changed

.drone.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ steps:
1616
environment:
1717
ANDROID_HOME: /usr/lib/android-sdk
1818
commands:
19-
- apt-get -y update && apt-get -y install ninja-build
20-
- update-java-alternatives -s java-1.17.0-openjdk-amd64
2119
- env VERSION=`git describe --tags --dirty` ./gradlew publish
2220

2321
- name: upload the artifact

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[versions]
2-
agp = "8.10.1"
3-
kotlin = "2.1.10"
2+
agp = "8.11.1"
3+
kotlin = "2.2.0"
44

55
[libraries]
66

library/src/main/cpp/blinded_key.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,11 @@ Java_network_loki_messenger_libsession_1util_util_BlindKeyAPI_blindVersionSignRe
4646
jstring path,
4747
jbyteArray body) {
4848
return jni_utils::run_catching_cxx_exception_or_throws<jbyteArray>(env, [=] {
49-
auto methodC = util::string_from_jstring(env, method);
50-
auto pathC = util::string_from_jstring(env, path);
51-
5249
auto bytes = session::blind_version_sign_request(
5350
jni_utils::JavaByteArrayRef(env, ed25519_secret_key).get(),
5451
timestamp,
55-
methodC,
56-
pathC,
52+
jni_utils::JavaStringRef(env, method).view(),
53+
jni_utils::JavaStringRef(env, path).view(),
5754
body ? std::make_optional(jni_utils::JavaByteArrayRef(env, body).get()) : std::nullopt
5855
);
5956
return util::bytes_from_vector(env, bytes);

library/src/main/cpp/config_base.cpp

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,25 @@
55
extern "C" {
66
JNIEXPORT jboolean JNICALL
77
Java_network_loki_messenger_libsession_1util_ConfigBase_dirty(JNIEnv *env, jobject thiz) {
8-
std::lock_guard lock{util::util_mutex_};
98
auto* configBase = ptrToConfigBase(env, thiz);
109
return configBase->is_dirty();
1110
}
1211

1312
JNIEXPORT jboolean JNICALL
1413
Java_network_loki_messenger_libsession_1util_ConfigBase_needsPush(JNIEnv *env, jobject thiz) {
15-
std::lock_guard lock{util::util_mutex_};
1614
auto config = ptrToConfigBase(env, thiz);
1715
return config->needs_push();
1816
}
1917

2018
JNIEXPORT jboolean JNICALL
2119
Java_network_loki_messenger_libsession_1util_ConfigBase_needsDump(JNIEnv *env, jobject thiz) {
22-
std::lock_guard lock{util::util_mutex_};
2320
auto config = ptrToConfigBase(env, thiz);
2421
return config->needs_dump();
2522
}
2623

2724
JNIEXPORT jobject JNICALL
2825
Java_network_loki_messenger_libsession_1util_ConfigBase_push(JNIEnv *env, jobject thiz) {
2926
return jni_utils::run_catching_cxx_exception_or_throws<jobject>(env, [=] {
30-
std::lock_guard lock{util::util_mutex_};
3127
auto config = ptrToConfigBase(env, thiz);
3228
auto [seq_no, to_push, to_delete] = config->push();
3329

@@ -51,7 +47,6 @@ Java_network_loki_messenger_libsession_1util_ConfigBase_free(JNIEnv *env, jobjec
5147

5248
JNIEXPORT jbyteArray JNICALL
5349
Java_network_loki_messenger_libsession_1util_ConfigBase_dump(JNIEnv *env, jobject thiz) {
54-
std::lock_guard lock{util::util_mutex_};
5550
auto config = ptrToConfigBase(env, thiz);
5651
auto dumped = config->dump();
5752
jbyteArray bytes = util::bytes_from_vector(env, dumped);
@@ -69,16 +64,13 @@ JNIEXPORT void JNICALL
6964
Java_network_loki_messenger_libsession_1util_ConfigBase_confirmPushed(JNIEnv *env, jobject thiz,
7065
jlong seq_no,
7166
jobjectArray hash_list) {
72-
std::lock_guard lock{util::util_mutex_};
7367
auto conf = ptrToConfigBase(env, thiz);
7468
auto hash_list_size = env->GetArrayLength(hash_list);
7569
std::unordered_set<std::string> hashes(hash_list_size);
7670

7771
for (int i = 0; i < hash_list_size; i++) {
78-
auto hash_jstring = jni_utils::JavaLocalRef(env, (jstring) env->GetObjectArrayElement(hash_list, i));
79-
auto hash = env->GetStringUTFChars(hash_jstring.get(), nullptr);
80-
hashes.insert(hash);
81-
env->ReleaseStringUTFChars(hash_jstring.get(), hash);
72+
jni_utils::JavaLocalRef hash_jstring(env, (jstring) env->GetObjectArrayElement(hash_list, i));
73+
hashes.insert(jni_utils::JavaStringRef(env, hash_jstring.get()).copy());
8274
}
8375

8476
conf->confirm_pushed(seq_no, hashes);
@@ -90,7 +82,6 @@ JNIEXPORT jobject JNICALL
9082
Java_network_loki_messenger_libsession_1util_ConfigBase_merge___3Lkotlin_Pair_2(JNIEnv *env, jobject thiz,
9183
jobjectArray to_merge) {
9284
return jni_utils::run_catching_cxx_exception_or_throws<jobject>(env, [=] {
93-
std::lock_guard lock{util::util_mutex_};
9485
auto conf = ptrToConfigBase(env, thiz);
9586
size_t number = env->GetArrayLength(to_merge);
9687
std::vector<std::pair<std::string, std::vector<unsigned char>>> configs = {};
@@ -137,7 +128,6 @@ Java_network_loki_messenger_libsession_1util_ConfigBase_00024Companion_kindFor(J
137128
extern "C"
138129
JNIEXPORT jobject JNICALL
139130
Java_network_loki_messenger_libsession_1util_ConfigBase_activeHashes(JNIEnv *env, jobject thiz) {
140-
std::lock_guard lock{util::util_mutex_};
141131
auto conf = ptrToConfigBase(env, thiz);
142132
return jni_utils::jstring_list_from_collection(env, conf->active_hashes());
143133
}

library/src/main/cpp/config_base.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "jni_utils.h"
77
#include <jni.h>
88
#include <string>
9+
#include <vector>
910

1011
inline session::config::ConfigBase* ptrToConfigBase(JNIEnv *env, jobject obj) {
1112
auto baseClass = jni_utils::JavaLocalRef(env, env->FindClass("network/loki/messenger/libsession_util/ConfigBase"));
@@ -17,13 +18,13 @@ inline std::pair<std::string, std::vector<unsigned char>> extractHashAndData(JNI
1718
auto pair = jni_utils::JavaLocalRef(env, env->FindClass("kotlin/Pair"));
1819
jfieldID first = env->GetFieldID(pair.get(), "first", "Ljava/lang/Object;");
1920
jfieldID second = env->GetFieldID(pair.get(), "second", "Ljava/lang/Object;");
20-
auto hash_as_jstring = jni_utils::JavaLocalRef(env, static_cast<jstring>(env->GetObjectField(kotlin_pair, first)));
21-
auto data_as_jbytes = jni_utils::JavaLocalRef(env, static_cast<jbyteArray>(env->GetObjectField(kotlin_pair, second)));
22-
auto hash_as_string = env->GetStringUTFChars(hash_as_jstring.get(), nullptr);
23-
auto data_as_vector = util::vector_from_bytes(env, data_as_jbytes.get());
24-
auto ret_pair = std::pair<std::string, std::vector<unsigned char>>{hash_as_string, data_as_vector};
25-
env->ReleaseStringUTFChars(hash_as_jstring.get(), hash_as_string);
26-
return ret_pair;
21+
auto hash_as_jstring = jni_utils::JavaLocalRef(env, reinterpret_cast<jstring>(env->GetObjectField(kotlin_pair, first)));
22+
auto data_as_jbytes = jni_utils::JavaLocalRef(env, reinterpret_cast<jbyteArray>(env->GetObjectField(kotlin_pair, second)));
23+
24+
return std::make_pair(
25+
std::string(jni_utils::JavaStringRef(env, hash_as_jstring.get()).view()),
26+
jni_utils::JavaByteArrayRef(env, data_as_jbytes.get()).copy()
27+
);
2728
}
2829

2930
inline session::config::ConfigSig* ptrToConfigSig(JNIEnv* env, jobject obj) {

library/src/main/cpp/config_common.cpp

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,23 @@ Java_network_loki_messenger_libsession_1util_ConfigKt_createConfigObject(
1616
jbyteArray ed25519_secret_key,
1717
jbyteArray initial_dump) {
1818
return jni_utils::run_catching_cxx_exception_or_throws<jlong>(env, [=] {
19-
auto config_name = util::string_from_jstring(env, java_config_name);
20-
auto secret_key = util::vector_from_bytes(env, ed25519_secret_key);
19+
jni_utils::JavaStringRef config_name(env, java_config_name);
20+
jni_utils::JavaByteArrayRef secret_key(env, ed25519_secret_key);
2121
auto initial = initial_dump
2222
? std::optional(util::vector_from_bytes(env, initial_dump))
2323
: std::nullopt;
2424

2525

26-
std::lock_guard lock{util::util_mutex_};
27-
if (config_name == "Contacts") {
28-
return reinterpret_cast<jlong>(new session::config::Contacts(secret_key, initial));
29-
} else if (config_name == "UserProfile") {
30-
return reinterpret_cast<jlong>(new session::config::UserProfile(secret_key, initial));
31-
} else if (config_name == "UserGroups") {
32-
return reinterpret_cast<jlong>(new session::config::UserGroups(secret_key, initial));
33-
} else if (config_name == "ConvoInfoVolatile") {
34-
return reinterpret_cast<jlong>(new session::config::ConvoInfoVolatile(secret_key, initial));
26+
if (config_name.view() == "Contacts") {
27+
return reinterpret_cast<jlong>(new session::config::Contacts(secret_key.get(), initial));
28+
} else if (config_name.view() == "UserProfile") {
29+
return reinterpret_cast<jlong>(new session::config::UserProfile(secret_key.get(), initial));
30+
} else if (config_name.view() == "UserGroups") {
31+
return reinterpret_cast<jlong>(new session::config::UserGroups(secret_key.get(), initial));
32+
} else if (config_name.view() == "ConvoInfoVolatile") {
33+
return reinterpret_cast<jlong>(new session::config::ConvoInfoVolatile(secret_key.get(), initial));
3534
} else {
36-
throw std::invalid_argument("Unknown config name: " + config_name);
35+
throw std::invalid_argument("Unknown config name: " + std::string(config_name.view()));
3736
}
3837
});
3938
}

0 commit comments

Comments
 (0)