kern: update port/session state semantics

This commit is contained in:
Michael Scire 2021-04-07 14:45:38 -07:00 committed by SciresM
parent c62a7381f8
commit cbdf33260e
7 changed files with 32 additions and 11 deletions

View file

@ -37,14 +37,22 @@ namespace ams::kern {
private:
KServerSession m_server;
KClientSession m_client;
State m_state;
std::atomic<std::underlying_type<State>::type> m_atomic_state;
KClientPort *m_port;
uintptr_t m_name;
KProcess *m_process;
bool m_initialized;
private:
ALWAYS_INLINE void SetState(State state) {
m_atomic_state = static_cast<u8>(state);
}
ALWAYS_INLINE State GetState() const {
return static_cast<State>(m_atomic_state.load());
}
public:
constexpr KSession()
: m_server(), m_client(), m_state(State::Invalid), m_port(), m_name(), m_process(), m_initialized()
: m_server(), m_client(), m_atomic_state(static_cast<std::underlying_type<State>::type>(State::Invalid)), m_port(), m_name(), m_process(), m_initialized()
{
/* ... */
}
@ -62,8 +70,8 @@ namespace ams::kern {
void OnServerClosed();
void OnClientClosed();
bool IsServerClosed() const { return m_state != State::Normal; }
bool IsClientClosed() const { return m_state != State::Normal; }
bool IsServerClosed() const { return this->GetState() != State::Normal; }
bool IsClientClosed() const { return this->GetState() != State::Normal; }
Result OnRequest(KSessionRequest *request) { return m_server.OnRequest(request); }