|
|
|
@ -274,6 +274,22 @@ void utun_bridge_connect_channel(const char* channel_id) { |
|
|
|
uasync_post(ua, chat_core_connect_channel_trampoline, cid); |
|
|
|
uasync_post(ua, chat_core_connect_channel_trampoline, cid); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void utun_bridge_connect_member_node(const char* channel_id, uint64_t node_id) { |
|
|
|
|
|
|
|
if (!channel_id || !channel_id[0] || node_id == 0) { |
|
|
|
|
|
|
|
bridge_log(BLEV_ERROR, "connect_member_node: invalid args ch=%s node=0x%016llx", |
|
|
|
|
|
|
|
channel_id ? channel_id : "(null)", (unsigned long long)node_id); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
struct UASYNC* ua = instance_lite_get_uasync(); |
|
|
|
|
|
|
|
if (!uasync_is_running(ua)) return; |
|
|
|
|
|
|
|
struct chat_connect_node_req* req = u_calloc(1, sizeof(*req)); |
|
|
|
|
|
|
|
if (!req) { bridge_log(BLEV_ERROR, "connect_member_node: OOM"); return; } |
|
|
|
|
|
|
|
strncpy(req->ch_id, channel_id, sizeof(req->ch_id) - 1); |
|
|
|
|
|
|
|
req->node_id = node_id; |
|
|
|
|
|
|
|
bridge_log(BLEV_INFO, "connect_member_node ch=%s node=0x%016llx", channel_id, (unsigned long long)node_id); |
|
|
|
|
|
|
|
uasync_post(ua, chat_core_connect_node_trampoline, req); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static char* json_escape_alloc(const char* str) { |
|
|
|
static char* json_escape_alloc(const char* str) { |
|
|
|
if (!str) return u_strdup(""); |
|
|
|
if (!str) return u_strdup(""); |
|
|
|
size_t len = strlen(str), cap = len * 2 + 8; |
|
|
|
size_t len = strlen(str), cap = len * 2 + 8; |
|
|
|
@ -518,7 +534,7 @@ void utun_bridge_set_debug_level(const char* category, const char* level) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void utun_bridge_chat_setting_set(const char* name, const char* value) { |
|
|
|
void utun_bridge_chat_setting_set(const char* name, const char* value) { |
|
|
|
chat_setting_set(name, value); |
|
|
|
chat_core_set_setting(name, value); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int utun_bridge_chat_setting_get_int(const char* name, int def) { |
|
|
|
int utun_bridge_chat_setting_get_int(const char* name, int def) { |
|
|
|
@ -1561,6 +1577,14 @@ JNIEXPORT void JNICALL Java_com_utun_chat_data_NativeLib_nativeConnectChannel( |
|
|
|
if (ch) (*env)->ReleaseStringUTFChars(env, channelId, ch); |
|
|
|
if (ch) (*env)->ReleaseStringUTFChars(env, channelId, ch); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JNIEXPORT void JNICALL Java_com_utun_chat_data_NativeLib_nativeConnectMemberNode( |
|
|
|
|
|
|
|
JNIEnv* env, jobject thiz, jstring channelId, jlong nodeId) { |
|
|
|
|
|
|
|
(void)thiz; |
|
|
|
|
|
|
|
const char* ch = (*env)->GetStringUTFChars(env, channelId, NULL); |
|
|
|
|
|
|
|
utun_bridge_connect_member_node(ch, (uint64_t)nodeId); |
|
|
|
|
|
|
|
if (ch) (*env)->ReleaseStringUTFChars(env, channelId, ch); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
JNIEXPORT void JNICALL Java_com_utun_chat_data_NativeLib_nativeSetDebugLevel( |
|
|
|
JNIEXPORT void JNICALL Java_com_utun_chat_data_NativeLib_nativeSetDebugLevel( |
|
|
|
JNIEnv* env, jobject thiz, jstring category, jstring level) { |
|
|
|
JNIEnv* env, jobject thiz, jstring category, jstring level) { |
|
|
|
(void)thiz; |
|
|
|
(void)thiz; |
|
|
|
@ -1576,7 +1600,7 @@ JNIEXPORT void JNICALL Java_com_utun_chat_data_NativeLib_nativeSetChatSetting( |
|
|
|
(void)thiz; |
|
|
|
(void)thiz; |
|
|
|
const char* n = (*env)->GetStringUTFChars(env, name, NULL); |
|
|
|
const char* n = (*env)->GetStringUTFChars(env, name, NULL); |
|
|
|
const char* v = (*env)->GetStringUTFChars(env, value, NULL); |
|
|
|
const char* v = (*env)->GetStringUTFChars(env, value, NULL); |
|
|
|
chat_setting_set(n, v); |
|
|
|
chat_core_set_setting(n, v); |
|
|
|
if (v) (*env)->ReleaseStringUTFChars(env, value, v); |
|
|
|
if (v) (*env)->ReleaseStringUTFChars(env, value, v); |
|
|
|
if (n) (*env)->ReleaseStringUTFChars(env, name, n); |
|
|
|
if (n) (*env)->ReleaseStringUTFChars(env, name, n); |
|
|
|
} |
|
|
|
} |
|
|
|
|