Files
utun2/src/member_files/storage.h
T

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