Пространство имен so_4::rt::comm::impl


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

Детали реализации.


Классы

struct  channels_times_impl_t
class  channels_filters_t
 каналов и фильтров. Подробнее...
class  channels_times_t
 Ассоциативное хранилище идентификаторов коммуникационных каналов и времени получения последнего пакета из канала. Подробнее...
class  servers_filters_t
 каналов и фильтров. Подробнее...
class  client_connection_t
class  socksrv_t
class  sockcln_t
 Реализация поддержки клиентского сокета. Подробнее...
class  package_reader_t

Определения типов

typedef std::set< so_4::rt::comm_channel_t > channel_set_t
 Тип множества идентификаторов коммуникационных каналов.
typedef std::map< std::string,
ref_client_connection_t,
std::less< std::string > > 
client_map_t

Функции

void handle_package (const comm_channel_t &channel, comm_buf_t &package, const so_4::sop::filter_t *server_filter, const so_4::sop::filter_t &filter, channels_filters_t &filters_map)
 Обрабатываем пакет и отсылает ответ указанному клиенту через указанный агент-коммуникатор.
void make_and_send_package (const so_4::sop::req_info_storage_t &reqs, const channel_set_t &channels)
 Формирование и отправка пакета клиентам.
void initiate_handshake (const comm_channel_t &channel)
 Инициировать операцию handshake для канала.
static void make_error_response (const std::string &error_msg, req_info_storage_t &to)
static ret_code_t fill_msg_field (const send_msg_info_t::field_t &field, so_4::rt::impl::msg_fld_handler_t &fld_handler)
static ret_code_t fill_msg (const send_msg_info_t &req, void *msg_data, so_4::rt::impl::msg_wrapper_t *msg_wrapper)
static ret_code_t create_and_send_msg (const send_msg_info_t &req, const comm_channel_t &channel, const so_4::sop::filter_t *server_filter, const so_4::sop::filter_t &filter)
static void process (const send_msg_info_t *req, req_info_storage_t &responses, const comm_channel_t &channel, const so_4::sop::filter_t *server_filter, const so_4::sop::filter_t &filter)
static void process (const query_agent_state_info_t *req, req_info_storage_t &responses)
static void process (const comm_channel_t &channel, const so_4::sop::filter_info_t *req, req_info_storage_t &responses)
static void process (const comm_channel_t &channel, const so_4::sop::ping_info_t *req, req_info_storage_t &responses)
 Обработка ping-запроса.
static void process (const comm_channel_t &channel, const so_4::sop::handshake_info_t *req)
 Обработка инициирования handshake.
static void process (const comm_channel_t &channel, const so_4::sop::handshake_resp_info_t *req, channels_filters_t &filters, req_info_storage_t &responses)
 Обработка ответа на handshake.
static void process (const comm_channel_t &channel, const so_4::sop::unknown_resp_info_t *req, channels_filters_t &filters, req_info_storage_t &responses)
 Обработка ответа на неизвестную серверу операцию.
static void process_request (const req_info_t *request, req_info_storage_t &responses, const comm_channel_t &channel, const so_4::sop::filter_t *server_filter, const so_4::sop::filter_t &filter, channels_filters_t &filters_map)
static void send_to_client (const comm_channel_t &channel, const comm_buf_t &package)

Переменные

const int c_ok
const int c_invalid_socket_addr
const int c_cannot_create_server_sock
const int c_cannot_create_client_sock
const int c_receive_failed
const int c_send_failed
const int c_cannot_connect_to_srv


Функции

void so_4::rt::comm::impl::handle_package const comm_channel_t &  channel,
comm_buf_t &  package,
const so_4::sop::filter_t server_filter,
const so_4::sop::filter_t filter,
channels_filters_t &  filters_map
 

Обрабатываем пакет и отсылает ответ указанному клиенту через указанный агент-коммуникатор.

v.4.2.7
Добавлен параметр server_filter, который должен обрабатываться следующим образом:
  • если он равен нулю (либо сообщение было получено через клиентский канал, либо для сервера не назначен входящий фильтр), то сообщение из пакета so_4::sop::send_msg_info_t должно проходить только через клиентский фильтр;
  • в противном случае сообщение из пакета so_4::sop::send_msg_info_t должно сначала успешно пройти через данный фильтр, а затем через клиентский фильтр.
Аргументы:
channel  Канал из которого поступил пакет.
package  Содержимое пакета.
server_filter  Фильтр серверного канала, через который был получен пакет.
filter  Фильтр данного канала.
filters_map  Карта фильтров каналов. Передается для возможности завершения операции handshake.

void so_4::rt::comm::impl::initiate_handshake const comm_channel_t &  channel  ) 
 

Инициировать операцию handshake для канала.

Начиная с:
v.4.2.7
Формируется SOP пакет so_4::sop::handshake_info_t и отсылается в указанный канал.

void so_4::rt::comm::impl::make_and_send_package const so_4::sop::req_info_storage_t reqs,
const channel_set_t channels
 

Формирование и отправка пакета клиентам.

Аргументы:
reqs  Запросы, которые нужно поместить в один пакет.
channels  Каналы, в которые нужно переслать получившийся пакет.

static void so_4::rt::comm::impl::process const comm_channel_t &  channel,
const so_4::sop::unknown_resp_info_t req,
channels_filters_t &  filters,
req_info_storage_t responses
[static]
 

Обработка ответа на неизвестную серверу операцию.

Начиная с:
v.4.2.7
Предполагается, что сервер, использующий предыдущие версии SObjectizer-а, отвечает так на запрос handshake.

Если для канала еще установлен отложенный фильтр, то:

  • отложенный фильтр устанавливается в качестве боевого;
  • в канал отсылается SOP-команда на установку фильтра;
  • рассылается сообщение so_4::rt::comm::msg_client_connected.

static void so_4::rt::comm::impl::process const comm_channel_t &  channel,
const so_4::sop::handshake_resp_info_t req,
channels_filters_t &  filters,
req_info_storage_t responses
[static]
 

Обработка ответа на handshake.

Начиная с:
v.4.2.7
Если сервер согласился на компрессию данных, то дается команда агенту-каналу на включение трансформации sop-трафика.

Для канала устанавливается отложенный фильтр в качестве боевого. Рассылается сообщение so_4::rt::comm::msg_client_connected.

static void so_4::rt::comm::impl::process const comm_channel_t &  channel,
const so_4::sop::handshake_info_t req
[static]
 

Обработка инициирования handshake.

Начиная с:
v.4.2.7
В ответ отсылается handshake_resp_info.

static void so_4::rt::comm::impl::process const comm_channel_t &  channel,
const so_4::sop::ping_info_t req,
req_info_storage_t responses
[static]
 

Обработка ping-запроса.

В ответ отсылается ping-ответ.

static void so_4::rt::comm::impl::process const send_msg_info_t *  req,
req_info_storage_t responses,
const comm_channel_t &  channel,
const so_4::sop::filter_t server_filter,
const so_4::sop::filter_t filter
[static]
 

v.4.2.6
Ответ на send_msg отсылаем только, если отсылка сообщения прошла неудачно.


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