Răsfoiți Sursa

Merge pull request #2226 from lioncash/private

kernel/server_port: Make data members private
bunnei 7 ani în urmă
părinte
comite
e7850a7f11

+ 5 - 4
src/core/hle/kernel/client_port.cpp

@@ -33,10 +33,11 @@ ResultVal<SharedPtr<ClientSession>> ClientPort::Connect() {
     // Create a new session pair, let the created sessions inherit the parent port's HLE handler.
     // Create a new session pair, let the created sessions inherit the parent port's HLE handler.
     auto sessions = ServerSession::CreateSessionPair(kernel, server_port->GetName(), this);
     auto sessions = ServerSession::CreateSessionPair(kernel, server_port->GetName(), this);
 
 
-    if (server_port->hle_handler)
-        server_port->hle_handler->ClientConnected(std::get<SharedPtr<ServerSession>>(sessions));
-    else
-        server_port->pending_sessions.push_back(std::get<SharedPtr<ServerSession>>(sessions));
+    if (server_port->HasHLEHandler()) {
+        server_port->GetHLEHandler()->ClientConnected(std::get<SharedPtr<ServerSession>>(sessions));
+    } else {
+        server_port->AppendPendingSession(std::get<SharedPtr<ServerSession>>(sessions));
+    }
 
 
     // Wake the threads waiting on the ServerPort
     // Wake the threads waiting on the ServerPort
     server_port->WakeupAllWaitingThreads();
     server_port->WakeupAllWaitingThreads();

+ 4 - 0
src/core/hle/kernel/server_port.cpp

@@ -26,6 +26,10 @@ ResultVal<SharedPtr<ServerSession>> ServerPort::Accept() {
     return MakeResult(std::move(session));
     return MakeResult(std::move(session));
 }
 }
 
 
+void ServerPort::AppendPendingSession(SharedPtr<ServerSession> pending_session) {
+    pending_sessions.push_back(std::move(pending_session));
+}
+
 bool ServerPort::ShouldWait(Thread* thread) const {
 bool ServerPort::ShouldWait(Thread* thread) const {
     // If there are no pending sessions, we wait until a new one is added.
     // If there are no pending sessions, we wait until a new one is added.
     return pending_sessions.empty();
     return pending_sessions.empty();

+ 26 - 9
src/core/hle/kernel/server_port.h

@@ -22,6 +22,8 @@ class SessionRequestHandler;
 
 
 class ServerPort final : public WaitObject {
 class ServerPort final : public WaitObject {
 public:
 public:
+    using HLEHandler = std::shared_ptr<SessionRequestHandler>;
+
     /**
     /**
      * Creates a pair of ServerPort and an associated ClientPort.
      * Creates a pair of ServerPort and an associated ClientPort.
      *
      *
@@ -51,22 +53,27 @@ public:
      */
      */
     ResultVal<SharedPtr<ServerSession>> Accept();
     ResultVal<SharedPtr<ServerSession>> Accept();
 
 
+    /// Whether or not this server port has an HLE handler available.
+    bool HasHLEHandler() const {
+        return hle_handler != nullptr;
+    }
+
+    /// Gets the HLE handler for this port.
+    HLEHandler GetHLEHandler() const {
+        return hle_handler;
+    }
+
     /**
     /**
      * Sets the HLE handler template for the port. ServerSessions crated by connecting to this port
      * Sets the HLE handler template for the port. ServerSessions crated by connecting to this port
      * will inherit a reference to this handler.
      * will inherit a reference to this handler.
      */
      */
-    void SetHleHandler(std::shared_ptr<SessionRequestHandler> hle_handler_) {
+    void SetHleHandler(HLEHandler hle_handler_) {
         hle_handler = std::move(hle_handler_);
         hle_handler = std::move(hle_handler_);
     }
     }
 
 
-    std::string name; ///< Name of port (optional)
-
-    /// ServerSessions waiting to be accepted by the port
-    std::vector<SharedPtr<ServerSession>> pending_sessions;
-
-    /// This session's HLE request handler template (optional)
-    /// ServerSessions created from this port inherit a reference to this handler.
-    std::shared_ptr<SessionRequestHandler> hle_handler;
+    /// Appends a ServerSession to the collection of ServerSessions
+    /// waiting to be accepted by this port.
+    void AppendPendingSession(SharedPtr<ServerSession> pending_session);
 
 
     bool ShouldWait(Thread* thread) const override;
     bool ShouldWait(Thread* thread) const override;
     void Acquire(Thread* thread) override;
     void Acquire(Thread* thread) override;
@@ -74,6 +81,16 @@ public:
 private:
 private:
     explicit ServerPort(KernelCore& kernel);
     explicit ServerPort(KernelCore& kernel);
     ~ServerPort() override;
     ~ServerPort() override;
+
+    /// ServerSessions waiting to be accepted by the port
+    std::vector<SharedPtr<ServerSession>> pending_sessions;
+
+    /// This session's HLE request handler template (optional)
+    /// ServerSessions created from this port inherit a reference to this handler.
+    HLEHandler hle_handler;
+
+    /// Name of the port (optional)
+    std::string name;
 };
 };
 
 
 } // namespace Kernel
 } // namespace Kernel

+ 1 - 1
src/core/hle/service/sm/sm.h

@@ -67,7 +67,7 @@ public:
         if (port == nullptr) {
         if (port == nullptr) {
             return nullptr;
             return nullptr;
         }
         }
-        return std::static_pointer_cast<T>(port->hle_handler);
+        return std::static_pointer_cast<T>(port->GetHLEHandler());
     }
     }
 
 
     void InvokeControlRequest(Kernel::HLERequestContext& context);
     void InvokeControlRequest(Kernel::HLERequestContext& context);