aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/server_port.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2016-06-11 22:46:35 -0400
committerGitHub <noreply@github.com>2016-06-11 22:46:35 -0400
commit78f2b85fe6df35e3501f6dbd81ceea536fcdb8a1 (patch)
tree73078fff8f77a252dcc51ec39e84b5606ad30133 /src/core/hle/kernel/server_port.h
parente74d322724ca28d97e1c68cbbbb796ccdb868a81 (diff)
parent7b445ddff0be3e0210cb217c74cb34a16799ce0d (diff)
Merge pull request #1842 from Subv/ports
Kernel: Added ClientPort and ServerPort classes, along with svcCreatePort.
Diffstat (limited to 'src/core/hle/kernel/server_port.h')
-rw-r--r--src/core/hle/kernel/server_port.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/core/hle/kernel/server_port.h b/src/core/hle/kernel/server_port.h
new file mode 100644
index 000000000..e9c972ce6
--- /dev/null
+++ b/src/core/hle/kernel/server_port.h
@@ -0,0 +1,46 @@
+// Copyright 2016 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <string>
+#include <tuple>
+
+#include "common/common_types.h"
+
+#include "core/hle/kernel/kernel.h"
+
+namespace Kernel {
+
+class ClientPort;
+
+class ServerPort final : public WaitObject {
+public:
+ /**
+ * Creates a pair of ServerPort and an associated ClientPort.
+ * @param max_sessions Maximum number of sessions to the port
+ * @param name Optional name of the ports
+ * @return The created port tuple
+ */
+ static std::tuple<SharedPtr<ServerPort>, SharedPtr<ClientPort>> CreatePortPair(u32 max_sessions, std::string name = "UnknownPort");
+
+ std::string GetTypeName() const override { return "ServerPort"; }
+ std::string GetName() const override { return name; }
+
+ static const HandleType HANDLE_TYPE = HandleType::ServerPort;
+ HandleType GetHandleType() const override { return HANDLE_TYPE; }
+
+ std::string name; ///< Name of port (optional)
+
+ std::vector<SharedPtr<WaitObject>> pending_sessions; ///< ServerSessions waiting to be accepted by the port
+
+ bool ShouldWait() override;
+ void Acquire() override;
+
+private:
+ ServerPort();
+ ~ServerPort() override;
+};
+
+} // namespace