diff options
author | Subv <subv2112@gmail.com> | 2016-06-18 00:09:43 +0200 |
---|---|---|
committer | Subv <subv2112@gmail.com> | 2016-12-01 05:03:59 +0100 |
commit | c19afd21188e91b9dd2780cf5cb9872a17ad113d (patch) | |
tree | 5404cd7850f049d474dbcc3cc4ee80874b0c7627 /src/core/hle/kernel/client_port.h | |
parent | fixup! Kernel/IPC: Use Ports and Sessions as the fundamental building block of Inter Process Communication. (diff) | |
download | yuzu-c19afd21188e91b9dd2780cf5cb9872a17ad113d.tar yuzu-c19afd21188e91b9dd2780cf5cb9872a17ad113d.tar.gz yuzu-c19afd21188e91b9dd2780cf5cb9872a17ad113d.tar.bz2 yuzu-c19afd21188e91b9dd2780cf5cb9872a17ad113d.tar.lz yuzu-c19afd21188e91b9dd2780cf5cb9872a17ad113d.tar.xz yuzu-c19afd21188e91b9dd2780cf5cb9872a17ad113d.tar.zst yuzu-c19afd21188e91b9dd2780cf5cb9872a17ad113d.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/kernel/client_port.h | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/core/hle/kernel/client_port.h b/src/core/hle/kernel/client_port.h index eb0882870..ee65606ba 100644 --- a/src/core/hle/kernel/client_port.h +++ b/src/core/hle/kernel/client_port.h @@ -5,19 +5,32 @@ #pragma once #include <string> +#include <memory> #include "common/common_types.h" #include "core/hle/kernel/kernel.h" +namespace Service { +class Interface; +} + namespace Kernel { class ServerPort; class ServerSession; -class ClientPort : public Object { +class ClientPort final : public Object { public: friend class ServerPort; /** + * Creates a serverless ClientPort that represents a bridge between the HLE implementation of a service/port and the emulated application. + * @param max_sessions Maximum number of sessions that this port is able to handle concurrently. + * @param hle_interface Interface object that implements the commands of the service. + * @returns ClientPort for the given HLE interface. + */ + static Kernel::SharedPtr<ClientPort> CreateForHLE(u32 max_sessions, std::unique_ptr<Service::Interface> hle_interface); + + /** * Adds the specified server session to the queue of pending sessions of the associated ServerPort * @param server_session Server session to add to the queue */ @@ -25,10 +38,9 @@ public: /** * Handle a sync request from the emulated application. - * Only HLE services should override this function. * @returns ResultCode from the operation. */ - virtual ResultCode HandleSyncRequest() { return RESULT_SUCCESS; } + ResultCode HandleSyncRequest(); std::string GetTypeName() const override { return "ClientPort"; } std::string GetName() const override { return name; } @@ -38,12 +50,13 @@ public: return HANDLE_TYPE; } - SharedPtr<ServerPort> server_port; ///< ServerPort associated with this client port. - u32 max_sessions; ///< Maximum number of simultaneous sessions the port can have - u32 active_sessions; ///< Number of currently open sessions to this port - std::string name; ///< Name of client port (optional) + SharedPtr<ServerPort> server_port = nullptr; ///< ServerPort associated with this client port. + u32 max_sessions; ///< Maximum number of simultaneous sessions the port can have + u32 active_sessions; ///< Number of currently open sessions to this port + std::string name; ///< Name of client port (optional) + std::unique_ptr<Service::Interface> hle_interface = nullptr; ///< HLE implementation of this port's request handler -protected: +private: ClientPort(); ~ClientPort() override; }; |