#include <Session.h>
Public Member Functions | |
Session (asio::io_service &io_service, boost::function< void(boost::shared_ptr< Session >)> ef) | |
void | connect (asio::ip::tcp::resolver::iterator &iterator) |
asio::ip::tcp::socket & | getSocket () |
std::string | getRemoteAddress () |
unsigned short | getRemotePort () |
void | push (int size, char *data) |
bool | pop (int &size, char **data) |
void | asyncReadHeader () |
void | asyncWrite (int size, const char *data) |
bool | isConnected () |
void | disconnect () |
Private Member Functions | |
void | _signal () |
void | asyncReadHeaderHandler (const asio::error_code &error, std::size_t bytes_transferred) |
void | asyncReadHandler (const asio::error_code &error, std::size_t bytes_transferred) |
void | asyncWriteHeaderHandler (const asio::error_code &ec) |
void | asyncWriteHandler (const asio::error_code &ec) |
Private Attributes | |
asio::ip::tcp::socket | socket |
abicollab::mutex | queue_protector |
std::deque< std::pair< int, char * > > | incoming |
std::deque< std::pair< int, char * > > | outgoing |
int | packet_size |
char * | packet_data |
int | packet_size_write |
char * | packet_data_write |
boost::function< void(boost::shared_ptr < Session >)> | m_ef |
Session::Session | ( | asio::io_service & | io_service, | |
boost::function< void(boost::shared_ptr< Session >)> | ef | |||
) | [inline] |
void Session::_signal | ( | ) | [inline, private] |
References m_ef, and UT_DEBUGMSG.
void Session::asyncReadHandler | ( | const asio::error_code & | error, | |
std::size_t | bytes_transferred | |||
) | [inline, private] |
References asyncReadHeader(), disconnect(), packet_data, packet_size, push(), UT_ASSERT_HARMLESS, UT_DEBUGMSG, and UT_SHOULD_NOT_HAPPEN.
Referenced by asyncReadHeaderHandler().
void Session::asyncReadHeader | ( | ) | [inline] |
References asyncReadHeaderHandler(), abicollab::service::error(), packet_data, packet_size, socket, and UT_DEBUGMSG.
Referenced by asyncReadHandler().
void Session::asyncReadHeaderHandler | ( | const asio::error_code & | error, | |
std::size_t | bytes_transferred | |||
) | [inline, private] |
References asyncReadHandler(), disconnect(), abicollab::service::error(), MAX_PACKET_DATA_SIZE, packet_data, packet_size, socket, UT_ASSERT_HARMLESS, UT_DEBUGMSG, and UT_SHOULD_NOT_HAPPEN.
Referenced by asyncReadHeader().
void Session::asyncWrite | ( | int | size, | |
const char * | data | |||
) | [inline] |
References asyncWriteHeaderHandler(), abicollab::service::error(), outgoing, packet_data_write, packet_size_write, socket, and UT_DEBUGMSG.
void Session::asyncWriteHandler | ( | const asio::error_code & | ec | ) | [inline, private] |
References asyncWriteHeaderHandler(), disconnect(), abicollab::service::error(), FREEP, outgoing, packet_data_write, packet_size_write, socket, and UT_DEBUGMSG.
Referenced by asyncWriteHeaderHandler().
void Session::asyncWriteHeaderHandler | ( | const asio::error_code & | ec | ) | [inline, private] |
References asyncWriteHandler(), disconnect(), abicollab::service::error(), packet_data_write, packet_size_write, socket, and UT_DEBUGMSG.
Referenced by asyncWrite(), and asyncWriteHandler().
void Session::connect | ( | asio::ip::tcp::resolver::iterator & | iterator | ) | [inline] |
References socket.
void Session::disconnect | ( | void | ) | [inline] |
References Synchronizer::signal(), socket, and UT_DEBUGMSG.
Referenced by asyncReadHandler(), asyncReadHeaderHandler(), asyncWriteHandler(), and asyncWriteHeaderHandler().
std::string Session::getRemoteAddress | ( | ) | [inline] |
References socket.
unsigned short Session::getRemotePort | ( | ) | [inline] |
References socket.
asio::ip::tcp::socket& Session::getSocket | ( | ) | [inline] |
References socket.
bool Session::isConnected | ( | ) | [inline] |
References socket.
bool Session::pop | ( | int & | size, | |
char ** | data | |||
) | [inline] |
References incoming, and queue_protector.
void Session::push | ( | int | size, | |
char * | data | |||
) | [inline] |
References incoming, queue_protector, and Synchronizer::signal().
Referenced by asyncReadHandler().
std::deque< std::pair<int, char*> > Session::incoming [private] |
boost::function<void (boost::shared_ptr<Session>)> Session::m_ef [private] |
Referenced by _signal().
std::deque< std::pair<int, char*> > Session::outgoing [private] |
Referenced by asyncWrite(), and asyncWriteHandler().
char* Session::packet_data [private] |
Referenced by asyncReadHandler(), asyncReadHeader(), and asyncReadHeaderHandler().
char* Session::packet_data_write [private] |
Referenced by asyncWrite(), asyncWriteHandler(), and asyncWriteHeaderHandler().
int Session::packet_size [private] |
Referenced by asyncReadHandler(), asyncReadHeader(), and asyncReadHeaderHandler().
int Session::packet_size_write [private] |
Referenced by asyncWrite(), asyncWriteHandler(), and asyncWriteHeaderHandler().
abicollab::mutex Session::queue_protector [private] |
asio::ip::tcp::socket Session::socket [private] |