#ifndef SERVER_CORE_H #define SERVER_CORE_H #include #include #include #include #include #include #include #include #include #include #include #include using high_clock = std::chrono::time_point; struct ClientCache { std::shared_ptr socket{}; CMutBuffer buffer{}; std::array recv_buffer{}; wxString online_time; high_clock last_recv_time{}; }; class CServerCore : public wxEvtHandler { public: CServerCore(); ~CServerCore(); public: bool Init(const wxString& ip, unsigned short port); int Run(); private: void OnServerEvent(wxSocketEvent& event); void th_client_thread(const std::shared_ptr& socket, const wxString& id); private: std::unique_ptr server_{}; wxWindowID server_id_{}; std::unordered_map> client_cache_{}; std::unordered_map client_thread_{}; std::shared_mutex cli_mut_; wxString server_ip_; }; #endif