core: Cleanup RPC (#6674)
This commit is contained in:
parent
bbf833bceb
commit
7a7f485640
10 changed files with 69 additions and 83 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue