Kernel: Use a Session object to keep track of the status of a Client/Server session pair.

Reduce the associated port's connection count when a ServerSession is destroyed.
This commit is contained in:
Subv 2017-01-04 23:23:17 -05:00
parent 6a72bd62b5
commit ddfabf3133
8 changed files with 86 additions and 32 deletions

View file

@ -0,0 +1,27 @@
// Copyright 2017 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include "core/hle/kernel/kernel.h"
namespace Kernel {
class ClientSession;
class ClientPort;
class ServerSession;
/**
* Parent structure to link the client and server endpoints of a session with their associated
* client port. The client port need not exist, as is the case for portless sessions like the
* FS File and Directory sessions. When one of the endpoints of a session is destroyed, its
* corresponding field in this structure will be set to nullptr.
*/
class Session final {
public:
ClientSession* client = nullptr; ///< The client endpoint of the session.
ServerSession* server = nullptr; ///< The server endpoint of the session.
SharedPtr<ClientPort> port; ///< The port that this session is associated with (optional).
};
}