core: Cleanup RPC (#6674)

This commit is contained in:
GPUCode 2023-07-13 04:54:02 +03:00 committed by GitHub
parent bbf833bceb
commit 7a7f485640
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 69 additions and 83 deletions

View file

@ -6,36 +6,39 @@
#include <condition_variable>
#include <memory>
#include <mutex>
#include <span>
#include <thread>
#include "common/polyfill_thread.h"
#include "common/threadsafe_queue.h"
#include "core/rpc/server.h"
namespace RPC {
namespace Core {
class System;
}
namespace Core::RPC {
class Packet;
struct PacketHeader;
class RPCServer {
public:
RPCServer();
explicit RPCServer(Core::System& system);
~RPCServer();
void QueueRequest(std::unique_ptr<RPC::Packet> request);
private:
void Start();
void Stop();
void HandleReadMemory(Packet& packet, u32 address, u32 data_size);
void HandleWriteMemory(Packet& packet, u32 address, std::span<const u8> data);
bool ValidatePacket(const PacketHeader& packet_header);
void HandleSingleRequest(std::unique_ptr<Packet> request);
void HandleRequestsLoop();
void HandleRequestsLoop(std::stop_token stop_token);
private:
Core::System& system;
Server server;
Common::SPSCQueue<std::unique_ptr<Packet>> request_queue;
std::thread request_handler_thread;
Common::SPSCQueue<std::unique_ptr<Packet>, true> request_queue;
std::jthread request_handler_thread;
};
} // namespace RPC
} // namespace Core::RPC