Интерфейс сетевого программирования

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

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

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

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

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

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

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

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

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

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

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