2#ifndef DVD_SESSION_TPL_H_
3#define DVD_SESSION_TPL_H_
7#include <boost/asio/strand.hpp>
45 subscriber->sendPacket( p );
56 public std::enable_shared_from_this<tcp_session_tpl>
73 virtual void sendFile(
const string& fileName );
82 size_t bytes_transferred );
84 size_t bytes_transferred );
88 virtual void handle_write(
const boost::system::error_code& ec );
121 std::unique_ptr<boost::asio::io_context::strand>
_strand;
132 const boost::asio::ip::udp::endpoint& broadcast_endpoint );
void sendPacket(const WorldPacket &p)
void leave(const subscriber_ptr &sub)
void join(const subscriber_ptr &sub)
eastl::set< subscriber_ptr > subscribers_
virtual ~subscriber()=default
virtual void sendPacket(const WorldPacket &p)=0
eastl::deque< WorldPacket > _outputQueue
deadline_timer _inputDeadline
eastl::deque< string > _outputFileQueue
virtual void HandlePingOpCode(WorldPacket &p)
virtual void HandleEntityUpdateOpCode(WorldPacket &p)
boost::asio::streambuf _inputBuffer
virtual void sendFile(const string &fileName)
virtual void handlePacket(WorldPacket &p)
virtual void await_output()
virtual void HandleDisconnectOpCode(WorldPacket &p)
virtual void handle_write_file(const boost::system::error_code &ec)
virtual void handle_read_body(const boost::system::error_code &ec, size_t bytes_transferred)
std::unique_ptr< boost::asio::io_context::strand > _strand
deadline_timer _outputDeadline
deadline_timer _nonEmptyOutputQueue
virtual void handle_read_packet(const boost::system::error_code &ec, size_t bytes_transferred)
virtual void HandleHeartBeatOpCode(WorldPacket &p)
void sendPacket(const WorldPacket &p) override
virtual bool stopped() const
virtual void handle_write(const boost::system::error_code &ec)
tcp_socket & getSocket() noexcept
virtual void start_read()
virtual void start_write()
virtual void check_deadline(deadline_timer *deadline)
void sendPacket(const WorldPacket &p) override
udp_socket & getSocket() noexcept
Handle console commands that start with a forward slash.
boost::asio::basic_stream_socket< boost::asio::ip::tcp, boost::asio::io_context::executor_type > tcp_socket
std::shared_ptr< tcp_session_tpl > tcp_session_ptr
void UpdateEntities(WorldPacket &p)
boost::asio::basic_datagram_socket< boost::asio::ip::udp, boost::asio::io_context::executor_type > udp_socket
boost::asio::basic_deadline_timer< boost::posix_time::ptime, boost::asio::time_traits< boost::posix_time::ptime >, boost::asio::io_context::executor_type > deadline_timer
std::shared_ptr< subscriber > subscriber_ptr