|
|
@ -3,6 +3,7 @@
|
|
|
|
#include <jni.h>
|
|
|
|
#include <jni.h>
|
|
|
|
#include <llarp.h>
|
|
|
|
#include <llarp.h>
|
|
|
|
#include <signal.h>
|
|
|
|
#include <signal.h>
|
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
#include <thread>
|
|
|
|
#include <thread>
|
|
|
|
|
|
|
|
|
|
|
|
struct AndroidMain
|
|
|
|
struct AndroidMain
|
|
|
@ -12,8 +13,6 @@ struct AndroidMain
|
|
|
|
|
|
|
|
|
|
|
|
~AndroidMain()
|
|
|
|
~AndroidMain()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(m_impl)
|
|
|
|
|
|
|
|
llarp_main_free(m_impl);
|
|
|
|
|
|
|
|
if(m_thread)
|
|
|
|
if(m_thread)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
m_thread->join();
|
|
|
|
m_thread->join();
|
|
|
@ -21,7 +20,8 @@ struct AndroidMain
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Start()
|
|
|
|
void
|
|
|
|
|
|
|
|
Start()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(m_impl || m_thread)
|
|
|
|
if(m_impl || m_thread)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
@ -29,12 +29,15 @@ struct AndroidMain
|
|
|
|
m_thread = new std::thread(std::bind(&AndroidMain::Run, this));
|
|
|
|
m_thread = new std::thread(std::bind(&AndroidMain::Run, this));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Run()
|
|
|
|
void
|
|
|
|
|
|
|
|
Run()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
llarp_main_run(m_impl);
|
|
|
|
llarp_main_run(m_impl);
|
|
|
|
|
|
|
|
llarp_main_free(m_impl);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Stop()
|
|
|
|
void
|
|
|
|
|
|
|
|
Stop()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
llarp_main_signal(m_impl, SIGINT);
|
|
|
|
llarp_main_signal(m_impl, SIGINT);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -46,9 +49,16 @@ struct AndroidMain
|
|
|
|
|
|
|
|
|
|
|
|
extern "C"
|
|
|
|
extern "C"
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
JNIEXPORT jstring JNICALL
|
|
|
|
|
|
|
|
Java_network_loki_lokinet_Lokinet_1JNI_getABICompiledWith(JNIEnv * env,
|
|
|
|
|
|
|
|
jclass)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// TODO: fixme
|
|
|
|
|
|
|
|
return env->NewUTFString("android");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
JNIEXPORT jstring JNICALL Java_network_loki_lokinet_Lokinet_1JNI_startLokinet
|
|
|
|
JNIEXPORT jstring JNICALL Java_network_loki_lokinet_Lokinet_1JNI_startLokinet(
|
|
|
|
(JNIEnv * env, jclass jcl)
|
|
|
|
JNIEnv * env, jclass jcl)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(AndroidMain::daemon->Running())
|
|
|
|
if(AndroidMain::daemon->Running())
|
|
|
|
return env->NewUTFString("already running");
|
|
|
|
return env->NewUTFString("already running");
|
|
|
@ -56,4 +66,18 @@ JNIEXPORT jstring JNICALL Java_network_loki_lokinet_Lokinet_1JNI_startLokinet
|
|
|
|
return env->NewUTFString("ok");
|
|
|
|
return env->NewUTFString("ok");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JNIEXPORT void JNICALL Java_network_loki_lokinet_Lokinet_1JNI_stopLokinet(
|
|
|
|
|
|
|
|
JNIEnv * env, jclass)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if(AndroidMain::daemon->Running())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
AndroidMain::daemon->Stop();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JNIEXPORT void JNICALL
|
|
|
|
|
|
|
|
Java_network_loki_lokinet_Lokinet_1JNI_onNetworkStateChanged(JNIEnv*, jclass,
|
|
|
|
|
|
|
|
jboolean)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|