Apache Версия 2.0 Сервера HTTP
это - первая попытка письма уроков, которые я узнал, пробуя преобразовать
mod_mmap_static
модуль к Apacheу 2.0. Это ни в коем случае не категорическим и вероятно даже не будет правильно до некоторой степени, но это - начало.
они теперь должны иметь тип
apr_status_t
и возвращение ценность того типа. Обычно ценность возвращения будет
APR_SUCCESS
если нет некоторая потребность сигнализировать ошибку в уборке. Знайте, что даже при том, что Вы сигнализируете ошибку не, весь кодекс все же проверяет и действует на ошибку.
они должны теперь быть переименованы, чтобы лучше иметь значение, где они сидят в полном процессе. Таким образом название получает мелочь от
mmap_init
к
mmap_post_config
. аргументы прошли, подверглись радикальной перемене и теперь похожий
apr_pool_t *p
apr_pool_t *plog
apr_pool_t *ptemp
server_rec *s
много типов данных было перемещено в APR . это означает, что некоторые имели изменение названия, типа один показанный выше. Следующее - краткий список некоторых из изменений, которые Вам, вероятно, придется сделать.
pool
становится
apr_pool_t
table
становится
apr_table_t
новая архитектура использует ряд крюков, чтобы предусмотреть запрос ваших функций. Они Вы будете должны добавить к вашему модулю посредством новой функции,
static void register_hooks(void)
. функция является действительно разумно прямой, как только Вы понимаете какой потребности быть сделанными. Каждая функция, которая нуждается в заходе в некоторую стадию в обработке запроса, должна быть зарегистрирована, тренеры не делают. Есть множество фаз, где функции могут быть добавлены, и для каждого Вы можете определить с высокой степенью контроля относительный заказ, что функция будет призвана.
это - кодекс, который был добавлен к
mod_mmap_static
:
static void register_hooks(void) { static const char * const aszPre[]={ "http_core.c",NULL }; ap_hook_post_config(mmap_post_config,NULL,NULL,HOOK_MIDDLE); ap_hook_translate_name(mmap_static_xlat,aszPre,NULL,HOOK_LAST); };
это регистрирует 2 функции, которые нужно назвать, один в
post_config
стадия (фактически каждый модуль будет нуждаться в этом), и один для
translate_name
фаза. отметьте, что, в то время как есть различная функция, называет формат каждого, идентично. Так, что является форматом?
ap_hook_
phase_name
(
function_name
,
predecessors
,
successors
,
position
);
есть 3 определенные положения крюка...
HOOK_FIRST
HOOK_MIDDLE
HOOK_LAST
чтобы определять положение, Вы используете положение и затем изменяете это с предшественниками и преемниками. Каждый из модификаторов может быть списком функций, которые нужно назвать, или прежде, чем функцией управляют (предшественники) или после того, как функция бежала (преемники).
в
mod_mmap_static
случай я не заботился о
post_config
стадия, но
mmap_static_xlat
должен
назвать после того, как основной модуль сделал, это - перевод названия, следовательно использование aszPre, чтобы определить модификатор к положению
HOOK_LAST
.
есть теперь много меньше стадий, чтобы волноваться о, создавая ваше определение модуля. Старый defintion был похож
module MODULE_VAR_EXPORT module_name _module = { STANDARD_MODULE_STUFF, /* initializer */ /* dir config creater */ /* dir merger --- default is to override */ /* server config */ /* merge server config */ /* command handlers */ /* handlers */ /* filename translation */ /* check_user_id */ /* check auth */ /* check access */ /* type_checker */ /* fixups */ /* logger */ /* header parser */ /* child_init */ /* child_exit */ /* post read-request */ };
новая структура намного более проста...
module MODULE_VAR_EXPORT module_name _module = { STANDARD20_MODULE_STUFF, /* create per-directory config structures */ /* merge per-directory config structures */ /* create per-server config structures */ /* merge per-server config structures */ /* command handlers */ /* handlers */ /* register hooks */ };
некоторые из них читают непосредственно поперек, некоторые не делают. Я буду пробовать подвести итог того, что должно быть сделано ниже.
стадии, которые читали непосредственно поперек:
/* dir config creater */
/* create per-directory config structures */
/* server config */
/* create per-server config structures */
/* dir merger */
/* merge per-directory config structures */
/* merge server config */
/* merge per-server config structures */
/* command table */
/* command apr_table_t */
/* handlers */
/* handlers */
остаток от старых функций должен быть зарегистрирован как крюки. Есть следующие стадии крюка, определенные пока...
ap_hook_post_config
_init
рутины зарегистрированы
ap_hook_http_method
ap_hook_open_logs
ap_hook_auth_checker
ap_hook_access_checker
ap_hook_check_user_id
ap_hook_default_port
ap_hook_pre_connection
ap_hook_process_connection
ap_hook_child_init
ap_hook_create_request
ap_hook_fixups
ap_hook_handler
ap_hook_header_parser
post_read_request
для этого
ap_hook_insert_filter
ap_hook_log_transaction
ap_hook_optional_fn_retrieve
ap_hook_post_read_request
ap_hook_quick_handler
ap_hook_translate_name
ap_hook_type_checker