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

Модули проверки OAuth загружаются динамически из разделяемых библиотек, указанных в параметре oauth_validator_libraries. Они загружаются по требованию в процессе входа в систему. Для нахождения библиотеки применяется обычный путь поиска библиотек. Необходима функция _PG_oauth_validator_module_init, которая показывает, что библиотека на самом деле является модулем проверки OAuth, и устанавливает обработчики проверки. Эта функция должна возвращать указатель на структуру типа 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, остальные — необязательные.