Server.pl

Файл Server.pl содержит главный каркас сервера и функцию, требуемую для связи с DSA гнезд. Запустить Server.pl можно, используя версию 5.8 или новее интерпретатора Perl. Потребуется также Java 1.7 или новее. Сценарий Server.pl уже готов для работы при поставке. Никакая дополнительная настройка не требуется. Однако этот сценарий можно переписать для лучшего удовлетворения ваших потребностей. Для настройки образца сервера гнезд измените модуль UserDataInterface.pm.

Для связи по сети с DSA Server.pl использует модуль Net::Server. Net::Server - это бесплатно доступный модуль Perl, содержащий основные функции для построения сервера, который связывается с другими прикладными программами при помощи протоколов Интернета. Конкретно, для Server.pl требуются следующие модули:

  • Net::Server::PreFork;
  • Net::Server::Proto::TCP;
  • Switch;
  • Getopt::Long;

Более подробную информацию о Net::Server смотрите на сайте http://seamons.com/net_server.html.

Server.pl содержит относящуюся к Netcool/Impact функцию образца сервера. Для обработки требований от DSA гнезд на возвращение данных от источника данных или добавление к нему новых данных используются вызовы функций, определенных в модуле UserDataInterface.pm.

При инициализации Server.pl привязывается к адресу порта, заданному переменной $portnum. По умолчанию адрес порта - это 22180.

После инициализации Server.pl ожидает входящие сообщения от DSA гнезд на заданном порту. DSA гнезд инициирует каждый обмен сообщениями, отправляя строку hi на порт, где запущен сервер. Когда сервер получает эту строку, он отвечает таким же сообщением hi.

Затем сервер ожидает получения требования от DSA гнезд. Каждое требование начинается с сообщения, содержащего имя операции для выполнения. Имена операций непосредственно соответствуют именам функций GetByFilter, GetByKey, GetByLinks и AddDataItem. Server.pl отвечает на это начальное сообщение требованием дополнительной информации от DSA гнезд на основании параметров, требуемых для выполнения данной операции. Эти параметры соответствуют параметрам, переданным для функций в политике Netcool/Impact.

Например, при посредничестве в обработке требования для операции GetByFilter Server.pl запрашивает у DSA гнезд имя типа данных и строку фильтра. Server.pl назначает содержимое ответов от DSA переменным $typename и $filter.

Когда Server.pl получает параметры, требуемые для конкретной операции, он вызывает соответствующую функцию, определенную в UserDataInterface.pm, и передает данные параметров, полученные от DSA гнезд. UserDataInterface.pm собирает набор результатов по требованию и возвращает их Server.pl, который в свою очередь отправляет результаты обратно для DSA.

Server.pl отправляет результаты обратно для DSA гнезд как наборы пар имя/значение, где каждый набор представляет элемент данных и каждая пара имя/значение представляет поле элемента данных. Формат результатов - это серия сообщений, причем каждое имя и значение отправляется как отдельное сообщение, а пустая строка отправляется для обозначения конца элемента данных.