|
|
|
@ -62,8 +62,8 @@ namespace llarp
|
|
|
|
|
// Router config
|
|
|
|
|
if(!singleThreaded && config->router.workerThreads > 0 && !worker)
|
|
|
|
|
{
|
|
|
|
|
worker.reset(
|
|
|
|
|
llarp_init_threadpool(config->router.workerThreads, "llarp-worker"));
|
|
|
|
|
worker = std::make_shared< llarp::thread::ThreadPool >(
|
|
|
|
|
config->router.workerThreads, 1024);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(singleThreaded)
|
|
|
|
@ -212,21 +212,7 @@ __ ___ ____ _ _ ___ _ _ ____
|
|
|
|
|
llarp::LogInfo(LLARP_VERSION, " ", LLARP_RELEASE_MOTTO);
|
|
|
|
|
llarp::LogInfo("starting up");
|
|
|
|
|
mainloop = llarp_make_ev_loop();
|
|
|
|
|
// ensure worker thread pool
|
|
|
|
|
if(!worker && !singleThreaded)
|
|
|
|
|
worker.reset(llarp_init_threadpool(2, "llarp-worker"));
|
|
|
|
|
else if(singleThreaded)
|
|
|
|
|
{
|
|
|
|
|
llarp::LogInfo("running in single threaded mode");
|
|
|
|
|
worker.reset(llarp_init_same_process_threadpool());
|
|
|
|
|
}
|
|
|
|
|
// ensure netio thread
|
|
|
|
|
if(singleThreaded)
|
|
|
|
|
{
|
|
|
|
|
logic = std::make_shared< Logic >(worker.get());
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
logic = std::make_shared< Logic >();
|
|
|
|
|
logic = std::make_shared< Logic >();
|
|
|
|
|
|
|
|
|
|
if(debug)
|
|
|
|
|
{
|
|
|
|
@ -257,7 +243,7 @@ __ ___ ____ _ _ ___ _ _ ____
|
|
|
|
|
}
|
|
|
|
|
cryptoManager = std::make_unique< CryptoManager >(crypto.get());
|
|
|
|
|
|
|
|
|
|
router = std::make_unique< Router >(worker.get(), mainloop, logic);
|
|
|
|
|
router = std::make_unique< Router >(worker, mainloop, logic);
|
|
|
|
|
if(!router->Configure(config.get()))
|
|
|
|
|
{
|
|
|
|
|
llarp::LogError("Failed to configure router");
|
|
|
|
@ -288,7 +274,7 @@ __ ___ ____ _ _ ___ _ _ ____
|
|
|
|
|
|
|
|
|
|
// run net io thread
|
|
|
|
|
llarp::LogInfo("running mainloop");
|
|
|
|
|
llarp_ev_loop_run_single_process(mainloop, worker.get(), logic);
|
|
|
|
|
llarp_ev_loop_run_single_process(mainloop, logic);
|
|
|
|
|
// waits for router graceful stop
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
@ -390,17 +376,13 @@ __ ___ ____ _ _ ___ _ _ ____
|
|
|
|
|
{
|
|
|
|
|
llarp::LogDebug("stop workers");
|
|
|
|
|
if(worker)
|
|
|
|
|
llarp_threadpool_stop(worker.get());
|
|
|
|
|
|
|
|
|
|
llarp::LogDebug("join workers");
|
|
|
|
|
if(worker)
|
|
|
|
|
llarp_threadpool_join(worker.get());
|
|
|
|
|
worker->stop();
|
|
|
|
|
|
|
|
|
|
llarp::LogDebug("free config");
|
|
|
|
|
config.release();
|
|
|
|
|
|
|
|
|
|
llarp::LogDebug("free workers");
|
|
|
|
|
worker.release();
|
|
|
|
|
worker.reset();
|
|
|
|
|
|
|
|
|
|
llarp::LogDebug("free nodedb");
|
|
|
|
|
nodedb.release();
|
|
|
|
|