96 bool Connect(const Connection::Protocol& protocol, const std::
string& address, const
unsigned short& port) override;
101 void Disconnect() noexcept override;
107 inline Connection::Status Status() const noexcept
override {
108 return m_status.load();
119 std::unique_ptr<Socket::Server> m_socket_server;
120 std::atomic<Connection::Status> m_status;
121 std::thread m_accept_thread;
124 std::unordered_map<std::string, std::shared_ptr<Detail::Session>> m_sessions;
125 std::unique_ptr<Detail::WorkerPool> m_pool;
126 enum class CompletionReason:
unsigned short { Success, NullHandler, Error };
130 CompletionReason reason;
132 std::deque<Completion> m_completions;
133 std::mutex m_completion_mutex;
134 enum class CommandType:
unsigned short { DisconnectClient, DisconnectAll, Stop };
135 struct Command { CommandType type; std::string uuid; };
136 std::deque<Command> m_commands;
137 std::mutex m_command_mutex;
142 void AcceptClients() noexcept;
148 bool CreateWakeup() noexcept;
153 void SignalWakeup() noexcept;
158 void CloseWakeup() noexcept;
163 void AcceptOneClient() noexcept;
169 void ProcessSession(const std::shared_ptr<Detail::Session>& session,
bool readable,
bool writable) noexcept;
172 void PostCompletion(Completion completion) noexcept;
175 void DrainCompletions() noexcept;
178 void PostCommand(Command command) noexcept;
181 void DrainCommands() noexcept;
184 void DisconnectClientOnLoop(const std::
string& uuid) noexcept;
192 virtual PacketPointer ProcessClientPacket(const std::
string& client_uuid, PacketPointer packet) noexcept = 0;
std::function< PacketPointer(Transport::Packet::OpcodeType, Buffer::Consumer, std::shared_ptr< Logger::Log >)> DeserializePacketFunction
Callback that builds a Packet from opcode + payload consumer.
Definition typedefs.hxx:68