#pragma once #include "tcp_server.h" #include "../types.h" #include "../json/json-forwards.h" #include #include namespace EQ { namespace Net { typedef websocketpp::server websocket_server; typedef websocketpp::connection websocket_connection; typedef websocket_server::message_ptr websocket_message_ptr; class WebsocketServer; class WebsocketServerConnection { public: WebsocketServerConnection(WebsocketServer *parent, std::shared_ptr connection, std::shared_ptr ws_connection); ~WebsocketServerConnection(); std::string GetID() const; bool IsAuthorized() const; std::string GetAccountName() const; uint32 GetAccountID() const; int GetStatus() const; std::string RemoteIP() const; int RemotePort() const; private: std::shared_ptr GetWebsocketConnection(); std::shared_ptr GetTCPConnection(); void OnMessage(websocketpp::connection_hdl hdl, websocket_message_ptr msg); void SendResponse(const Json::Value &response, double time_elapsed); void SetAuthorized(bool v, const std::string account_name, uint32 account_id, int status); struct Impl; std::unique_ptr _impl; friend class WebsocketServer; }; } }