49.2. Функции инициализации#

49.2. Функции инициализации

49.2. Функции инициализации #

Модули валидатора OAuth динамически загружаются из общих библиотек, перечисленных в oauth_validator_libraries. Модули загружаются по требованию, когда это необходимо для входа в систему. Для поиска библиотеки используется обычный путь поиска библиотек. Чтобы предоставить обратные вызовы валидатора и указать, что библиотека является модулем валидатора OAuth, должна быть предоставлена функция с именем _PG_oauth_validator_module_init. Возвращаемое значение функции должно быть указателем на структуру типа OAuthValidatorCallbacks, которая содержит магическое число и указатели на функции валидации токенов модуля. Возвращаемый указатель должен иметь срок жизни сервера, что обычно достигается путем определения его как static const переменной в глобальной области видимости.

typedef struct OAuthValidatorCallbacks
{
    uint32        magic;            /* must be set to PG_OAUTH_VALIDATOR_MAGIC */

    ValidatorStartupCB startup_cb;
    ValidatorShutdownCB shutdown_cb;
    ValidatorValidateCB validate_cb;
} OAuthValidatorCallbacks;

typedef const OAuthValidatorCallbacks *(*OAuthValidatorModuleInit) (void);

Только обратный вызов validate_cb является обязательным, остальные являются необязательными.