/* Copyright © 2015 Gluzskiy Alexandr (sss) This file is part of Unknown Download Manager (UDM). UDM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. UDM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with UDM. If not, see . */ #ifndef SERVER_SESSION_H #define SERVER_SESSION_H #include #include #include "config.h" #include "client.h" #include "download_internal.h" class client_msg; class server_msg; class socket_wraper; class server_session { public: server_session(boost::asio::io_service &s, runtime_config_s &config, std::map &clients_, std::map &downloads, boost::asio::ssl::context *c = nullptr); void run(); void send_message(server_msg *msg); socket_wraper* socket(); virtual ~server_session(); protected: private: //net void handle_read(const boost::system::error_code& error, size_t bytes_transferred); void handle_write(const boost::system::error_code& error); void handle_write_no_read(const boost::system::error_code& error); void handle_handshake(const boost::system::error_code& error); bool handle_command(client_msg *msg); char *recv_data_; socket_wraper *socket_; boost::asio::io_service &io_service_; boost::asio::ssl::context *context_; std::string client_auth_token; runtime_config_s &runtime_config; std::map &clients; client *client_; std::map &downloads; //TODO: store client ptr }; #endif // SERVER_SESSION_H