mirror of
https://github.com/RPCSX/rpcsx.git
synced 2025-12-06 07:12:14 +01:00
61 lines
1.5 KiB
C++
61 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "Utilities/Thread.h"
|
|
#include "util/logs.hpp"
|
|
#include "Emu/Memory/vm.h"
|
|
#include "../pine/pine_server.h"
|
|
|
|
LOG_CHANNEL(IPC);
|
|
|
|
namespace IPC_socket
|
|
{
|
|
class IPC_impl
|
|
{
|
|
protected:
|
|
template <u32 Size = 1>
|
|
static bool check_addr(u32 addr, u8 flags = vm::page_readable)
|
|
{
|
|
return vm::check_addr<Size>(addr, flags);
|
|
}
|
|
|
|
static const u8& read8(u32 addr);
|
|
static void write8(u32 addr, u8 value);
|
|
static const be_t<u16>& read16(u32 addr);
|
|
static void write16(u32 addr, be_t<u16> value);
|
|
static const be_t<u32>& read32(u32 addr);
|
|
static void write32(u32 addr, be_t<u32> value);
|
|
static const be_t<u64>& read64(u32 addr);
|
|
static void write64(u32 addr, be_t<u64> value);
|
|
|
|
template<typename... Args>
|
|
static void error(const const_str& fmt, Args&&... args)
|
|
{
|
|
IPC.error(fmt, std::forward<Args>(args)...);
|
|
}
|
|
|
|
static int get_port();
|
|
static pine::EmuStatus get_status();
|
|
static const std::string& get_title();
|
|
static const std::string& get_title_ID();
|
|
static const std::string& get_executable_hash();
|
|
static const std::string& get_app_version();
|
|
static std::string get_version_and_branch();
|
|
|
|
public:
|
|
static auto constexpr thread_name = "IPC Server"sv;
|
|
IPC_impl& operator=(thread_state);
|
|
};
|
|
|
|
class IPC_server_manager
|
|
{
|
|
using IPC_server = named_thread<pine::pine_server<IPC_socket::IPC_impl>>;
|
|
|
|
std::unique_ptr<IPC_server> m_ipc_server;
|
|
int m_old_port = 0;
|
|
|
|
public:
|
|
explicit IPC_server_manager(bool enabled);
|
|
void set_server_enabled(bool enabled);
|
|
};
|
|
}
|