SObjectizer
5.1
|
Описание коопераций 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 имя конфигурационного файла должно быть задано обязательно.
–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_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-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_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 (как серверного, так и клиетского каналов) задаются с помощью тега {handshaking_params} следующего вида:
{handshaking_params [{compression}] }
Если тег {compression}
задан, то канал будет пытаться использовать zip-ование трафика (но только при условии, что удаленная сторона так же использует zip-ование).
Документация по SObjectizer v.5.1 'Джимара'. Последние изменения: Ср 15 Май 2013 12:56:21. Создано системой 1.8.3.1 |