Класс so_4::rt::comm::channels_impl::cln_channel_t

Граф наследования:so_4::rt::comm::channels_impl::cln_channel_t:

so_4::rt::comm::channels_impl::raw_cln_channel_t so_4::rt::comm::channels_impl::sop_cln_channel_t Полный список членов класса

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

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

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

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

v.4.2.4.3
Является абстрактным базовым классом. Метод send_msg_client_disconnected сделан чистым виртуальным методом, т.к. для SOP и для raw соединений требуется отсылка различных сообщений в этом случае.
v.4.2.4.3
Добавлен виртуальный метод new_client_connection(), который должен создавать конкретную реализацию интерфейса client_connection_t.


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

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

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

 cln_channel_t (so_4::rt::agent_t &comm_agent, client_factory_t *client_factory, so_4::rt::comm::a_cln_channel_base_t::disconnect_handler_t *disconnect_handler)
so_4::ret_code_t create ()
 Создание клиентского канала.
void close (int is_disconnect_handler_enabled=use_disconnect_handler)
 Закрыть текущее подключение.
void close (const so_4::rt::comm_channel_t &channel, int is_disconnect_handler_enabled=use_disconnect_handler)
 Закрыть указанный канал.
bool do_io ()
 Осуществить операции ввода/вывода.
bool send_to_client (const comm_channel_t &client, const comm_buf_t &data)
 Отсылка данных в канал.
so_4::rt::comm::a_cln_channel_base_t::disconnect_handler_tset_disconnect_handler (so_4::rt::comm::a_cln_channel_base_t::disconnect_handler_t *handler)
 Установить обработчик разрывов связи.
so_4::rt::comm_channel_t query_channel () const
 Возвращает идентификатор текущего канала.
void set_in_threshold (const threshold_t &value)
 новых каналов.
const threshold_tin_threshold () const
 Получить текущее значения порога входного потока.
void set_out_threshold (const threshold_t &value)
 новых каналов.
const threshold_tout_threshold () const
 Получить текущее значения порога выходного потока.
void unblock_channel (const so_4::rt::comm_channel_t &channel)
 Разблокировать указанный канал.

Защищенные члены

void make_new_client_name (std::string &client_name)
 Создать новое имя клиента.
bool check_for_data ()
 Проверить наличие данных в сокете.
bool send_awaiting ()
 для всех подключенных клиентов.
virtual void send_msg_client_disconnected ()=0
 Отослать сообщение о том, что клиент отключился.
virtual client_connection_tnew_client_connection (const so_4::rt::comm_channel_t &comm_channel, io_channel_t *phys_channel, unsigned int ibuf_max_size, unsigned int awaiting_obuf_max_size, const threshold_t &in_threshold, const threshold_t &out_threshold)=0
 Обработать подключение нового клиента.

Защищенные данные

so_4::rt::agent_tm_comm_agent
 Агент-клиентский сокет.
auto_ptr_3::obj_ptr_t< client_factory_tm_phys_factory
 Физический канал.
ref_client_connection_t m_ref_connection
 Текущее соединение.
so_4::rt::comm_channel_t m_cur_client
 Имя текущего клиента.
auto_ptr_3::obj_ptr_t< so_4::rt::comm::a_cln_channel_base_t::disconnect_handler_tm_disconnect_handler_ptr
 Обработчик разрывов связи.
threshold_t m_in_threshold
 Порог входного потока для новых каналов.
threshold_t m_out_threshold
 Порог выходного потока для новых каналов.


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

enum so_4::rt::comm::channels_impl::cln_channel_t::use_disconnect_handler_flag_t
 

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

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

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


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

so_4::rt::comm::channels_impl::cln_channel_t::cln_channel_t so_4::rt::agent_t comm_agent,
client_factory_t client_factory,
so_4::rt::comm::a_cln_channel_base_t::disconnect_handler_t disconnect_handler
 

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


Методы

bool so_4::rt::comm::channels_impl::cln_channel_t::check_for_data  )  [protected]
 

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

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

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

void so_4::rt::comm::channels_impl::cln_channel_t::close const so_4::rt::comm_channel_t &  channel,
int  is_disconnect_handler_enabled = use_disconnect_handler
 

Закрыть указанный канал.

Закрывает текущий канал, если его идентификатор совпадает с указанным идентификатором.

Если is_diconnect_handler_enabled == no_use_disconnect_handler, то агент не переводится в состояние st_not_connected, у disconnect_handler не вызывается метод on_connection_lost.

void so_4::rt::comm::channels_impl::cln_channel_t::close int  is_disconnect_handler_enabled = use_disconnect_handler  ) 
 

Закрыть текущее подключение.

Если is_diconnect_handler_enabled == no_use_disconnect_handler, то агент не переводится в состояние st_not_connected, у disconnect_handler не вызывается метод on_connection_lost.

bool so_4::rt::comm::channels_impl::cln_channel_t::do_io  ) 
 

Осуществить операции ввода/вывода.

Если есть входящие данные, то они считываются. Если есть исходящие данные, то они отсылаются.

Возвращает:
true, если проводились операции ввода/вывода.

const threshold_t & so_4::rt::comm::channels_impl::cln_channel_t::in_threshold  )  const
 

Получить текущее значения порога входного потока.

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

virtual client_connection_t* so_4::rt::comm::channels_impl::cln_channel_t::new_client_connection const so_4::rt::comm_channel_t &  comm_channel,
io_channel_t phys_channel,
unsigned int  ibuf_max_size,
unsigned int  awaiting_obuf_max_size,
const threshold_t in_threshold,
const threshold_t out_threshold
[protected, pure virtual]
 

Обработать подключение нового клиента.

Начиная с:
v.4.2.4.3
v.4.2.6
Добавлены аргументы in_threshold и out_threshold.
Возвращает:
указатель на динамически созданный объект, который будет уничтожен впоследствии посредством delete.
Аргументы:
comm_channel  Коммуникационный канал SObjectizer-а, который назначен данному подключению.
phys_channel  Физический коммуникационный канал, выделенный подключению. Указатель на динамически созданный объект, который должен быть уничтожен посредством delete.
ibuf_max_size  Максимально допустимый объем буфера прочитанных, но не разобранных данных.
awaiting_obuf_max_size  Максимально допустимый объем буфера ожидающий отправки данных.
in_threshold  Порог для входного потока.
out_threshold  Порог для выходного потока.

Замещается в so_4::rt::comm::channels_impl::raw_cln_channel_t и so_4::rt::comm::channels_impl::sop_cln_channel_t.

const threshold_t & so_4::rt::comm::channels_impl::cln_channel_t::out_threshold  )  const
 

Получить текущее значения порога выходного потока.

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

so_4::rt::comm_channel_t so_4::rt::comm::channels_impl::cln_channel_t::query_channel  )  const
 

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

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

bool so_4::rt::comm::channels_impl::cln_channel_t::send_awaiting  )  [protected]
 

для всех подключенных клиентов.

Возвращает:
true, если производились операции записи.

bool so_4::rt::comm::channels_impl::cln_channel_t::send_to_client const comm_channel_t &  client,
const comm_buf_t data
 

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

Добавляет указанный блок в буфер ожидающих отправки данных указанного клиента.

Возвращает:
true, если необходимо осуществить внеочередную операцию ввода-вывода из-за превышения порога накопления ожидающих отправки данных.
Аргументы:
client  Имя клиента должно совпадать с текущим именем клиента.
data  Отсылаемые данные.

so_4::rt::comm::a_cln_channel_base_t::disconnect_handler_t * so_4::rt::comm::channels_impl::cln_channel_t::set_disconnect_handler so_4::rt::comm::a_cln_channel_base_t::disconnect_handler_t handler  ) 
 

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

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

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

void so_4::rt::comm::channels_impl::cln_channel_t::set_in_threshold const threshold_t value  ) 
 

новых каналов.

Начиная с:
v.4.2.6
Значение порога входного потока для уже существующих каналов не изменяется.

void so_4::rt::comm::channels_impl::cln_channel_t::set_out_threshold const threshold_t value  ) 
 

новых каналов.

Начиная с:
v.4.2.6
Значение порога выходного потока для уже существующих каналов не изменяется.

void so_4::rt::comm::channels_impl::cln_channel_t::unblock_channel const so_4::rt::comm_channel_t &  channel  ) 
 

Разблокировать указанный канал.

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


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

so_4::rt::comm_channel_t so_4::rt::comm::channels_impl::cln_channel_t::m_cur_client [protected]
 

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

Содержит неопределенное значение, если соединение не установлено.

auto_ptr_3::obj_ptr_t< so_4::rt::comm::a_cln_channel_base_t::disconnect_handler_t > so_4::rt::comm::channels_impl::cln_channel_t::m_disconnect_handler_ptr [protected]
 

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

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

threshold_t so_4::rt::comm::channels_impl::cln_channel_t::m_in_threshold [protected]
 

Порог входного потока для новых каналов.

Начиная с:
v.4.2.6
По умолчанию принимает значение threshold_t::infinite() (т.е. порог не ограничен).

threshold_t so_4::rt::comm::channels_impl::cln_channel_t::m_out_threshold [protected]
 

Порог выходного потока для новых каналов.

Начиная с:
v.4.2.6
По умолчанию принимает значение threshold_t::infinite() (т.е. порог не ограничен).


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