summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/server_port.cpp
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2017-06-23 08:57:05 +0200
committerYuri Kunde Schlesner <yuriks@yuriks.net>2017-06-23 20:26:37 +0200
commite192d417ecc24648106cf3d088bd715525f83e5e (patch)
treed4f4be2c9ed527b9f4df3a74e686a2722e5e05be /src/core/hle/kernel/server_port.cpp
parentKernel: Fix SVC wrapper for CreatePort (diff)
downloadyuzu-e192d417ecc24648106cf3d088bd715525f83e5e.tar
yuzu-e192d417ecc24648106cf3d088bd715525f83e5e.tar.gz
yuzu-e192d417ecc24648106cf3d088bd715525f83e5e.tar.bz2
yuzu-e192d417ecc24648106cf3d088bd715525f83e5e.tar.lz
yuzu-e192d417ecc24648106cf3d088bd715525f83e5e.tar.xz
yuzu-e192d417ecc24648106cf3d088bd715525f83e5e.tar.zst
yuzu-e192d417ecc24648106cf3d088bd715525f83e5e.zip
Diffstat (limited to 'src/core/hle/kernel/server_port.cpp')
-rw-r--r--src/core/hle/kernel/server_port.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/core/hle/kernel/server_port.cpp b/src/core/hle/kernel/server_port.cpp
index 4d20c39a1..49a9cdfa3 100644
--- a/src/core/hle/kernel/server_port.cpp
+++ b/src/core/hle/kernel/server_port.cpp
@@ -5,8 +5,10 @@
#include <tuple>
#include "common/assert.h"
#include "core/hle/kernel/client_port.h"
+#include "core/hle/kernel/errors.h"
#include "core/hle/kernel/kernel.h"
#include "core/hle/kernel/server_port.h"
+#include "core/hle/kernel/server_session.h"
#include "core/hle/kernel/thread.h"
namespace Kernel {
@@ -14,6 +16,16 @@ namespace Kernel {
ServerPort::ServerPort() {}
ServerPort::~ServerPort() {}
+ResultVal<SharedPtr<ServerSession>> ServerPort::Accept() {
+ if (pending_sessions.empty()) {
+ return ERR_NO_PENDING_SESSIONS;
+ }
+
+ auto session = std::move(pending_sessions.back());
+ pending_sessions.pop_back();
+ return MakeResult(std::move(session));
+}
+
bool ServerPort::ShouldWait(Thread* thread) const {
// If there are no pending sessions, we wait until a new one is added.
return pending_sessions.size() == 0;