#include <asio_listener.hpp>


Public Member Functions | |
| asio_listener () | |
| virtual void | set_listener_handler (ana::listener_handler *listener) |
| Sets the handler for incoming messages. | |
| virtual void | run_listener () |
| Start listening for incoming messages. | |
| virtual | ~asio_listener () |
Protected Member Functions | |
| virtual tcp::socket & | socket ()=0 |
| void | wait_for_incoming_message (size_t ms_to_timeout, ana::net_id id=0) |
Private Member Functions | |
| virtual void | disconnect_listener () |
| virtual void | set_raw_buffer_max_size (size_t size) |
| Sets the size of raw buffer. | |
| virtual void | wait_raw_object (ana::serializer::bistream &bis, size_t size) |
| Block the caller waiting for an incoming message of a certain amount of bytes. | |
| void | listen_one_message () |
| void | disconnect (boost::system::error_code error) |
| void | handle_header (char *header, const boost::system::error_code &) |
| void | handle_body (ana::read_buffer, const boost::system::error_code &) |
| void | handle_partial_body (ana::read_buffer, const boost::system::error_code &, size_t accumulated, size_t last_msg_size) |
| void | handle_timeout (const boost::system::error_code &, ana::net_id) |
| void | handle_raw_buffer (ana::read_buffer, const boost::system::error_code &, size_t) |
Private Attributes | |
| bool | disconnected_ |
| ana::listener_handler * | listener_ |
| char | header_ [ana::HEADER_LENGTH] |
| size_t | raw_mode_buffer_size_ |
| ana::timer * | next_message_timer_ |
Definition at line 43 of file asio_listener.hpp.
| asio_listener::asio_listener | ( | ) |
Definition at line 40 of file asio_listener.cpp.
| asio_listener::~asio_listener | ( | ) | [virtual] |
Definition at line 49 of file asio_listener.cpp.
References next_message_timer_.
| void asio_listener::disconnect | ( | boost::system::error_code | error | ) | [private] |
Definition at line 66 of file asio_listener.cpp.
References disconnect_listener(), disconnected_, ana::listener_handler::handle_disconnect(), and listener_.

| virtual void asio_listener::disconnect_listener | ( | ) | [inline, private, virtual] |
Definition at line 59 of file asio_listener.hpp.
Referenced by disconnect().

| void asio_listener::handle_body | ( | ana::read_buffer | buf, | |
| const boost::system::error_code & | ec | |||
| ) | [private] |
Definition at line 84 of file asio_listener.cpp.
References ana::detail::ana_component::disconnect(), ana::listener_handler::handle_receive(), listen_one_message(), listener_, and ana::detail::ana_component::stats_collector().

| void asio_listener::handle_header | ( | char * | header, | |
| const boost::system::error_code & | ec | |||
| ) | [private] |
Definition at line 103 of file asio_listener.cpp.
References ana::buffer(), ana::detail::ana_component::disconnect(), error(), handle_partial_body(), ana::listener_handler::handle_receive(), ana::HEADER_LENGTH, listener_, ana::network_to_host_long(), socket(), and ana::detail::ana_component::stats_collector().
Referenced by listen_one_message().


| void asio_listener::handle_partial_body | ( | ana::read_buffer | buffer, | |
| const boost::system::error_code & | ec, | |||
| size_t | accumulated, | |||
| size_t | last_msg_size | |||
| ) | [private] |
Definition at line 148 of file asio_listener.cpp.
References ana::buffer(), ana::detail::ana_component::disconnect(), error(), ana::listener_handler::handle_receive(), listen_one_message(), listener_, next_message_timer_, socket(), and ana::detail::ana_component::stats_collector().
Referenced by handle_header().


| void asio_listener::handle_raw_buffer | ( | ana::read_buffer | buf, | |
| const boost::system::error_code & | ec, | |||
| size_t | read_size | |||
| ) | [private] |
Definition at line 199 of file asio_listener.cpp.
References ana::detail::ana_component::disconnect(), ana::listener_handler::handle_receive(), listen_one_message(), listener_, next_message_timer_, and ana::detail::ana_component::stats_collector().
Referenced by listen_one_message().


| void asio_listener::handle_timeout | ( | const boost::system::error_code & | error_code, | |
| ana::net_id | id | |||
| ) | [private] |
Definition at line 190 of file asio_listener.cpp.
References ana::listener_handler::handle_receive(), listener_, next_message_timer_, ana::operation_aborted, and ana::timeout_error.
Referenced by wait_for_incoming_message().


| void asio_listener::listen_one_message | ( | ) | [private] |
Definition at line 251 of file asio_listener.cpp.
References ana::buffer(), ana::detail::ana_component::disconnect(), error(), ana::generic_error, handle_header(), handle_raw_buffer(), header_, ana::HEADER_LENGTH, ana::detail::ana_component::header_mode(), raw_mode_buffer_size_, and socket().
Referenced by handle_body(), handle_partial_body(), handle_raw_buffer(), and run_listener().


| void asio_listener::run_listener | ( | ) | [virtual] |
Start listening for incoming messages.
Implements ana::detail::listener.
Definition at line 246 of file asio_listener.cpp.
References listen_one_message().
Referenced by asio_client::handle_connect(), and asio_client::handle_proxy_connection().


| void asio_listener::set_listener_handler | ( | ana::listener_handler * | listener | ) | [virtual] |
Sets the handler for incoming messages.
| listener | : Pointer to the listener_handler object that will handle following incoming message events. |
Implements ana::detail::listener.
Definition at line 241 of file asio_listener.cpp.
References listener_.
| void asio_listener::set_raw_buffer_max_size | ( | size_t | size | ) | [private, virtual] |
Sets the size of raw buffer.
| size | : The requested size for raw buffers. |
Implements ana::detail::listener.
Definition at line 76 of file asio_listener.cpp.
References raw_mode_buffer_size_.
| virtual tcp::socket& asio_listener::socket | ( | ) | [protected, pure virtual] |
Referenced by handle_header(), handle_partial_body(), listen_one_message(), wait_for_incoming_message(), and wait_raw_object().

| void asio_listener::wait_for_incoming_message | ( | size_t | ms_to_timeout, | |
| ana::net_id | id = 0 | |||
| ) | [protected] |
Definition at line 54 of file asio_listener.cpp.
References error(), handle_timeout(), next_message_timer_, socket(), and ana::timer::wait().
Referenced by asio_server::asio_client_proxy::expecting_message(), and asio_client::expecting_message().


| void asio_listener::wait_raw_object | ( | ana::serializer::bistream & | bis, | |
| size_t | size | |||
| ) | [private, virtual] |
Block the caller waiting for an incoming message of a certain amount of bytes.
| bis | : Binary stream where the data will be stored. | |
| size | : The amount of bytes trying to be read. |
Implements ana::detail::listener.
Definition at line 224 of file asio_listener.cpp.
References ana::buffer(), socket(), and ana::serializer::bistream::str().

bool asio_listener::disconnected_ [private] |
Definition at line 83 of file asio_listener.hpp.
Referenced by disconnect().
char asio_listener::header_[ana::HEADER_LENGTH] [private] |
Definition at line 85 of file asio_listener.hpp.
Referenced by listen_one_message().
ana::listener_handler* asio_listener::listener_ [private] |
Definition at line 84 of file asio_listener.hpp.
Referenced by disconnect(), handle_body(), handle_header(), handle_partial_body(), handle_raw_buffer(), handle_timeout(), and set_listener_handler().
ana::timer* asio_listener::next_message_timer_ [private] |
Definition at line 88 of file asio_listener.hpp.
Referenced by handle_partial_body(), handle_raw_buffer(), handle_timeout(), wait_for_incoming_message(), and ~asio_listener().
size_t asio_listener::raw_mode_buffer_size_ [private] |
Definition at line 86 of file asio_listener.hpp.
Referenced by listen_one_message(), and set_raw_buffer_max_size().
| Generated by doxygen 1.7.1 on Thu May 24 2012 01:12:59 for The Battle for Wesnoth | Gna! | Forum | Wiki | CIA | devdocs |