|
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
|
|