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 |
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
out_token
Состояние Returns.
Поставка уведомления запроса сигналом UNIX.
Клиент может запросить сигнальное уведомление на многократные имена. После того, как сигнал поставлен, notify_check (), подпрограмму можно вызвать с каждым маркером уведомления для определения, какое имя (если таковые имеются) генерировало сигнальное уведомление.
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