#pragma once #include #include #include #include #include #include #include "network/message.h" #include "command.h" namespace network { class connection : public std::enable_shared_from_this { private: void message_received(std::shared_ptr &msg); std::queue< std::pair>> delta_queue; command_queue::commands_map client_commands_queue; //std::chrono::high_resolution_clock::time_point last_time; //double accum = -1.0; protected: virtual void disconnect() = 0; virtual void send_data(std::shared_ptr buffer) = 0; void data_received(std::string &buffer); public: void send_message(std::shared_ptr msg); virtual void connected(); std::tuple get_next_delta(); command_queue::commands_map pop_commands(); }; class server { protected: std::vector> clients; public: void push_delta(double dt, command_queue::commands_map commands); command_queue::commands_map pop_commands(); void notify_train(std::string name); }; class client { protected: std::shared_ptr conn; public: std::tuple get_next_delta(); void send_commands(command_queue::commands_map commands); void request_train(std::string name); }; }