diff options
Diffstat (limited to 'src/core/hle/service/service.cpp')
| -rw-r--r-- | src/core/hle/service/service.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 418b128b1..9f68898db 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp | |||
| @@ -8,7 +8,6 @@ | |||
| 8 | #include "common/string_util.h" | 8 | #include "common/string_util.h" |
| 9 | 9 | ||
| 10 | #include "core/hle/kernel/server_port.h" | 10 | #include "core/hle/kernel/server_port.h" |
| 11 | #include "core/hle/service/service.h" | ||
| 12 | #include "core/hle/service/ac_u.h" | 11 | #include "core/hle/service/ac_u.h" |
| 13 | #include "core/hle/service/act_a.h" | 12 | #include "core/hle/service/act_a.h" |
| 14 | #include "core/hle/service/act_u.h" | 13 | #include "core/hle/service/act_u.h" |
| @@ -66,11 +65,13 @@ static std::string MakeFunctionString(const char* name, const char* port_name, | |||
| 66 | return function_string; | 65 | return function_string; |
| 67 | } | 66 | } |
| 68 | 67 | ||
| 69 | void SessionRequestHandler::ClientConnected(Kernel::SharedPtr<Kernel::ServerSession> server_session) { | 68 | void SessionRequestHandler::ClientConnected( |
| 69 | Kernel::SharedPtr<Kernel::ServerSession> server_session) { | ||
| 70 | connected_sessions.push_back(server_session); | 70 | connected_sessions.push_back(server_session); |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | void SessionRequestHandler::ClientDisconnected(Kernel::SharedPtr<Kernel::ServerSession> server_session) { | 73 | void SessionRequestHandler::ClientDisconnected( |
| 74 | Kernel::SharedPtr<Kernel::ServerSession> server_session) { | ||
| 74 | boost::range::remove_erase(connected_sessions, server_session); | 75 | boost::range::remove_erase(connected_sessions, server_session); |
| 75 | } | 76 | } |
| 76 | 77 | ||
| @@ -78,7 +79,8 @@ Interface::Interface(u32 max_sessions) : max_sessions(max_sessions) {} | |||
| 78 | Interface::~Interface() = default; | 79 | Interface::~Interface() = default; |
| 79 | 80 | ||
| 80 | void Interface::HandleSyncRequest(Kernel::SharedPtr<Kernel::ServerSession> server_session) { | 81 | void Interface::HandleSyncRequest(Kernel::SharedPtr<Kernel::ServerSession> server_session) { |
| 81 | // TODO(Subv): Make use of the server_session in the HLE service handlers to distinguish which session triggered each command. | 82 | // TODO(Subv): Make use of the server_session in the HLE service handlers to distinguish which |
| 83 | // session triggered each command. | ||
| 82 | 84 | ||
| 83 | u32* cmd_buff = Kernel::GetCommandBuffer(); | 85 | u32* cmd_buff = Kernel::GetCommandBuffer(); |
| 84 | auto itr = m_functions.find(cmd_buff[0]); | 86 | auto itr = m_functions.find(cmd_buff[0]); |
| @@ -113,15 +115,17 @@ void Interface::Register(const FunctionInfo* functions, size_t n) { | |||
| 113 | // Module interface | 115 | // Module interface |
| 114 | 116 | ||
| 115 | static void AddNamedPort(Interface* interface_) { | 117 | static void AddNamedPort(Interface* interface_) { |
| 116 | auto ports = Kernel::ServerPort::CreatePortPair(interface_->GetMaxSessions(), interface_->GetPortName(), | 118 | auto ports = |
| 117 | std::shared_ptr<Interface>(interface_)); | 119 | Kernel::ServerPort::CreatePortPair(interface_->GetMaxSessions(), interface_->GetPortName(), |
| 120 | std::shared_ptr<Interface>(interface_)); | ||
| 118 | auto client_port = std::get<Kernel::SharedPtr<Kernel::ClientPort>>(ports); | 121 | auto client_port = std::get<Kernel::SharedPtr<Kernel::ClientPort>>(ports); |
| 119 | g_kernel_named_ports.emplace(interface_->GetPortName(), std::move(client_port)); | 122 | g_kernel_named_ports.emplace(interface_->GetPortName(), std::move(client_port)); |
| 120 | } | 123 | } |
| 121 | 124 | ||
| 122 | void AddService(Interface* interface_) { | 125 | void AddService(Interface* interface_) { |
| 123 | auto ports = Kernel::ServerPort::CreatePortPair(interface_->GetMaxSessions(), interface_->GetPortName(), | 126 | auto ports = |
| 124 | std::shared_ptr<Interface>(interface_)); | 127 | Kernel::ServerPort::CreatePortPair(interface_->GetMaxSessions(), interface_->GetPortName(), |
| 128 | std::shared_ptr<Interface>(interface_)); | ||
| 125 | auto client_port = std::get<Kernel::SharedPtr<Kernel::ClientPort>>(ports); | 129 | auto client_port = std::get<Kernel::SharedPtr<Kernel::ClientPort>>(ports); |
| 126 | g_srv_services.emplace(interface_->GetPortName(), std::move(client_port)); | 130 | g_srv_services.emplace(interface_->GetPortName(), std::move(client_port)); |
| 127 | } | 131 | } |
| @@ -190,5 +194,4 @@ void Shutdown() { | |||
| 190 | g_kernel_named_ports.clear(); | 194 | g_kernel_named_ports.clear(); |
| 191 | LOG_DEBUG(Service, "shutdown OK"); | 195 | LOG_DEBUG(Service, "shutdown OK"); |
| 192 | } | 196 | } |
| 193 | |||
| 194 | } | 197 | } |