| |
| |
| |
|
|
| #include "core/core.h" |
| #include "core/rpc/packet.h" |
| #include "core/rpc/rpc_server.h" |
| #include "core/rpc/server.h" |
| #include "core/rpc/udp_server.h" |
|
|
| namespace Core::RPC { |
|
|
| Server::Server(Core::System& system_) : rpc_server{system_} { |
| const auto callback = [this](std::unique_ptr<Packet> new_request) { |
| NewRequestCallback(std::move(new_request)); |
| }; |
|
|
| try { |
| udp_server = std::make_unique<UDPServer>(callback); |
| } catch (...) { |
| LOG_ERROR(RPC_Server, "Error starting UDP server"); |
| } |
| } |
|
|
| Server::~Server() { |
| udp_server.reset(); |
| NewRequestCallback(nullptr); |
| } |
|
|
| void Server::NewRequestCallback(std::unique_ptr<RPC::Packet> new_request) { |
| if (new_request) { |
| LOG_INFO(RPC_Server, "Received request version={} id={} type={} size={}", |
| new_request->GetVersion(), new_request->GetId(), new_request->GetPacketType(), |
| new_request->GetPacketDataSize()); |
| } else { |
| LOG_INFO(RPC_Server, "Received end packet"); |
| } |
| rpc_server.QueueRequest(std::move(new_request)); |
| } |
|
|
| }; |
|
|