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

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

so_4::rt::comm::channels_impl::raw_srv_channel_t so_4::rt::comm::channels_impl::sop_srv_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.


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

 srv_channel_t (agent_t &comm_agent, server_channel_t *phys_channel)
so_4::ret_code_t create ()
 Создать канал.
void close ()
 Закрытие канала и всех подключений.
bool do_io ()
 Осуществить операции ввода/вывода.
bool send_to_client (const std::string &client, const comm_buf_t &data)
 ожидающих отправки данных указанного клиента.
void close_channel (const so_4::rt::comm_channel_t &channel)
 Закрытие указанного канала.
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)
 Разблокировать указанный канал.

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

bool check_for_new_connection ()
 Проверка доступности новых подключений.
bool accept_new_connection ()
 Обработать новое подключение.
void make_new_client_name (std::string &client_name)
 Формирование имени нового клиента.
bool check_for_data ()
 Проверить наличие новых входящих данных.
bool send_awaiting ()
 для всех подключенных клиентов.
virtual void send_msg_client_disconnected (const std::string &client_name)=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
 Обработать подключение нового клиента.

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

agent_tm_comm_agent
 является данный объекта.
auto_ptr_3::obj_ptr_t< server_channel_tm_phys_channel_ptr
 Серверный канал.
client_map_t m_clients
 Карта подключенных в данный момент клиентов.
threshold_t m_in_threshold
 Порог входного потока для новых каналов.
threshold_t m_out_threshold
 Порог выходного потока для новых каналов.


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

so_4::rt::comm::channels_impl::srv_channel_t::srv_channel_t agent_t comm_agent,
server_channel_t phys_channel
 

Аргументы:
comm_agent  Агент-коммуникатор, который обслуживает данный серверный сокет.
phys_channel  Физический серверный коммуникационный канал. Указатель на динамически созданный объект, который будет уничтожен посредством delete.


Методы

bool so_4::rt::comm::channels_impl::srv_channel_t::accept_new_connection  )  [protected]
 

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

Создается новый объект io_channel_t и информация о новом клиенте помещается в m_clients.

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

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

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

Если в каком-либо из подключений есть входящие данные, то они считываются.

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

bool so_4::rt::comm::channels_impl::srv_channel_t::check_for_new_connection  )  [protected]
 

Проверка доступности новых подключений.

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

void so_4::rt::comm::channels_impl::srv_channel_t::close_channel const so_4::rt::comm_channel_t &  channel  ) 
 

Закрытие указанного канала.

Аргументы:
channel  Закрываемый канал.

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

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

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

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

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

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

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

virtual client_connection_t* so_4::rt::comm::channels_impl::srv_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_srv_channel_t и so_4::rt::comm::channels_impl::sop_srv_channel_t.

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

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

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

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

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

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

bool so_4::rt::comm::channels_impl::srv_channel_t::send_to_client const std::string &  client,
const comm_buf_t data
 

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


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