mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-07-21 08:45:45 +00:00
service: refactor server architecture
Converts services to have their own processes
This commit is contained in:
parent
5175ea2ae1
commit
1c3a93e7c4
140 changed files with 1388 additions and 1138 deletions
|
@ -31,12 +31,8 @@ class ResponseBuilder;
|
|||
|
||||
namespace Service {
|
||||
class ServiceFrameworkBase;
|
||||
}
|
||||
|
||||
enum class ServiceThreadType {
|
||||
Default,
|
||||
CreateNew,
|
||||
};
|
||||
class ServerManager;
|
||||
} // namespace Service
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
|
@ -53,9 +49,6 @@ class KThread;
|
|||
class KReadableEvent;
|
||||
class KSession;
|
||||
class SessionRequestManager;
|
||||
class ServiceThread;
|
||||
|
||||
enum class ThreadWakeupReason;
|
||||
|
||||
/**
|
||||
* Interface implemented by HLE Session handlers.
|
||||
|
@ -64,8 +57,7 @@ enum class ThreadWakeupReason;
|
|||
*/
|
||||
class SessionRequestHandler : public std::enable_shared_from_this<SessionRequestHandler> {
|
||||
public:
|
||||
SessionRequestHandler(KernelCore& kernel_, const char* service_name_,
|
||||
ServiceThreadType thread_type);
|
||||
SessionRequestHandler(KernelCore& kernel_, const char* service_name_);
|
||||
virtual ~SessionRequestHandler();
|
||||
|
||||
/**
|
||||
|
@ -79,17 +71,8 @@ public:
|
|||
virtual Result HandleSyncRequest(Kernel::KServerSession& session,
|
||||
Kernel::HLERequestContext& context) = 0;
|
||||
|
||||
void AcceptSession(KServerPort* server_port);
|
||||
void RegisterSession(KServerSession* server_session,
|
||||
std::shared_ptr<SessionRequestManager> manager);
|
||||
|
||||
ServiceThread& GetServiceThread() const {
|
||||
return service_thread;
|
||||
}
|
||||
|
||||
protected:
|
||||
KernelCore& kernel;
|
||||
ServiceThread& service_thread;
|
||||
};
|
||||
|
||||
using SessionRequestHandlerWeakPtr = std::weak_ptr<SessionRequestHandler>;
|
||||
|
@ -102,7 +85,7 @@ using SessionRequestHandlerPtr = std::shared_ptr<SessionRequestHandler>;
|
|||
*/
|
||||
class SessionRequestManager final {
|
||||
public:
|
||||
explicit SessionRequestManager(KernelCore& kernel);
|
||||
explicit SessionRequestManager(KernelCore& kernel, Service::ServerManager& server_manager);
|
||||
~SessionRequestManager();
|
||||
|
||||
bool IsDomain() const {
|
||||
|
@ -155,15 +138,15 @@ public:
|
|||
session_handler = std::move(handler);
|
||||
}
|
||||
|
||||
ServiceThread& GetServiceThread() const {
|
||||
return session_handler->GetServiceThread();
|
||||
}
|
||||
|
||||
bool HasSessionRequestHandler(const HLERequestContext& context) const;
|
||||
|
||||
Result HandleDomainSyncRequest(KServerSession* server_session, HLERequestContext& context);
|
||||
Result CompleteSyncRequest(KServerSession* server_session, HLERequestContext& context);
|
||||
|
||||
Service::ServerManager& GetServerManager() {
|
||||
return server_manager;
|
||||
}
|
||||
|
||||
private:
|
||||
bool convert_to_domain{};
|
||||
bool is_domain{};
|
||||
|
@ -172,6 +155,7 @@ private:
|
|||
|
||||
private:
|
||||
KernelCore& kernel;
|
||||
Service::ServerManager& server_manager;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue