Сетевой программный интерфейс

Сетевой программный интерфейс (NPI) определяет интерфейс между сетевыми модулями, которые могут быть подключены друг к другу. Клиентский модуль, зарегистрированный как клиент определенного NPI, может быть подключен только к модулям поставщика, зарегистрированным как поставщики того же NPI. Аналогичным образом модуль поставщика, зарегистрированный как поставщик определенного NPI, может быть подключен только к клиентским модулям, зарегистрированным как клиенты с тем же NPI.

Каждый NPI определяет следующие элементы:

  • Идентификатор NPI, который однозначно идентифицирует NPI. Сетевой модуль задает идентификатор NPI для указания конкретного NPI, который он поддерживает, когда сетевой модуль регистрируется в регистраторе сетевых модулей (NMR). Сетевой модуль может поддерживать несколько NPI, регистрируя себя в NMR несколько раз, по одному для каждого поддерживаемого NPI. NMR инициирует присоединение клиентского модуля к модулю поставщика, только если они оба поддерживают один ИП.

  • Необязательная структура характеристик клиента , указывающая характеристики NPI каждого клиентского модуля. Такие характеристики NPI могут включать такие элементы, как версия (или версии) NPI, которую поддерживает клиентский модуль, или семейство адресов или протокол, необходимые для клиентского модуля. Модуль поставщика может использовать сведения, содержащиеся в структуре характеристик клиента клиентского модуля, чтобы определить, будет ли он присоединен к клиентскому модулю. Если NPI не определяет какие-либо характеристики клиента, относящиеся к NPI, то эта структура не требуется.

  • Необязательная структура характеристик поставщика , указывающая характеристики NPI каждого модуля поставщика. Такие характеристики NPI могут включать такие элементы, как версия (или версии) NPI, поддерживаемые модулем поставщика, а также семейства адресов или протоколы, поддерживаемые модулем поставщика. Клиентский модуль может использовать сведения, содержащиеся в структуре характеристик клиента модуля поставщика, чтобы определить, будет ли он присоединен к модулю поставщика. Если NPI не определяет какие-либо характеристики поставщика, относящиеся к NPI, то эта структура не требуется.

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

  • Одна или несколько функций модуля поставщика. После успешного подключения клиентского модуля к модулю поставщика клиентский модуль может получить доступ к функциям модуля поставщика, вызвав функции модуля поставщика.

  • Структура таблицы диспетчеризации клиента , содержащая указатели на каждую из функций обратного вызова клиентского модуля. Если NPI не определяет какие-либо функции обратного вызова клиентского модуля, то эта структура не требуется.

  • Структура таблицы диспетчеризации поставщика , содержащая указатели на каждую из функций модуля поставщика.

Клиентский модуль, поддерживающий определенный NPI, использует элементы, определенные NPI, для реализации клиентской стороны интерфейса. Аналогичным образом модуль поставщика, поддерживающий определенный NPI, использует элементы, определенные NPI, для реализации стороны поставщика интерфейса.

Все элементы, определенные NPI, являются непрозрачными для NMR, за исключением идентификатора NPI. NMR использует идентификатор NPI, чтобы определить, какие клиентские модули должны быть подключены к модулям поставщика.