Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка libcache

Опции
Развертывание Target:

На этой странице

Ссылка 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.