Сервер - статьи

       

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, перейдем к практике. И посмотрим на код модуля-провайдера. Я не буду мешать код с текстом, поэтому все пояснения оформлены в виде комментариев к коду.

Содержание раздела