SObjectizer  5.1
so_sysconf_4: Штатные кооперации коммуникационных каналов

Оглавление

Описание коопераций so_sysconf.mbapi.ichannel и so_sysconf.mbapi.ochannel.

Введение

Для реализации распределенных приложений средствами SObjectizer необходимо создавать коммуникационные каналы с другими приложениями. Поскольку so_sysconf делает возможным сборку приложения из готовых DLL как из конструктора, то возможность создавать коммуникационные каналы через so_sysconf так же повышает гибкость конструкции приложения. Отделение деталей организации транспорта сообщений от прикладной логики позволяет прозрачно переконфигурировать приложение, меняя виды транспорта и топологию.

В настоящее время основным видом транспорта для SObjectizer является mbapi_4. В mbapi_4 различаются два типа транспортных каналов: серверные, которые отвечают за обслуживание серверных TCP/IP сокетов, и клиентские, которые отвечают за обслуживание клиентских TCP/IP сокетов и подключение к серверным сокетам. Для работы через so_ sysconf с этими типами коммуникационных каналов в состав so_sysconf включены две DLL:

Приложению, нуждающемуся в поддержке коммуникационных каналов достаточно использовать эти DLL и находящиеся в них coop_factory для создания необходимых коопераций агентов транспортных каналов.

Входящий канал

Созданием агентов для серверных TCP/IP сокетов занимается библиотека so_sysconf.mbapi.ichannel и находящаяся в ней фабрика so_sysconf_4::ichannel::factory. Для ее использования в конфигурационный файл so_sysconf необходимо добавить инструкции:

{load-dll "so_sysconf.mbapi.ichannel"
  {os-name-convert "simple"}
  {mandatory}
}

{make-coop
  {factory "so_sysconf_4::ichannel::factory"}
  {coop "ichannel_coop"}
  {cfg-file "server_channel.cfg"}
}

Тег {make-coop {coop}} задает имя кооперации, которая будет создана фабрикой. Тег {make-coop {cfg-file}} задает имя конфигурационного файла с параметрами нового соединения. Для фабрики so_sysconf_4::ichannel::factory имя конфигурационного файла должно быть задано обязательно.

Внимание
При использовании штатных загрузчиков (см. so_sysconf_4: Штатные загрузчики) имя конфигурационного файла должно задаваться относительно пути к конфигурационным файлам из app_paths. Например, если при старте приложения в аргументе –app-path-etc было задано имя ../etc/alice/20060, то имя ichannel.cfg будет преобразовано в ../etc/alice/20060/ichannel.cfg.

Конфигурационный файл для фабрики so_sysconf_4::ichannel::factory имеет формат:

{so_sysconf_ichannel
  {ip <str> }
  [{active_obj <tag_dispatcher_t>}]
  [{active_group <tag_dispatcher_t>}]
  [{channel_params <tag_channel_params_t>}]
  [{handshaking_params <tag_handshaking_params_t>}]
}

Обязательным является только тег {ip}, он задает IP-адрес серверного сокета. Тег диспетчера имеет следующий формат:

{dispatcher
  [{name <str>}]
}

Тег {name} является необязательным. В случае, когда он не определен, диспетчеру присваивается стандартное имя средствами слоя so_sysconf. Подробно теги {channel_params} и {handshaking_params} описываются ниже.

Ошибка в конфигурационном файле или невозможность создания серверного сокета с указанным IP-адресом приводит к порождению фатальной ошибки.

Заметки
При использовании тега диспетчера без указания его значения, результирующему диспетчеру будет присвоено имя соответствующего so_sysconf-диспетчера.
Одновременно может использоваться только один диспетчер. В противном случае будет выброшено исключение.

Пример конфигурационного файла для создания серверного сокета:

{so_sysconf_ichannel
  {ip ":55055" }
  {active_obj}
}

Исходящий канал

Созданием агентов для клиентских TCP/IP сокетов занимается библиотека so_sysconf.mbapi.ochannel и находящаяся в ней фабрика so_sysconf_4::ochannel::factory. Для ее использования в конфигурационный файл so_sysconf необходимо добавить инструкции:

{load-dll "so_sysconf.mbapi.ochannel"
  {os-name-convert "simple"}
}

{make-coop
  {factory "so_sysconf_4::ochannel::factory"}
  {coop "ochannel_coop"}
  {cfg-file "client_channel.cfg"}
}

Тег {make-coop {coop}} задает имя кооперации, которая будет создана фабрикой. Тег {make-coop {cfg-file}} задает имя конфигурационного файла с параметрами нового соединения. Для фабрики so_sysconf_4::ochannel::factory имя конфигурационного файла должно быть задано обязательно.

Внимание
Имя конфигурационного файла должно задаваться относительно пути к конфигурационным файлам из app_paths. Например, если при старте приложения в аргументе –app-path-etc было задано имя ../etc/alice/20060, то имя ichannel.cfg будет преобразовано в ../etc/alice/20060/ichannel.cfg.

Конфигурационный файл для фабрики so_sysconf_4::ochannel::factory имеет формат:

{so_sysconf_ochannel
  {ip <str> }
  [{not_reconnect}]
  [{on_lost_reconnect_timeout <uint>}]
  [{on_failed_reconnect_timeout <uint>}]
  [{active_obj <tag_dispatcher_t>}]
  [{active_group <tag_dispatcher_t>}]
  [{channel_params <tag_channel_params_t>}]
  [{handshaking_params <tag_handshaking_params_t>}]
}

Обязательным является только тег {ip}, он задает IP-адрес серверного сокета.

При определенном теге {not_reconnect} не будет осуществляться повторное подключение к серверному сокету при потере соединения.

Тег {on_lost_reconnect_timeout} устанавливает время ожидания до следующего подключения при потере соединения с серверным сокетом.

Тег {on_failed_reconnect_timeout} устанавливает время ожидания до следующего подключения в случае, если соединение установить не удалось.

Тег диспетчера имеет следующий формат:

{dispatcher
  [{name <str>}]
}

Тег {name} является необязательным. В случае, когда он не определен, диспетчеру присваивается стандартное имя средствами слоя so_sysconf. Подробно теги {channel_params} и {handshaking_params} описываются ниже.

Ошибка в конфигурационном файле или невозможность создания серверного сокета с указанным IP-адресом приводит к порождению фатальной ошибки.

Заметки
При использовании тега диспетчера без указания его значения, результирующему диспетчеру будет присвоено имя соответствующего so_sysconf-диспетчера.
Одновременно может использоваться только один диспетчер. В противном случае будет выброшено исключение.

Пример конфигурационного файла для создания клиентского сокета:

{so_sysconf_ochannel
  {ip ":55055" }
  {active_obj}
}

Усправление параметрами канала

Параметры канала (как серверного, так и клиетского) задаются с помощью тега {channel_params} следующего вида:

{channel_params
  [{input_stream_params <tag_stream_params>}]
  [{output_stream_params <tag_stream_params>}]
  [{time_checking_period <uint>}]
  [{max_input_block_timeout <uint>}]
  [{max_output_block_timeout <uint>}]
}

Теги {input_stream_params} и {output_stream_params} устанавливают низкоуровневые параметры параметры блочного буфера библиотеки so_5_transport для потоков ввода и вывода (см. Блочный буфер). Формат тегов приводится ниже.

Тег {time_checking_period} устанавливает период повтора проверок блокировки канала (в секундах).

Тег {max_input_block_timeout} устанавливает максимальное время блокировки входящих данных (в секундах).

Тег {max_output_block_timeout} устанавливает максимальное время блокировки исходящих данных (в секундах).

Теги {input_stream_params} и {output_stream_params} имеют следующий формат:

{stream_params
  {block_count <uint>}
  {max_block_count <uint>}
  {single_block_size <uint>}
}

Тег {block_count} устанавливает обычное количество блоков.

Тег {max_block_count} устанавливает порог до которого можно увеличивать количество блоков.

Тег {single_block_size} устанавливает размер единичного блока.

Усправление параметрами процедуры handshake

Параметры процедуры handshake (как серверного, так и клиетского каналов) задаются с помощью тега {handshaking_params} следующего вида:

{handshaking_params
  [{compression}]
}

Если тег {compression} задан, то канал будет пытаться использовать zip-ование трафика (но только при условии, что удаленная сторона так же использует zip-ование).


Документация по SObjectizer v.5.1 'Джимара'. Последние изменения: Ср 15 Май 2013 12:56:21. Создано системой  doxygen1.8.3.1 Intervale SourceForge.net Logo