update android jni

pull/155/head
Jeff Becker 6 years ago
parent a8e3f79fc4
commit b323665140
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -12,34 +12,54 @@ struct AndroidMain
{
llarp_main* m_impl = nullptr;
std::thread* m_thread = nullptr;
std::string configFile;
/// set configuration and ensure files
bool
Configure(const char * conf, const char * basedir)
{
configFile = conf;
return llarp_ensure_config(conf, basedir, false, false);
}
/// reload config on runtime
bool
ReloadConfig()
{
if(!m_Impl)
return false;
llarp_main_signal(m_impl, SIGHUP);
return true;
}
/// start daemon thread
bool
Start(const char* conf, const char* basedir)
Start()
{
if(m_impl || m_thread)
return true;
if(!llarp_ensure_config(conf, basedir, false, false))
return false;
m_impl = llarp_main_init(conf, true);
m_impl = llarp_main_init(configFile.c_str(), true);
if(m_impl == nullptr)
return false;
m_thread = new std::thread(std::bind(&AndroidMain::Run, this));
return true;
}
/// return true if we are running
bool
Running() const
{
return m_impl != nullptr;
return m_impl != nullptr && m_thread != nullptr;
}
/// blocking run
void
Run()
{
printf("running\n");
llarp_main_run(m_impl);
}
/// stop daemon thread
void
Stop()
{
@ -79,9 +99,15 @@ extern "C"
env->ReleaseStringUTFChars(configfile, nativeString);
basepath = fs::path(conf).parent_path();
}
if(daemon->Start(conf.c_str(), basepath.string().c_str()))
return env->NewStringUTF("ok");
return env->NewStringUTF("failed to start");
if(daemon->Configure(conf.c_str(), basepath.string().c_str()))
{
if(daemon->Start())
return env->NewStringUTF("ok");
else
return env->NewStringUTF("failed to start daemon");
}
else
return ev->NewStringUTF("failed to configure daemon");
}
JNIEXPORT void JNICALL
@ -95,7 +121,21 @@ extern "C"
JNIEXPORT void JNICALL
Java_network_loki_lokinet_Lokinet_1JNI_onNetworkStateChanged(JNIEnv*, jclass,
jboolean)
jboolean isConnected)
{
if(isConnected)
{
if(!daemon->Running())
{
if(!daemon->Start())
{
// TODO: do some kind of callback here
}
}
}
else if(daemon->Running())
{
daemon->Stop();
}
}
}
Loading…
Cancel
Save