Ссылка libcache
Уровень UNIX, кэширующий API.
Предоставляет соединению словаря ключи значения. Кэш определяет свой размер и может удалить ключи в любое время. Кэш проводит подсчет ссылок для значений кэша и сохраняет значения до не имеющий ссылки. В любое время могут быть удалены не имеющие ссылки значения.
Все API-функции возвращаются 0 для успеха, ненулевого для отказа. Большинство функций может возвратить EINVAL для уродливых параметров и ENOMEM для отказов выделения. См. функциональные описания для других возвращаемых значений.
Функции кэша полагаются на блокировку на кэш для обеспечения потокобезопасности. Вызывания функций кэша от обратных вызовов кэша нужно избежать для предотвращения мертвой блокировки.
Включенные заголовки
<TargetConditionals.h><stddef.h><stdint.h><stdbool.h><sys/cdefs.h>
-
Создает объект кэша.
Объявление
Objective C
__attribute__((__visibility__("default"))) int cache_create( const char *name, cache_attributes_t *attrs, cache_t **cache_out);Параметры
nameИмя кэша, используемое для отладки и инструментов производительности. Имя должно быть в форме обратного DNS, например, «com.mycompany.myproject.mycache» и не должно быть NULL. Имя копируется.
attrsАтрибуты кэша раньше настраивали поведение кэша. Атрибуты определяются ниже и не должны быть NULL.
cache_outЕсли кэш успешно создается, объект кэша хранится здесь. Не должен быть NULL.
Возвращаемое значение
Возвраты 0 для успеха, ненулевого для отказа.
-
Уничтожает кэш
Объявление
Objective C
__attribute__((__visibility__("default"))) int cache_destroy( cache_t *cache);Параметры
cacheУказатель для кэширования. Не должен быть NULL.
Возвращаемое значение
Возвраты 0 для успеха, ненулевого для отказа. EAGAIN возвратов, если кэш не был уничтожен, потому что существуют сохраненные значения кэша.
Обсуждение
Вызывает cache_remove_all (). Если нет никаких сохраненных значений кэша тогда, объект кэша освобожден. Если сохраненные значения кэша существуют тогда возвраты EAGAIN.
-
Выборки оценивают за ключ.
Объявление
Objective C
__attribute__((__visibility__("default"))) int cache_get_and_retain( cache_t *cache, void *key, void **value_out);Параметры
cacheУказатель для кэширования. Не должен быть NULL.
keyКлюч, привыкший к справочному значению. Не должен быть NULL.
value_outЗначение сохранено здесь, если найдено. Не должен быть NULL.
Возвращаемое значение
Возвраты 0 для успеха, ENOENT, если не найденный, другое ненулевое для отказа.
Обсуждение
Значение выборок для ключа, сохраняет значение и хранит значение в value_out. Вызывающая сторона должна выпустить значение с помощью cache_release_value ().
-
Выпускает ранее сохраненное значение кэша.
Объявление
Objective C
__attribute__((__visibility__("default"))) int cache_release_value( cache_t *cache, void *value);Параметры
cacheУказатель для кэширования. Не должен быть NULL.
valueОцените выпуску. Не должен быть NULL.
Возвращаемое значение
Возвраты 0 для успеха, ненулевого для отказа.
Обсуждение
Выпускает ранее сохраненное значение кэша. Когда подсчет ссылок достигает нуля, кэш может сделать значение purgeable или уничтожить его.
-
Удаляет ключ и его значение.
Объявление
Objective C
__attribute__((__visibility__("default"))) int cache_remove( cache_t *cache, void *key);Параметры
cacheУказатель для кэширования. Не должен быть NULL.
keyКлюч для удаления. Не должен быть NULL.
Возвращаемое значение
Возвраты 0 для успеха, ненулевого для отказа.
Обсуждение
Удаляет ключ и его значение от кэша, таким образом, что cache_get_and_retain () перестанет работать. Сразу вызывает ключевой обратный вызов выпуска. Вызывает обратный вызов выпуска значения, как только значение сохраняет количество, нуль.
-
Вызывает cache_remove на все ключи.
Объявление
Objective C
__attribute__((__visibility__("default"))) int cache_remove_all( cache_t *cache);Параметры
cacheУказатель для кэширования. Не должен быть NULL.
Возвращаемое значение
Возвраты 0 для успеха, ненулевого для отказа.
-
Наборы оценивают за ключ.
Объявление
Objective C
__attribute__((__visibility__("default"))) int cache_set_and_retain( cache_t *cache, void *key, void *value, cache_cost_t cost);Параметры
cacheУказатель для кэширования. Не должен быть NULL.
keyКлюч для добавления. Не должен быть NULL.
valueЗначение для добавления. Если значением является NULL, ключ связан со значением NULL.
costСтоимость поддержания значения в кэше.
Возвращаемое значение
Возвраты 0 для успеха, ненулевого для отказа.
Обсуждение
Наборы оценивают за ключ. Значение сохраняется, пока не выпущено использование cache_release_value (). Ключ сохраняет обратный вызов (если предоставленный), вызывается на ключ.
Заменяет предыдущий ключ и значение если настоящее. Сразу вызывает ключевой обратный вызов выпуска для предыдущего ключа. Вызывает обратный вызов выпуска значения, как только предыдущее значение сохраняет количество, нуль.
Стоимость указывает относительную стоимость поддержания значения в кэше (например, размер имеющий значение в байтах) и может использоваться кэшем под давлением памяти для выбора который значения кэша выселить. Нуль является допустимой стоимостью.
-
Вычисляет ключ использования значения хэш-функции.
Объявление
Objective C
typedef uintptr_t ( *cache_key_hash_cb_t)( void *key, void *user_data);Параметры
keyКлюч пользователю для вычисления хеша.
user_dataПредоставленное пользователями значение передается во время создания кэша.
Обсуждение
Вычисляет и возвращает ключевой хеш. Если обратным вызовом будет NULL тогда, то ключ будет преобразован от указателя до целого числа для вычислений хэш-кода.
-
Определяет, равны ли два ключа.
Объявление
Objective C
typedef bool ( *cache_key_is_equal_cb_t)( void *key1, void *key2, void *user_data);Параметры
key1Первый ключ
key2Второй ключ
user_dataПредоставленное пользователями значение передается во время создания кэша.
Возвращаемое значение
Возвращает true, если равный, ложь если не равный.
Обсуждение
Определяет, равны ли два ключа. Если обратным вызовом является NULL тогда, кэш использует равенство указателя для тестирования равенства на ключи.
-
Сохраняет ключ.
Объявление
Objective C
typedef void ( *cache_key_retain_cb_t)( void *key_in, void **key_out, void *user_data);Параметры
key_inКлюч обеспечил в cache_set_and_retain ()
key_outУстановите ключ для добавления здесь. ЕСЛИ НОЛЬ, cache_set_and_retain () перестанет работать.
user_dataПредоставленное пользователями значение передается во время создания кэша.
Обсуждение
Вызванный, когда это добавляется к кэшу через cache_set_and_retain. Кэш добавит ключ, сохраненный в key_out, и может выпустить его в любое время путем вызова ключевого обратного вызова выпуска. Если key_out будет NULL тогда, то никакой ключ не будет добавлен. Если обратным вызовом является NULL тогда, кэш добавляет key_in.
-
Выпуски или освобождают значение кэша.
Объявление
Objective C
typedef void ( *cache_release_cb_t)( void *key_or_value, void *user_data);Параметры
key_or_valueКлюч или значение для выпуска
user_dataПредоставленное пользователями значение передается во время создания кэша.
Обсуждение
Вызванный, когда ключ или значение удалены из кэша, т.е. когда кэш больше не ссылается на него. Если бы ссылка рассчитала, в общем падеже ключ или значение должны быть освобождены, или выпущены. Если обратным вызовом является NULL тогда, кэш вызывает свободный () на key_or_value.
-
Заставляет кэш оценить nonpurgeable и тесты, чтобы видеть, допустимо ли значение все еще.
Объявление
Objective C
typedef bool ( *cache_value_make_nonpurgeable_cb_t)( void *value, void *user_data);Параметры
valueuser_dataПредоставленное пользователями значение передается во время создания кэша.
Возвращаемое значение
Должен возвратить true, если значение является допустимым, или ложным, если это было очищено.
Обсуждение
Будут удалены очищенные значения кэша. Если обратным вызовом является NULL тогда, кэш не делает значение nonpurgeable.
-
Делает значение кэша purgeable.
Объявление
Objective C
typedef void ( *cache_value_make_purgeable_cb_t)( void *value, void *user_data);Параметры
valueЗначение кэша для создания purgeable.
user_dataПредоставленное пользователями значение передается во время создания кэша.
Обсуждение
Вызванный, когда кэш решает, что никакие клиенты кэша не ссылаются на значение. Если обратным вызовом является NULL тогда, кэш не делает значение purgeable.
-
Сохраняет значение.
Объявление
Objective C
typedef void ( *cache_value_retain_cb_t)( void *value_in, void *user_data);Параметры
value_inЗначение обеспечило в cache_set_and_retain ()
user_dataПредоставленное пользователями значение передается во время создания кэша.
Обсуждение
Вызванный, когда уникальное значение добавляется к кэшу через cache_set_and_retain (). Позволяет клиенту сохранять value_in, прежде чем он будет добавлен к кэшу. Кэш вызовет любой value_release_cb после удаления значения кэша.
Посмотрите раздел Overview выше для документации уровня заголовка.
-
Атрибуты кэша
Объявление
Objective C
typedef struct cache_attributes_s cache_attributes_t;Обсуждение
Набор обратных вызовов, используемых cache_create () для настройки поведения кэша.
Оператор импорта
-
Стоимость поддержания значения в кэше.
Объявление
Objective C
typedef size_t cache_cost_t;Обсуждение
Стоимость использования кэша при решении, который значение выселить. Обычно связываемый с емкостью памяти значения в байтах. Нуль является допустимой стоимостью.
Оператор импорта
-
Непрозрачный объект кэша.
Объявление
Objective C
typedef struct cache_s cache_t;Обсуждение
Ключи соединения словаря со значениями.
Оператор импорта
-
Обратные вызовы передали cache_create () для настройки поведения кэша.
Объявление
Objective C
struct __attribute__((__visibility__("default"))) cache_attributes_s { uint32_t version; cache_key_hash_cb_t key_hash_cb; cache_key_is_equal_cb_t key_is_equal_cb; cache_key_retain_cb_t key_retain_cb; cache_release_cb_t key_release_cb; cache_release_cb_t value_release_cb; cache_value_make_nonpurgeable_cb_t value_make_nonpurgeable_cb; cache_value_make_purgeable_cb_t value_make_purgeable_cb; void *user_data; // Added in CACHE_ATTRIBUTES_VERSION_2 cache_value_retain_cb_t value_retain_cb; };Поля
key_hash_cbКлючевой обратный вызов хеша
key_is_equal_cbКлюч является равным обратным вызовом
key_retain_cbКлюч сохраняет обратный вызов
key_release_cbКлючевой обратный вызов выпуска
value_retain_cbЗначение сохраняет обратный вызов
value_release_cbОбратный вызов выпуска значения
value_make_nonpurgeable_cbЗначение делает nonpurgeable обратный вызов
value_make_purgeable_cbЗначение делает purgeable обратный вызов
versionНомер версии атрибутов используется для совместимости на уровне двоичных кодов.
user_dataПереданный всем обратным вызовам. Может быть NULL.
