mirror of
https://github.com/oxen-io/lokinet.git
synced 2024-11-15 12:13:24 +00:00
62 lines
1.4 KiB
C++
62 lines
1.4 KiB
C++
|
#include <napi.h>
|
||
|
#include <llarp.hpp>
|
||
|
|
||
|
struct Lokinet : public Napi::ObjectWrap< Lokinet >
|
||
|
{
|
||
|
llarp::Context ctx;
|
||
|
|
||
|
static Napi::Object
|
||
|
Init(Napi::Env env, Napi::Object exports)
|
||
|
{
|
||
|
Napi::HandleScope scope(env);
|
||
|
|
||
|
Napi::Function func =
|
||
|
DefineClass(env, "Lokinet",
|
||
|
{InstanceMethod("configure", &Lokinet::Configure),
|
||
|
InstanceMethod("run", &Lokient::Run),
|
||
|
InstanceMethod("kill", &Lokinet::Kill)});
|
||
|
|
||
|
constructor = Napi::Persistent(func);
|
||
|
constructor.SuppressDestruct();
|
||
|
|
||
|
exports.Set("Lokinet", func);
|
||
|
return exports;
|
||
|
};
|
||
|
|
||
|
Napi::Value
|
||
|
Configure(const Napi::CallbackInfo& info)
|
||
|
{
|
||
|
if(info.Length() != 1 || !info[0].IsString())
|
||
|
{
|
||
|
Napi::TypeError::New(env, "String expected").ThrowAsJavaScriptException();
|
||
|
}
|
||
|
bool result = ctx.LoadConfig(info[0].As< std::string >());
|
||
|
if(result)
|
||
|
{
|
||
|
result &= ctx.Setup() == 0;
|
||
|
}
|
||
|
return Napi::Value(info.Env(), result);
|
||
|
}
|
||
|
|
||
|
Napi::Value
|
||
|
Run(const Napi::CallbackInfo& info)
|
||
|
{
|
||
|
bool result = ctx.Run() == 0;
|
||
|
return Napi::Value(info.Env(), result);
|
||
|
}
|
||
|
|
||
|
Napi::Value
|
||
|
Kill(const Napi::CallbackInfo& info)
|
||
|
{
|
||
|
bool result = ctx.Stop();
|
||
|
return Napi::Value(info.Env(), result);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
Napi::Object
|
||
|
InitAll(Napi::Env env, Napi::Object exports)
|
||
|
{
|
||
|
return Lokinet::Init(env, exports);
|
||
|
}
|
||
|
|
||
|
NODE_API_MODULE(addon, InitAll)
|