Класс so_4::rt::comm::impl::sockcln_t

Полный список членов класса

Подробное описание

Реализация поддержки клиентского сокета.

Класс для реализации понятия клиентского сокета и подключения к удаленному серверному сокету.

Объект не защищен mutex-ом, т.к. предполагается, что вся работа будет осуществляться на одной нити.


Открытые типы

enum  use_disconnect_handler_flag_t { use_disconnect_handler, no_use_disconnect_handler }
 Флаг управления обращением к disconnect_handler. Подробнее...

Открытые члены

 sockcln_t (a_sockcln_t &comm_agent, a_sockcln_t::disconnect_handler_t *disconnect_handler)
ret_code_t create (unsigned short port, const char *hostaddr, const char *hostname, std::string &client_name)
void close (int is_disconnect_handler_enabled=use_disconnect_handler)
void check_incoming_data ()
 Проверка наличия входящих данных.
void send_to_client (const std::string &client, const comm_buf_t &data)
 Отсылка данных в канал.
a_sockcln_t::disconnect_handler_tset_disconnect_handler (a_sockcln_t::disconnect_handler_t *handler)
 Установить обработчик разрывов связи.
so_4::rt::comm_channel_t query_channel () const
 Возвращает идентификатор текущего канала.

Закрытые члены

void make_new_client_name (std::string &client_name)
bool check_for_data ()
 Проверить наличие данных в сокете.
void send_msg_client_disconnected (const std::string &client_name)
 Отослать сообщение о том, что клиент отключился.
void send_msg_sop_package (const std::string &client_name, const comm_buf_t &package)
 Отослать сообщение на разбор SOP-пакета.
 sockcln_t (const sockcln_t &)
sockcln_toperator= (const sockcln_t &)

Закрытые данные

a_sockcln_tm_comm_agent
 Агент-клиентский сокет.
so_4::socket::socket_addr_inet_t m_addr
 необходимо осуществлять подключение.
ref_client_connection_t m_ref_connection
 Текущее соединение.
std::string m_cur_client_name
 Имя текущего клиента.
auto_ptr_3::obj_ptr_t< a_sockcln_t::disconnect_handler_tm_disconnect_handler_ptr
 Обработчик разрывов связи.


Перечисления

enum so_4::rt::comm::impl::sockcln_t::use_disconnect_handler_flag_t
 

Флаг управления обращением к disconnect_handler.

Элементы перечислений:
use_disconnect_handler  Использовать disconnect_handler.
no_use_disconnect_handler  Не использовать disconnect_handler.

Может применяться, если метод close вызывается в деструкторе.


Конструктор(ы)

so_4::rt::comm::impl::sockcln_t::sockcln_t a_sockcln_t comm_agent,
a_sockcln_t::disconnect_handler_t disconnect_handler
 

Аргументы:
comm_agent  Агент-коммуникатор, который обслуживает данный клиентский сокет
disconnect_handler  Обработчик разрывов соединения. Установливаемый обработчик должен быть указателем на динамически-созданный объект, который будет уничтожен в деструкторе.


Методы

bool so_4::rt::comm::impl::sockcln_t::check_for_data  )  [private]
 

Проверить наличие данных в сокете.

Если происходит сбой чтения данных, то сокет закрывается.

Возвращает:
true, если данные были прочитаны.

ret_code_t so_4::rt::comm::impl::sockcln_t::create unsigned short  port,
const char *  hostaddr,
const char *  hostname,
std::string &  client_name
 

Аргументы:
client_name  При успешном подключении сюда помещается имя клиента в агенте-коммуникаторе. При каждом новом подключении создается новое имя клиента.

so_4::rt::comm_channel_t so_4::rt::comm::impl::sockcln_t::query_channel  )  const
 

Возвращает идентификатор текущего канала.

Внимание:
Результат не определен, если соединение не установлено.
Начиная с:
v.4.2.3

void so_4::rt::comm::impl::sockcln_t::send_to_client const std::string &  client,
const comm_buf_t data
 

Отсылка данных в канал.

Аргументы:
client  Имя клиента должно совпадать с текущим именем клиента.
data  Отсылаемые данные.

a_sockcln_t::disconnect_handler_t * so_4::rt::comm::impl::sockcln_t::set_disconnect_handler a_sockcln_t::disconnect_handler_t handler  ) 
 

Установить обработчик разрывов связи.

Установливаемый обработчик должен быть указателем на динамически-созданный объект, который будет уничтожен в деструкторе.

Возвращает:
Указатель на предыдущий обработчик.
Начиная с:
v.4.2.3
Аргументы:
handler  Указатель на новый обработчик разрывов связи или 0, если обработка разрывов связи не требуется.


Данные класса

std::string so_4::rt::comm::impl::sockcln_t::m_cur_client_name [private]
 

Имя текущего клиента.

Является пустой строкой, если соединение не установлено.

auto_ptr_3::obj_ptr_t< a_sockcln_t::disconnect_handler_t > so_4::rt::comm::impl::sockcln_t::m_disconnect_handler_ptr [private]
 

Обработчик разрывов связи.

Нулевое значение означает, что разрывы связи подобным образом не котролируются.

Начиная с:
v.4.2.3


Документация по SObjectizer. Последние изменения: Thu Jan 12 10:52:52 2006. Создано системой  doxygen 1.4.6-NO
Hosted by uCoz