mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-10-15 16:17:49 +00:00
service: move hle_ipc from kernel
This commit is contained in:
parent
6ac62cfbe1
commit
d7e9461b71
148 changed files with 1668 additions and 1733 deletions
|
@ -20,30 +20,30 @@ class System;
|
|||
}
|
||||
|
||||
namespace Kernel {
|
||||
class HLERequestContext;
|
||||
class KEvent;
|
||||
class KServerPort;
|
||||
class KServerSession;
|
||||
class KSynchronizationObject;
|
||||
class SessionRequestHandler;
|
||||
class SessionRequestManager;
|
||||
} // namespace Kernel
|
||||
|
||||
namespace Service {
|
||||
|
||||
class HLERequestContext;
|
||||
class SessionRequestHandler;
|
||||
class SessionRequestManager;
|
||||
|
||||
class ServerManager {
|
||||
public:
|
||||
explicit ServerManager(Core::System& system);
|
||||
~ServerManager();
|
||||
|
||||
Result RegisterSession(Kernel::KServerSession* session,
|
||||
std::shared_ptr<Kernel::SessionRequestManager> manager);
|
||||
std::shared_ptr<SessionRequestManager> manager);
|
||||
Result RegisterNamedService(const std::string& service_name,
|
||||
std::shared_ptr<Kernel::SessionRequestHandler>&& handler,
|
||||
std::shared_ptr<SessionRequestHandler>&& handler,
|
||||
u32 max_sessions = 64);
|
||||
Result ManageNamedPort(const std::string& service_name,
|
||||
std::shared_ptr<Kernel::SessionRequestHandler>&& handler,
|
||||
u32 max_sessions = 64);
|
||||
std::shared_ptr<SessionRequestHandler>&& handler, u32 max_sessions = 64);
|
||||
Result ManageDeferral(Kernel::KEvent** out_event);
|
||||
|
||||
Result LoopProcess();
|
||||
|
@ -56,10 +56,9 @@ private:
|
|||
|
||||
Result LoopProcessImpl();
|
||||
Result WaitAndProcessImpl();
|
||||
Result OnPortEvent(Kernel::KServerPort* port,
|
||||
std::shared_ptr<Kernel::SessionRequestHandler>&& handler);
|
||||
Result OnPortEvent(Kernel::KServerPort* port, std::shared_ptr<SessionRequestHandler>&& handler);
|
||||
Result OnSessionEvent(Kernel::KServerSession* session,
|
||||
std::shared_ptr<Kernel::SessionRequestManager>&& manager);
|
||||
std::shared_ptr<SessionRequestManager>&& manager);
|
||||
Result OnDeferralEvent(std::list<RequestState>&& deferrals);
|
||||
Result CompleteSyncRequest(RequestState&& state);
|
||||
|
||||
|
@ -69,16 +68,16 @@ private:
|
|||
std::mutex m_list_mutex;
|
||||
|
||||
// Guest state tracking
|
||||
std::map<Kernel::KServerPort*, std::shared_ptr<Kernel::SessionRequestHandler>> m_ports{};
|
||||
std::map<Kernel::KServerSession*, std::shared_ptr<Kernel::SessionRequestManager>> m_sessions{};
|
||||
std::map<Kernel::KServerPort*, std::shared_ptr<SessionRequestHandler>> m_ports{};
|
||||
std::map<Kernel::KServerSession*, std::shared_ptr<SessionRequestManager>> m_sessions{};
|
||||
Kernel::KEvent* m_event{};
|
||||
Kernel::KEvent* m_deferral_event{};
|
||||
|
||||
// Deferral tracking
|
||||
struct RequestState {
|
||||
Kernel::KServerSession* session;
|
||||
std::shared_ptr<Kernel::HLERequestContext> context;
|
||||
std::shared_ptr<Kernel::SessionRequestManager> manager;
|
||||
std::shared_ptr<HLERequestContext> context;
|
||||
std::shared_ptr<SessionRequestManager> manager;
|
||||
};
|
||||
std::list<RequestState> m_deferrals{};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue