aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/client_port.h
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2016-06-14 18:03:30 -0500
committerSubv <subv2112@gmail.com>2016-11-30 23:02:05 -0500
commit073653e858abf377fd1ebbdb071809c8830ce99d (patch)
treea29e1c1e50d53162ed89cd90e8c069525150392f /src/core/hle/kernel/client_port.h
parent68c00ee771791e5975912c4e0d4be0fb5ab6b8fa (diff)
Kernel/IPC: Use Ports and Sessions as the fundamental building block of Inter Process Communication.
All handles obtained via srv::GetServiceHandle or svcConnectToPort are references to ClientSessions. Service modules will wait on the counterpart of those ClientSessions (Called ServerSessions) using svcReplyAndReceive or svcWaitSynchronization[1|N], and will be awoken when a SyncRequest is performed. HLE Interfaces are now ClientPorts which override the HandleSyncRequest virtual member function to perform command handling immediately.
Diffstat (limited to 'src/core/hle/kernel/client_port.h')
-rw-r--r--src/core/hle/kernel/client_port.h23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/core/hle/kernel/client_port.h b/src/core/hle/kernel/client_port.h
index d28147718..eb0882870 100644
--- a/src/core/hle/kernel/client_port.h
+++ b/src/core/hle/kernel/client_port.h
@@ -11,16 +11,27 @@
namespace Kernel {
class ServerPort;
+class ServerSession;
class ClientPort : public Object {
public:
friend class ServerPort;
- std::string GetTypeName() const override {
- return "ClientPort";
- }
- std::string GetName() const override {
- return name;
- }
+
+ /**
+ * 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
+ */
+ virtual void AddWaitingSession(SharedPtr<ServerSession> server_session);
+
+ /**
+ * 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; }
+
+ std::string GetTypeName() const override { return "ClientPort"; }
+ std::string GetName() const override { return name; }
static const HandleType HANDLE_TYPE = HandleType::ClientPort;
HandleType GetHandleType() const override {