diff options
| author | 2019-04-07 17:48:00 -0400 | |
|---|---|---|
| committer | 2019-04-07 17:48:00 -0400 | |
| commit | 52ad5fa0e85572b7d33a59b81228c8f8d5defcf3 (patch) | |
| tree | cfbab68f78379702f9d19689e7906d9cf0186866 | |
| parent | Merge pull request #2362 from lioncash/enum (diff) | |
| parent | kernel/server_session: Return a std::pair from CreateSessionPair() (diff) | |
| download | yuzu-52ad5fa0e85572b7d33a59b81228c8f8d5defcf3.tar.gz yuzu-52ad5fa0e85572b7d33a59b81228c8f8d5defcf3.tar.xz yuzu-52ad5fa0e85572b7d33a59b81228c8f8d5defcf3.zip | |
Merge pull request #2356 from lioncash/pair
kernel/{server_port, server_session}: Return pairs instead of tuples from pair creation functions
| -rw-r--r-- | src/core/hle/ipc_helpers.h | 4 | ||||
| -rw-r--r-- | src/core/hle/kernel/client_port.cpp | 10 | ||||
| -rw-r--r-- | src/core/hle/kernel/server_port.cpp | 7 | ||||
| -rw-r--r-- | src/core/hle/kernel/server_port.h | 7 | ||||
| -rw-r--r-- | src/core/hle/kernel/server_session.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/server_session.h | 3 |
6 files changed, 15 insertions, 18 deletions
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h index 68406eb63..ac0e1d796 100644 --- a/src/core/hle/ipc_helpers.h +++ b/src/core/hle/ipc_helpers.h | |||
| @@ -139,10 +139,8 @@ public: | |||
| 139 | context->AddDomainObject(std::move(iface)); | 139 | context->AddDomainObject(std::move(iface)); |
| 140 | } else { | 140 | } else { |
| 141 | auto& kernel = Core::System::GetInstance().Kernel(); | 141 | auto& kernel = Core::System::GetInstance().Kernel(); |
| 142 | auto sessions = | 142 | auto [server, client] = |
| 143 | Kernel::ServerSession::CreateSessionPair(kernel, iface->GetServiceName()); | 143 | Kernel::ServerSession::CreateSessionPair(kernel, iface->GetServiceName()); |
| 144 | auto server = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions); | ||
| 145 | auto client = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions); | ||
| 146 | iface->ClientConnected(server); | 144 | iface->ClientConnected(server); |
| 147 | context->AddMoveObject(std::move(client)); | 145 | context->AddMoveObject(std::move(client)); |
| 148 | } | 146 | } |
diff --git a/src/core/hle/kernel/client_port.cpp b/src/core/hle/kernel/client_port.cpp index aa432658e..744b1697d 100644 --- a/src/core/hle/kernel/client_port.cpp +++ b/src/core/hle/kernel/client_port.cpp | |||
| @@ -2,8 +2,6 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <tuple> | ||
| 6 | |||
| 7 | #include "core/hle/kernel/client_port.h" | 5 | #include "core/hle/kernel/client_port.h" |
| 8 | #include "core/hle/kernel/client_session.h" | 6 | #include "core/hle/kernel/client_session.h" |
| 9 | #include "core/hle/kernel/errors.h" | 7 | #include "core/hle/kernel/errors.h" |
| @@ -31,18 +29,18 @@ ResultVal<SharedPtr<ClientSession>> ClientPort::Connect() { | |||
| 31 | active_sessions++; | 29 | active_sessions++; |
| 32 | 30 | ||
| 33 | // Create a new session pair, let the created sessions inherit the parent port's HLE handler. | 31 | // Create a new session pair, let the created sessions inherit the parent port's HLE handler. |
| 34 | auto sessions = ServerSession::CreateSessionPair(kernel, server_port->GetName(), this); | 32 | auto [server, client] = ServerSession::CreateSessionPair(kernel, server_port->GetName(), this); |
| 35 | 33 | ||
| 36 | if (server_port->HasHLEHandler()) { | 34 | if (server_port->HasHLEHandler()) { |
| 37 | server_port->GetHLEHandler()->ClientConnected(std::get<SharedPtr<ServerSession>>(sessions)); | 35 | server_port->GetHLEHandler()->ClientConnected(server); |
| 38 | } else { | 36 | } else { |
| 39 | server_port->AppendPendingSession(std::get<SharedPtr<ServerSession>>(sessions)); | 37 | server_port->AppendPendingSession(server); |
| 40 | } | 38 | } |
| 41 | 39 | ||
| 42 | // Wake the threads waiting on the ServerPort | 40 | // Wake the threads waiting on the ServerPort |
| 43 | server_port->WakeupAllWaitingThreads(); | 41 | server_port->WakeupAllWaitingThreads(); |
| 44 | 42 | ||
| 45 | return MakeResult(std::get<SharedPtr<ClientSession>>(sessions)); | 43 | return MakeResult(client); |
| 46 | } | 44 | } |
| 47 | 45 | ||
| 48 | void ClientPort::ConnectionClosed() { | 46 | void ClientPort::ConnectionClosed() { |
diff --git a/src/core/hle/kernel/server_port.cpp b/src/core/hle/kernel/server_port.cpp index 708fdf9e1..02e7c60e6 100644 --- a/src/core/hle/kernel/server_port.cpp +++ b/src/core/hle/kernel/server_port.cpp | |||
| @@ -39,9 +39,8 @@ void ServerPort::Acquire(Thread* thread) { | |||
| 39 | ASSERT_MSG(!ShouldWait(thread), "object unavailable!"); | 39 | ASSERT_MSG(!ShouldWait(thread), "object unavailable!"); |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | std::tuple<SharedPtr<ServerPort>, SharedPtr<ClientPort>> ServerPort::CreatePortPair( | 42 | ServerPort::PortPair ServerPort::CreatePortPair(KernelCore& kernel, u32 max_sessions, |
| 43 | KernelCore& kernel, u32 max_sessions, std::string name) { | 43 | std::string name) { |
| 44 | |||
| 45 | SharedPtr<ServerPort> server_port(new ServerPort(kernel)); | 44 | SharedPtr<ServerPort> server_port(new ServerPort(kernel)); |
| 46 | SharedPtr<ClientPort> client_port(new ClientPort(kernel)); | 45 | SharedPtr<ClientPort> client_port(new ClientPort(kernel)); |
| 47 | 46 | ||
| @@ -51,7 +50,7 @@ std::tuple<SharedPtr<ServerPort>, SharedPtr<ClientPort>> ServerPort::CreatePortP | |||
| 51 | client_port->max_sessions = max_sessions; | 50 | client_port->max_sessions = max_sessions; |
| 52 | client_port->active_sessions = 0; | 51 | client_port->active_sessions = 0; |
| 53 | 52 | ||
| 54 | return std::make_tuple(std::move(server_port), std::move(client_port)); | 53 | return std::make_pair(std::move(server_port), std::move(client_port)); |
| 55 | } | 54 | } |
| 56 | 55 | ||
| 57 | } // namespace Kernel | 56 | } // namespace Kernel |
diff --git a/src/core/hle/kernel/server_port.h b/src/core/hle/kernel/server_port.h index 76293cb8b..fef573b71 100644 --- a/src/core/hle/kernel/server_port.h +++ b/src/core/hle/kernel/server_port.h | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include <string> | 8 | #include <string> |
| 9 | #include <tuple> | 9 | #include <utility> |
| 10 | #include <vector> | 10 | #include <vector> |
| 11 | #include "common/common_types.h" | 11 | #include "common/common_types.h" |
| 12 | #include "core/hle/kernel/object.h" | 12 | #include "core/hle/kernel/object.h" |
| @@ -23,6 +23,7 @@ class SessionRequestHandler; | |||
| 23 | class ServerPort final : public WaitObject { | 23 | class ServerPort final : public WaitObject { |
| 24 | public: | 24 | public: |
| 25 | using HLEHandler = std::shared_ptr<SessionRequestHandler>; | 25 | using HLEHandler = std::shared_ptr<SessionRequestHandler>; |
| 26 | using PortPair = std::pair<SharedPtr<ServerPort>, SharedPtr<ClientPort>>; | ||
| 26 | 27 | ||
| 27 | /** | 28 | /** |
| 28 | * Creates a pair of ServerPort and an associated ClientPort. | 29 | * Creates a pair of ServerPort and an associated ClientPort. |
| @@ -32,8 +33,8 @@ public: | |||
| 32 | * @param name Optional name of the ports | 33 | * @param name Optional name of the ports |
| 33 | * @return The created port tuple | 34 | * @return The created port tuple |
| 34 | */ | 35 | */ |
| 35 | static std::tuple<SharedPtr<ServerPort>, SharedPtr<ClientPort>> CreatePortPair( | 36 | static PortPair CreatePortPair(KernelCore& kernel, u32 max_sessions, |
| 36 | KernelCore& kernel, u32 max_sessions, std::string name = "UnknownPort"); | 37 | std::string name = "UnknownPort"); |
| 37 | 38 | ||
| 38 | std::string GetTypeName() const override { | 39 | std::string GetTypeName() const override { |
| 39 | return "ServerPort"; | 40 | return "ServerPort"; |
diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp index 40cec143e..a6b2cf06a 100644 --- a/src/core/hle/kernel/server_session.cpp +++ b/src/core/hle/kernel/server_session.cpp | |||
| @@ -204,6 +204,6 @@ ServerSession::SessionPair ServerSession::CreateSessionPair(KernelCore& kernel, | |||
| 204 | client_session->parent = parent; | 204 | client_session->parent = parent; |
| 205 | server_session->parent = parent; | 205 | server_session->parent = parent; |
| 206 | 206 | ||
| 207 | return std::make_tuple(std::move(server_session), std::move(client_session)); | 207 | return std::make_pair(std::move(server_session), std::move(client_session)); |
| 208 | } | 208 | } |
| 209 | } // namespace Kernel | 209 | } // namespace Kernel |
diff --git a/src/core/hle/kernel/server_session.h b/src/core/hle/kernel/server_session.h index 3429a326f..09b835ff8 100644 --- a/src/core/hle/kernel/server_session.h +++ b/src/core/hle/kernel/server_session.h | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include <string> | 8 | #include <string> |
| 9 | #include <utility> | ||
| 9 | #include <vector> | 10 | #include <vector> |
| 10 | 11 | ||
| 11 | #include "core/hle/kernel/object.h" | 12 | #include "core/hle/kernel/object.h" |
| @@ -58,7 +59,7 @@ public: | |||
| 58 | return parent.get(); | 59 | return parent.get(); |
| 59 | } | 60 | } |
| 60 | 61 | ||
| 61 | using SessionPair = std::tuple<SharedPtr<ServerSession>, SharedPtr<ClientSession>>; | 62 | using SessionPair = std::pair<SharedPtr<ServerSession>, SharedPtr<ClientSession>>; |
| 62 | 63 | ||
| 63 | /** | 64 | /** |
| 64 | * Creates a pair of ServerSession and an associated ClientSession. | 65 | * Creates a pair of ServerSession and an associated ClientSession. |