20 lines
1.6 KiB
C
20 lines
1.6 KiB
C
/* Серверное хранилище. Вызывать execute/sweep/destroy последовательно, только без
|
|
* одновременно работающего worker. create не обращается к диску; initialize выполняет
|
|
* стартовый обход в worker до запросов. ACL проверяет member_files.c перед каждой работой. Файлы временных загрузок
|
|
* закрываются после 10 секунд простоя, удаляются после upload_ttl; restart отменяет их.
|
|
* Открытые regular-файлы кешируются, максимум 64. Родительские пути не следуют ссылкам. */
|
|
#ifndef MEMBER_FILES_STORAGE_H
|
|
#define MEMBER_FILES_STORAGE_H
|
|
#include "protocol.h"
|
|
struct mf_storage;
|
|
struct mf_storage* mf_storage_create(const char* root, uint64_t quota, uint64_t upload_ttl_tb);
|
|
/* Однократный стартовый обход. До его завершения execute возвращает BUSY, после ошибки — её код. */
|
|
int mf_storage_initialize(struct mf_storage* storage);
|
|
void mf_storage_destroy(struct mf_storage* storage);
|
|
void mf_storage_sweep(struct mf_storage* storage, uint64_t now);
|
|
void mf_storage_execute(struct mf_storage* storage, uint64_t group, uint64_t peer,
|
|
const struct mf_message* request, struct mf_message* response);
|
|
/* Диагностика/тест: число файловых дескрипторов, исключая каталог корня. */
|
|
unsigned mf_storage_open_count(const struct mf_storage* storage);
|
|
#endif
|