Mod_dav: Блокировки
Последняя группа, которую мы рассмотрим, отвечает за функционирование механизма блокировок. Она не является обязательной, но необходима для реализации методов WebDAV: Lock и Unlock.
get_supportedlock
Возвращает значение свойства supportedlock для ресурса.
parse_locktoken
Парсит поступивший токен блокировки. Тут мы создаем и возвращаем структуру dav_locktoken.
format_locktoken
Преобразуем структуру dav_locktoken в строку URI.
compare_locktoken
Сравниваем два токена блокировок.
open_lockdb
Открывает и подготавливает хранилище блокировок. Dav-провайдер может воспользоваться значением директивы DAVLockDB для размещения своего хранилища (значение можно получить с помощью функции dav_get_lockdb_path()).
close_lockdb
Хук завершения работы с блокировками.
remove_locknull_state Выводим ресурс из состояния lock-null. create_lock Создаем блокировку для ресурса. В обработчике этого хука должен быть создан токен новой блокировки. get_locks Получить все блокировки указанного ресурса. find_lock Найти блокировку ресурса по заданному токену. has_locks Хук проверки ресурса на наличие блокировок. Должна возвращать TRUE, даже если у ресурса есть только блокировки с истекшим сроком жизни (time-out). append_locks Добавить блокировки ресурсу. remove_lock Удалить блокировку с заданным токеном. refresh_locks Обновить блокировки у ресурса. Список токенов задает блокировки, которые необходимо обновить. Также в качестве аргумента передается структура time_t, описывающая текущее время. lookup_resource Найти ресурс, связанный с указанным токеном блокировки.
Теперь, после рассмотрения основных групп хуков модуля mod_dav, перейдем к практике. И посмотрим на код модуля-провайдера. Я не буду мешать код с текстом, поэтому все пояснения оформлены в виде комментариев к коду.