|
|
@ -16,14 +16,6 @@ namespace Kernel { |
|
|
class KSession final : public KAutoObjectWithSlabHeapAndContainer<KSession, KAutoObjectWithList> { |
|
|
class KSession final : public KAutoObjectWithSlabHeapAndContainer<KSession, KAutoObjectWithList> { |
|
|
KERNEL_AUTOOBJECT_TRAITS(KSession, KAutoObject); |
|
|
KERNEL_AUTOOBJECT_TRAITS(KSession, KAutoObject); |
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
enum class State : u8 { |
|
|
|
|
|
Invalid = 0, |
|
|
|
|
|
Normal = 1, |
|
|
|
|
|
ClientClosed = 2, |
|
|
|
|
|
ServerClosed = 3, |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
public: |
|
|
public: |
|
|
explicit KSession(KernelCore& kernel); |
|
|
explicit KSession(KernelCore& kernel); |
|
|
virtual ~KSession() override; |
|
|
virtual ~KSession() override; |
|
|
@ -74,20 +66,28 @@ public: |
|
|
return port; |
|
|
return port; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
enum class State : u8 { |
|
|
|
|
|
Invalid = 0, |
|
|
|
|
|
Normal = 1, |
|
|
|
|
|
ClientClosed = 2, |
|
|
|
|
|
ServerClosed = 3, |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
private: |
|
|
private: |
|
|
void SetState(State state) { |
|
|
void SetState(State state) { |
|
|
atomic_state = static_cast<u8>(state); |
|
|
atomic_state = static_cast<u8>(state); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
State GetState() const { |
|
|
State GetState() const { |
|
|
return static_cast<State>(atomic_state.load()); |
|
|
|
|
|
|
|
|
return static_cast<State>(atomic_state.load(std::memory_order_relaxed)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private: |
|
|
private: |
|
|
KServerSession server; |
|
|
KServerSession server; |
|
|
KClientSession client; |
|
|
KClientSession client; |
|
|
std::atomic<std::underlying_type<State>::type> atomic_state{ |
|
|
|
|
|
static_cast<std::underlying_type<State>::type>(State::Invalid)}; |
|
|
|
|
|
|
|
|
std::atomic<std::underlying_type_t<State>> atomic_state{ |
|
|
|
|
|
static_cast<std::underlying_type_t<State>>(State::Invalid)}; |
|
|
KClientPort* port{}; |
|
|
KClientPort* port{}; |
|
|
KProcess* process{}; |
|
|
KProcess* process{}; |
|
|
bool initialized{}; |
|
|
bool initialized{}; |
|
|
|