Ссылка 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);
Параметры
value
user_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.