2020-05-21 16:09:45 +02:00
|
|
|
#include "rpc_server.hpp"
|
2020-05-23 21:36:25 +02:00
|
|
|
#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)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2020-05-23 21:36:25 +02:00
|
|
|
void RpcServer::AsyncServeRPC(std::string url)
|
2020-05-21 16:09:45 +02:00
|
|
|
{
|
2020-05-23 21:36:25 +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
|