mirror of
https://github.com/oxen-io/lokinet.git
synced 2024-10-29 11:05:43 +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) |