Spec-Zone .ru
спецификации, руководства, описания, API
ADC домой > Ссылочная библиотека> Ссылка> Дарвин> Разное пространство пользователя ссылка API

 


notify.h

Включает:
<sys/cdefs.h>
<stdint.h>
<mach/message.h>
<mach/port.h>
<mach/message.h>
<mach/ndr.h>

Введение

Эти подпрограммы позволяют процессам обмениваться событиями уведомления не сохраняющими состояние.

Уведомления связаны с именами в пространстве имен, совместно использованном всеми клиентами системы. Клиенты могут отправить уведомления для имен и могут контролировать имена для отправленных уведомлений. Клиенты могут запросить поставку уведомления многими различными методами.

Клиенты, желающие контролировать имена в системе уведомления, должны зарегистрироваться в системе, обеспечив имя и другую требуемую информацию для желаемого способа доставки уведомления. Клиентам дают целочисленный маркер, представляющий регистрацию.

Поставка уведомления предоставлена на основе максимальных усилий, но не надежна. Ограничения в службе могут заставить некоторые уведомления быть отброшенными, особенно под в большой степени нагруженными состояниями.

Уведомления могут быть объединены в некоторых случаях. Многократные события, отправленные для имени в быстрой последовательности, могут привести к единственному уведомлению, отправленному клиентам, зарегистрированным для уведомления для того имени. Клиенты, проверяющие на изменения с помощью notify_check (), подпрограмма не может определить, отправило ли больше чем одно первенство события начиная с предыдущего вызова на notify_check () для того имени.

«Ложные положительные стороны» могут произойти в notify_check (), когда используется с маркером, сгенерированным notify_register_check () вследствие ограничений реализации. Это поведение может варьироваться по будущим выпускам.



Функции

notify_cancel
notify_check
notify_post
notify_register_check
notify_register_mach_port
notify_register_signal

notify_cancel


uint32_t notify_cancel(
    int token);  
Параметры
token
(ввод) маркер уведомления
Возвращаемое значение

Состояние Returns.

Обсуждение

Уведомление отмены и бесплатные ресурсы связались с маркером уведомления. Порты Маха и дескриптор файла, связанный с маркером, выпущены (освобожденный или закрытый), когда были отменены все регистрационные маркеры, связанные с портом или дескриптором файла.


notify_check


uint32_t notify_check(
    int token,
    int *check);  
Параметры
token
(ввод) маркер уведомления
check
(вывод) истина/ложное показание
Возвращаемое значение

Состояние Returns.

Обсуждение

Проверьте, были ли отправлены какие-либо уведомления.

Выходная проверка параметра установлена в 0 для лжи, 1 для истины. Состояние Returns. проверка установлена в истину, первый раз notify_check вызывают для маркера. Когда уведомления были отправлены для имени, связанного с маркером уведомления, набор последующих вызовов проверяет к истине. Эта подпрограмма независима от notify_post (). Т.е. проверка будет истиной, если приложение вызовет notify_post () для имени и затем вызовет notify_check () для маркера, связанного с тем именем.


notify_post


uint32_t notify_post(
    const char *name);  
Обсуждение

Отправьте уведомление для имени.

Это - единственный вызов, требующийся для производителя уведомления. Состояние Returns.


notify_register_check


uint32_t notify_register_check(
    const char *name,
    int *out_token);  
Параметры
name
(ввод) имя уведомления
out_token
(вывод) регистрационный маркер
Возвращаемое значение

Состояние Returns.

Обсуждение

Создает регистрационный маркер использоваться с notify_check (), но не будут поставлены никакие активные уведомления.


notify_register_mach_port


uint32_t notify_register_mach_port(
    const char *name,
    mach_port_t *notify_port,
    int flags,
    int *out_token);  
Параметры
name
(ввод) имя уведомления
out_token
(вывод) маркер уведомления
notify_port
(ввод/вывод) указатель на порт Маха
Возвращаемое значение

Состояние Returns.

Обсуждение

Уведомление запроса сообщением Маха.

Уведомления поставлены пустым сообщением, отправленным в порт Маха. По умолчанию новый порт выделяется, и указатель на него возвращается как значение «notify_port». Порт Маха, ранее возвращенный вызовом к этой подпрограмме, может использоваться для уведомлений, если указатель на тот порт передается в подпрограмме, и NOTIFY_REUSE установлен в параметре флагов. Служба уведомления должна быть в состоянии извлечь, отправляют права на порт.

Обратите внимание на то, что ядро ограничивает размер очереди сообщений для любого порта. Если важно, чтобы уведомления не были потеряны вследствие переполнения очереди, клиенты должны обслужить сообщения быстро и осторожны относительно использования того же порта для уведомлений больше чем для одного имени.

Уведомление имеет пустое тело сообщения. msgh_id поле в заголовке сообщения Маха будет иметь значение маркера уведомления. Если порт снова используется для многократной регистрации уведомления, значение msgh_id может использоваться для определения, какое имя генерировало уведомление.


notify_register_signal


uint32_t notify_register_signal(
    const char *name,
    int sig,
    int *out_token);  
Параметры
name
(ввод) имя уведомления
sig
(входное) число сигнала (см. сигнал (3)),
out_token
(вывод) маркер уведомления
Возвращаемое значение

Состояние Returns.

Обсуждение

Поставка уведомления запроса сигналом UNIX.

Клиент может запросить сигнальное уведомление на многократные имена. После того, как сигнал поставлен, notify_check (), подпрограмму можно вызвать с каждым маркером уведомления для определения, какое имя (если таковые имеются) генерировало сигнальное уведомление.

#defines


NOTIFY_REUSE


#define NOTIFY_REUSE 0x00000001 
Обсуждение

Флаговые биты используются для регистрации.


NOTIFY_STATUS_FAILED


См. также:
Коды состояния
#define NOTIFY_STATUS_FAILED 1000000 
Обсуждение

Коды состояния, возвращенные API.


NOTIFY_STATUS_INVALID_FILE


См. также:
Коды состояния
#define NOTIFY_STATUS_INVALID_FILE 4 
Обсуждение

Коды состояния, возвращенные API.


NOTIFY_STATUS_INVALID_NAME


См. также:
Коды состояния
#define NOTIFY_STATUS_INVALID_NAME 1 
Обсуждение

Коды состояния, возвращенные API.


NOTIFY_STATUS_INVALID_PORT


См. также:
Коды состояния
#define NOTIFY_STATUS_INVALID_PORT 3 
Обсуждение

Коды состояния, возвращенные API.


NOTIFY_STATUS_INVALID_REQUEST


См. также:
Коды состояния
#define NOTIFY_STATUS_INVALID_REQUEST 6 
Обсуждение

Коды состояния, возвращенные API.


NOTIFY_STATUS_INVALID_SIGNAL


См. также:
Коды состояния
#define NOTIFY_STATUS_INVALID_SIGNAL 5 
Обсуждение

Коды состояния, возвращенные API.


NOTIFY_STATUS_INVALID_TOKEN


См. также:
Коды состояния
#define NOTIFY_STATUS_INVALID_TOKEN 2 
Обсуждение

Коды состояния, возвращенные API.


NOTIFY_STATUS_NOT_AUTHORIZED


См. также:
Коды состояния
#define NOTIFY_STATUS_NOT_AUTHORIZED 7 
Обсуждение

Коды состояния, возвращенные API.


NOTIFY_STATUS_OK


См. также:
Коды состояния
#define NOTIFY_STATUS_OK 0 
Обсуждение

Коды состояния, возвращенные API.


Коды состояния


См. также:
NOTIFY_STATUS_OK
NOTIFY_STATUS_INVALID_NAME
NOTIFY_STATUS_INVALID_TOKEN
NOTIFY_STATUS_INVALID_PORT
NOTIFY_STATUS_INVALID_FILE
NOTIFY_STATUS_INVALID_SIGNAL
NOTIFY_STATUS_INVALID_REQUEST
NOTIFY_STATUS_NOT_AUTHORIZED
NOTIFY_STATUS_FAILED
#define NOTIFY_STATUS_OK 0
#define NOTIFY_STATUS_INVALID_NAME 1
#define NOTIFY_STATUS_INVALID_TOKEN 2
#define NOTIFY_STATUS_INVALID_PORT 3
#define NOTIFY_STATUS_INVALID_FILE 4
#define NOTIFY_STATUS_INVALID_SIGNAL 5
#define NOTIFY_STATUS_INVALID_REQUEST 6
#define NOTIFY_STATUS_NOT_AUTHORIZED 7
#define NOTIFY_STATUS_FAILED 1000000
Обсуждение

Коды состояния, возвращенные API.

Последнее обновление: 20.06.2006