Я работаю над библиотекой обмена контентом, которая требует некоторого управления кешем. Например, пользователь может публиковать данные с помощью
ContentPtr *publish(char *data, ssize_t length);
ContentPtr *publish(FILE *fd);
После вызова данные сохраняются во внутреннем буфере, и возвращается указатель на это содержимое. Контент можно удалить с помощью ContentPtr
boolean remove(ContentPtr *cPtr);
Так как пользователь может публиковать огромное количество данных, я хочу добавить модуль управления кешем для поддержки
- политики кеша, такие как LRU, FIFO, None (запретить публикацию, когда кеш заполнен)
- контроль размера кэша
Поскольку я никогда не видел и не использовал библиотеки с управлением кешем, я не знаю, как лучше всего разрабатывать такой API. Может ли кто-нибудь порекомендовать какую-нибудь библиотеку с хорошим API управления кешем?
Некоторые возможные решения:
void configPolicy(enum Policy p);
void configPolicy(int flags);
//Используйте некоторые флаги и сделайте что-то похожее наfcntl()
void configSize(ssize_t size);
//размер=-1, если нет ограниченийvoid configSize(string size);
//поддерживает16M
или1G