1
1
Fork 0
mirror of https://github.com/oxen-io/lokinet synced 2023-12-14 06:53:00 +01:00
lokinet/llarp/rpc/rpc_server.cpp

31 lines
1.1 KiB
C++
Raw Normal View History

2020-05-21 16:09:45 +02:00
#include "rpc_server.hpp"
#include <router/abstractrouter.hpp>
#include <util/thread/logic.hpp>
#include <constants/version.hpp>
2020-05-21 16:09:45 +02:00
namespace llarp::rpc
{
RpcServer::RpcServer(LMQ_ptr lmq, AbstractRouter* r) : m_LMQ(std::move(lmq)), m_Router(r)
{
}
void RpcServer::AsyncServeRPC(std::string url)
2020-05-21 16:09:45 +02:00
{
m_LMQ->listen_plain(std::move(url));
m_LMQ->add_category("llarp", lokimq::AuthLevel::none)
.add_request_command("version", [](lokimq::Message & msg) {
msg.send_reply(llarp::VERSION_FULL);
})
.add_request_command("status", [&](lokimq::Message & msg) {
std::promise<std::string> result;
LogicCall(m_Router->logic(), [&result, r=m_Router]() {
const auto state = r->ExtractStatus();
result.set_value(state.dump());
});
auto ftr = result.get_future();
msg.send_reply(ftr.get());
});
2020-05-21 16:09:45 +02:00
}
} // namespace llarp::rpc