Программа attributer
h2>8.2.3. Динамическая библиотека пользователя
Динамическая библиотека пользователя, путь к которой задается в директиве Module, должна экспортировать следующую структуру, содержащую указатели на функции. typedef struct ATTRGEN_LIB { FUNC_Attrgen_OpenSession OpenSession; FUNC_Attrgen_CloseSession CloseSession; FUNC_Attrgen_GetGroupAttr GetGroupAttr; FUNC_Attrgen_GetIndexAttr GetIndexAttr; FUNC_Attrgen_GetArchiveAttr GetArchiveAttr; } ATTRGEN_LIB; Структура описана в заголовочном файле aglib.h. Пример реализации функций для группировки по хостам приведен в файле aghost.cpp.
Функции структуры ATTRGEN_LIB
int (*FUNC_Attrgen_OpenSession)(GA_SESSION *obj, const char* cmdline)Вызывается программой attributer один раз на каждую секцию AttrProvider в самом начале работы для того, чтобы дать возможность инициализировать данные, которые нужно передавать между вызовами функций, получающих атрибуты. В первом аргументе передается указатель, который следует установить на указанные данные: typedef void* GA_SESSION; Если таких данных нет, первый аргумент можно игнорировать. Во втором аргументе передается значение директивы Config. Функция должна возвращать AGOK в случае успеха. Если будет возвращено другое значение, текущая секция AttrProvider не будет использована.
int (*FUNC_Attrgen_CloseSession)(GA_SESSION obj)Вызывается программой attributer один раз на каждую секцию AttrProvider в самом конце работы для того, чтобы дать возможность освободить ресурсы, занятые объектом GA_SESSION.
int (*FUNC_Attrgen_GetGroupAttr)(GA_SESSION obj, const char* url, const char* attrname, ui32* attrvalue)Вызывается один или несколько раз для каждого документа, имеющегося в существующем индексе, (второй аргумент - адрес документа) и для каждого атрибута из директивы Groups (третий аргумент - имя атрибута). Должна передать в последнем аргументе числовое значение атрибута.
Функция должна возвратить одно из следующих значений.
AGCONTINUE - в последнем аргументе передано числовое значение атрибута и для данного документа и данного имени атрибута существуют еще значения. |
AGOK - в последнем аргументе передано числовое значение атрибута и других значений больше нет |
AGFALSE - данный документ не имеет атрибутов с данным именем. |
AGERROR - случилась ошибка. |
int (*FUNC_Attrgen_GetIndexAttr)( GA_SESSION obj, const char* url, const char* attrname, char** attrvalue)Никогда не вызывается в текущей версии программы attributer.
int (*FUNC_Attrgen_GetArchiveAttr)(GA_SESSION obj, const char* url, const char* attrname, char** attrvalue)Никогда не вызывается в текущей версии программы attributer.
Техническое замечание. С точки зрения эффективности реализации желательно, чтобы диапазон значений группировочных атрибутов был как можно более "компактен" и его нижняя граница была недалека от нулевого значения. Максимальное число группировочных атрибутов равно 20. Максимальное число уровней в иерархии данного атрибута равно 10. Максимальное число значений данного атрибута, которое может иметь документ, равно 20 (без учета верхних уровней возможной иерархии).
Copyright © 1997 ? 2004 «Яндекс»
Назад | Содержание | |
Документация для разработчиков | Уровень выше |
|
|
Copyright © 1997?2004 «Яндекс» | Обратная связь |