client_port: Make all data members private

These members don't need to be entirely exposed, we can instead expose
an API to operate on them without directly needing to mutate them

We can also guard against overflow/API misuse this way as well, given
active_sessions is an unsigned value.
This commit is contained in:
Lioncash 2018-08-06 22:09:31 -04:00
parent 826b1394e8
commit da2f00ab7d
3 changed files with 21 additions and 7 deletions

View File

@ -14,8 +14,8 @@
namespace Kernel { namespace Kernel {
ClientPort::ClientPort() {} ClientPort::ClientPort() = default;
ClientPort::~ClientPort() {} ClientPort::~ClientPort() = default;
ResultVal<SharedPtr<ClientSession>> ClientPort::Connect() { ResultVal<SharedPtr<ClientSession>> ClientPort::Connect() {
// Note: Threads do not wait for the server endpoint to call // Note: Threads do not wait for the server endpoint to call
@ -40,4 +40,12 @@ ResultVal<SharedPtr<ClientSession>> ClientPort::Connect() {
return MakeResult(std::get<SharedPtr<ClientSession>>(sessions)); return MakeResult(std::get<SharedPtr<ClientSession>>(sessions));
} }
void ClientPort::ConnectionClosed() {
if (active_sessions == 0) {
return;
}
--active_sessions;
}
} // namespace Kernel } // namespace Kernel

View File

@ -37,14 +37,20 @@ public:
*/ */
ResultVal<SharedPtr<ClientSession>> Connect(); ResultVal<SharedPtr<ClientSession>> Connect();
SharedPtr<ServerPort> server_port; ///< ServerPort associated with this client port. /**
u32 max_sessions; ///< Maximum number of simultaneous sessions the port can have * Signifies that a previously active connection has been closed,
u32 active_sessions; ///< Number of currently open sessions to this port * decreasing the total number of active connections to this port.
std::string name; ///< Name of client port (optional) */
void ConnectionClosed();
private: private:
ClientPort(); ClientPort();
~ClientPort() override; ~ClientPort() override;
SharedPtr<ServerPort> server_port; ///< ServerPort associated with this client port.
u32 max_sessions = 0; ///< Maximum number of simultaneous sessions the port can have
u32 active_sessions = 0; ///< Number of currently open sessions to this port
std::string name; ///< Name of client port (optional)
}; };
} // namespace Kernel } // namespace Kernel

View File

@ -27,7 +27,7 @@ ServerSession::~ServerSession() {
// Decrease the port's connection count. // Decrease the port's connection count.
if (parent->port) if (parent->port)
parent->port->active_sessions--; parent->port->ConnectionClosed();
// TODO(Subv): Wake up all the ClientSession's waiting threads and set // TODO(Subv): Wake up all the ClientSession's waiting threads and set
// the SendSyncRequest result to 0xC920181A. // the SendSyncRequest result to 0xC920181A.