diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2022-10-21 00:07:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-21 00:07:30 +0200 |
commit | a6628e8dba0432031a5bc470e5716c831128a357 (patch) | |
tree | 533eef88596325c5f14b3caf5350cb9a09265afa /src/core/hle/kernel/k_server_session.h | |
parent | Merge pull request #9099 from Docteh/undocked (diff) | |
parent | kernel: remove most SessionRequestManager handling from KServerSession (diff) | |
download | yuzu-a6628e8dba0432031a5bc470e5716c831128a357.tar yuzu-a6628e8dba0432031a5bc470e5716c831128a357.tar.gz yuzu-a6628e8dba0432031a5bc470e5716c831128a357.tar.bz2 yuzu-a6628e8dba0432031a5bc470e5716c831128a357.tar.lz yuzu-a6628e8dba0432031a5bc470e5716c831128a357.tar.xz yuzu-a6628e8dba0432031a5bc470e5716c831128a357.tar.zst yuzu-a6628e8dba0432031a5bc470e5716c831128a357.zip |
Diffstat (limited to 'src/core/hle/kernel/k_server_session.h')
-rw-r--r-- | src/core/hle/kernel/k_server_session.h | 41 |
1 files changed, 4 insertions, 37 deletions
diff --git a/src/core/hle/kernel/k_server_session.h b/src/core/hle/kernel/k_server_session.h index 748d52826..32135473b 100644 --- a/src/core/hle/kernel/k_server_session.h +++ b/src/core/hle/kernel/k_server_session.h @@ -12,6 +12,7 @@ #include "core/hle/kernel/hle_ipc.h" #include "core/hle/kernel/k_light_lock.h" +#include "core/hle/kernel/k_session_request.h" #include "core/hle/kernel/k_synchronization_object.h" #include "core/hle/result.h" @@ -57,44 +58,15 @@ public: } bool IsSignaled() const override; - void OnClientClosed(); - void ClientConnected(SessionRequestHandlerPtr handler) { - if (manager) { - manager->SetSessionHandler(std::move(handler)); - } - } - - void ClientDisconnected() { - manager = nullptr; - } - - /// Adds a new domain request handler to the collection of request handlers within - /// this ServerSession instance. - void AppendDomainHandler(SessionRequestHandlerPtr handler); - - /// Retrieves the total number of domain request handlers that have been - /// appended to this ServerSession instance. - std::size_t NumDomainRequestHandlers() const; - - /// Returns true if the session has been converted to a domain, otherwise False - bool IsDomain() const { - return manager && manager->IsDomain(); - } - - /// Converts the session to a domain at the end of the current command - void ConvertToDomain() { - convert_to_domain = true; - } - /// Gets the session request manager, which forwards requests to the underlying service std::shared_ptr<SessionRequestManager>& GetSessionRequestManager() { return manager; } /// TODO: flesh these out to match the real kernel - Result OnRequest(); + Result OnRequest(KSessionRequest* request); Result SendReply(); Result ReceiveRequest(); @@ -108,10 +80,6 @@ private: /// Completes a sync request from the emulated application. Result CompleteSyncRequest(HLERequestContext& context); - /// Handles a SyncRequest to a domain, forwarding the request to the proper object or closing an - /// object handle. - Result HandleDomainSyncRequest(Kernel::HLERequestContext& context); - /// This session's HLE request handlers; if nullptr, this is not an HLE server std::shared_ptr<SessionRequestManager> manager; @@ -122,9 +90,8 @@ private: KSession* parent{}; /// List of threads which are pending a reply. - /// FIXME: KSessionRequest - std::list<KThread*> m_thread_request_list; - KThread* m_current_thread_request{}; + boost::intrusive::list<KSessionRequest> m_request_list; + KSessionRequest* m_current_request; KLightLock m_lock; }; |