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

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

Разработчик

Ссылка платформы CoreFoundation ссылка CFMessagePort

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

На этой странице
Язык:

Ссылка CFMessagePort

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

Вы создаете локальный порт сообщения с CFMessagePortCreateLocal и сделайте его доступным для других процессов путем предоставления ему имени, или когда Вы создадите его или позже с CFMessagePortSetName. Другие процессы тогда подключают к нему использование CFMessagePortCreateRemote, указание имени порта.

Для прислушиваний к сообщениям необходимо создать источник цикла выполнения с CFMessagePortCreateRunLoopSource и добавьте его к циклу выполнения с CFRunLoopAddSource.

Когда сообщение поступит, Вашу функцию обратного вызова порта сообщения вызовут. Для отправки данных Вы храните данные в объекте CFData и вызове CFMessagePortSendRequest. Вы можете дополнительно иметь функциональное ожидание ответа и возвратить ответ в другом объекте CFData.

Порты сообщения только поддерживают коммуникацию на локальной машине. Для сетевой связи необходимо использовать объект CFSocket.

Функции

  • Возвращает локальный объект CFMessagePort.

    Объявление

    Swift

    func CFMessagePortCreateLocal(_ allocator: CFAllocator!, _ name: CFString!, _ callout: CFMessagePortCallBack, _ context: UnsafeMutablePointer<CFMessagePortContext>, _ shouldFreeInfo: UnsafeMutablePointer<Boolean>) -> CFMessagePort!

    Objective C

    CFMessagePortRef CFMessagePortCreateLocal ( CFAllocatorRef allocator, CFStringRef name, CFMessagePortCallBack callout, CFMessagePortContext *context, Boolean *shouldFreeInfo );

    Параметры

    allocator

    Средство выделения для использования для выделения памяти для нового объекта. Передача NULL или kCFAllocatorDefault использовать текущее средство выделения по умолчанию.

    name

    Имя, в котором можно зарегистрировать порт. name может быть NULL.

    callout

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

    context

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

    shouldFreeInfo

    Флаг, установленный функцией указать, ли info элемент context должен быть освобожден. Флаг установлен в true при отказе или если называют локальный порт name уже существует, false иначе. shouldFreeInfo может быть NULL.

    Возвращаемое значение

    Новый объект CFMessagePort, или NULL при отказе. Если уже называют локальный порт name, функциональные возвраты, что порт вместо того, чтобы создать новый объект; context и callout параметры проигнорированы в этом случае. Владение соблюдает Создать Правило.

    Специальные замечания

    Этот метод не доступен на iOS 7 и позже — это возвратится NULL и зарегистрируйте нарушение песочницы в syslog. См. Руководство по программированию Параллелизма для возможных заменяющих технологий.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает объект CFMessagePort, подключенный к удаленному порту.

    Объявление

    Swift

    func CFMessagePortCreateRemote(_ allocator: CFAllocator!, _ name: CFString!) -> CFMessagePort!

    Objective C

    CFMessagePortRef CFMessagePortCreateRemote ( CFAllocatorRef allocator, CFStringRef name );

    Параметры

    allocator

    Средство выделения для использования для выделения памяти для нового объекта. Передача NULL или kCFAllocatorDefault использовать текущее средство выделения по умолчанию.

    name

    Имя удаленного порта сообщения, с которым можно соединиться.

    Возвращаемое значение

    Новый объект CFMessagePort, или NULL при отказе. Если порт сообщения был уже создан для удаленного порта, существующий ранее объект возвращается. Владение соблюдает Создать Правило.

    Специальные замечания

    Этот метод не доступен на iOS 7 и позже — это возвратится NULL и зарегистрируйте нарушение песочницы в syslog. См. Руководство по программированию Параллелизма для возможных заменяющих технологий.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Создает объект CFRunLoopSource для объекта CFMessagePort.

    Объявление

    Swift

    func CFMessagePortCreateRunLoopSource(_ allocator: CFAllocator!, _ ms: CFMessagePort!, _ order: CFIndex) -> CFRunLoopSource!

    Objective C

    CFRunLoopSourceRef CFMessagePortCreateRunLoopSource ( CFAllocatorRef allocator, CFMessagePortRef local, CFIndex order );

    Параметры

    allocator

    Средство выделения для использования для выделения памяти для нового объекта. Передача NULL или kCFAllocatorDefault использовать текущее средство выделения по умолчанию.

    ms

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

    order

    Показатель приоритета, указывающий порядок, в котором обрабатываются выполненные источники цикла. order в настоящее время игнорируется объектом CFMessagePort выполненные источники цикла. Передача 0 для этого значения.

    Возвращаемое значение

    Новые CFRunLoopSource возражают для ms. Владение соблюдает Создать Правило.

    Обсуждение

    Источник цикла выполнения автоматически не добавляется к циклу выполнения. Для добавления источника к циклу выполнения использовать CFRunLoopAddSource.

    Специальные замечания

    Этот метод не доступен на iOS 7 и позже — это возвратится NULL и зарегистрируйте нарушение песочницы в syslog. См. Руководство по программированию Параллелизма для возможных заменяющих технологий.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Когда объект CFMessagePort лишен законной силы, устанавливает функцию обратного вызова, вызванную.

    Объявление

    Swift

    func CFMessagePortSetInvalidationCallBack(_ ms: CFMessagePort!, _ callout: CFMessagePortInvalidationCallBack)

    Objective C

    void CFMessagePortSetInvalidationCallBack ( CFMessagePortRef ms, CFMessagePortInvalidationCallBack callout );

    Параметры

    ms

    Порт сообщения для исследования.

    callout

    Функция обратного вызова для вызова, когда ms лишен законной силы. Передача NULL удалить обратный вызов.

    Обсуждение

    Если ms уже недопустимо, callout сразу вызывается.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Определяет имя локального объекта CFMessagePort.

    Объявление

    Swift

    func CFMessagePortSetName(_ ms: CFMessagePort!, _ newName: CFString!) -> Boolean

    Objective C

    Boolean CFMessagePortSetName ( CFMessagePortRef ms, CFStringRef newName );

    Параметры

    ms

    Локальный порт сообщения для исследования.

    newName

    Новое имя для ms.

    Возвращаемое значение

    true если смена имени успешно выполняется, иначе false.

    Обсуждение

    Другие потоки и процессы могут соединиться с именованным портом сообщения с CFMessagePortCreateRemote.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Лишает законной силы объект CFMessagePort, мешая ему получить или больше отправлять сообщения.

    Объявление

    Swift

    func CFMessagePortInvalidate(_ ms: CFMessagePort!)

    Objective C

    void CFMessagePortInvalidate ( CFMessagePortRef ms );

    Параметры

    ms

    Порт сообщения для лишения законной силы.

    Обсуждение

    Лишение законной силы порта сообщения предотвращает порт от когда-либо отправки, или получение больше обменивается сообщениями; порт сообщения не освобожден, все же. Если порт не был уже лишен законной силы, функция обратного вызова аннулирования порта вызывается, если Вы были установлены с CFMessagePortSetInvalidationCallBack. CFMessagePortContext info информация для ms если обратный вызов выпуска был указан в структуре контекста порта, также выпущен. Наконец, если источник цикла выполнения создавался для ms, источник цикла выполнения также лишен законной силы.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Отправляет сообщение в удаленный объект CFMessagePort.

    Объявление

    Swift

    func CFMessagePortSendRequest(_ remote: CFMessagePort!, _ msgid: Int32, _ data: CFData!, _ sendTimeout: CFTimeInterval, _ rcvTimeout: CFTimeInterval, _ replyMode: CFString!, _ returnData: UnsafeMutablePointer<Unmanaged<CFData>?>) -> Int32

    Objective C

    SInt32 CFMessagePortSendRequest ( CFMessagePortRef remote, SInt32 msgid, CFDataRef data, CFTimeInterval sendTimeout, CFTimeInterval rcvTimeout, CFStringRef replyMode, CFDataRef *returnData );

    Параметры

    remote

    Порт тот сообщения, к который data должен быть отправлен.

    msgid

    Произвольное целочисленное значение, которое можно отправить с сообщением.

    data

    Данные для отправки к remote.

    sendTimeout

    Время для ожидания data быть отправленным.

    rcvTimeout

    Время для ожидания ответа, который будет возвращен.

    replyMode

    Режим цикла выполнения, в котором функция должна ожидать ответа. Если сообщение является a oneway (таким образом, никакой ответ не ожидается), тогда replyMode должен быть NULL. Если replyMode не -NULL, функция выполняет цикл выполнения, ожидающий ответа в том режиме. replyMode может быть любое имя строки режима цикла выполнения, но это должно быть один с входными установленными источниками. Необходимо использовать kCFRunLoopDefaultMode постоянный, если у Вас нет определенной причины использовать различный режим.

    returnData

    По возврату, содержит объект CFData, содержащий данные ответа. Владение соблюдает Создать Правило.

    Возвращаемое значение

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

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Обратные вызовы расписаний для указанного порта сообщения на указанной очереди отгрузки.

    Объявление

    Swift

    func CFMessagePortSetDispatchQueue(_ ms: CFMessagePort!, _ queue: dispatch_queue_t!)

    Objective C

    void CFMessagePortSetDispatchQueue ( CFMessagePortRef ms, dispatch_queue_t queue );

    Параметры

    ms

    Порт сообщения для планирования.

    queue

    libdispatch очередь.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает контекстную информацию для объекта CFMessagePort.

    Объявление

    Swift

    func CFMessagePortGetContext(_ ms: CFMessagePort!, _ context: UnsafeMutablePointer<CFMessagePortContext>)

    Objective C

    void CFMessagePortGetContext ( CFMessagePortRef ms, CFMessagePortContext *context );

    Параметры

    ms

    Порт сообщения для исследования.

    context

    Указатель тот, на структуру, в который контекстная информация для ms должен быть скопирован. Возвращаемой информацией обычно является та же информация, которой Вы передали CFMessagePortCreateLocal при создании ms. Однако, если CFMessagePortCreateLocal возвращенный кэшируемый объект вместо того, чтобы создать новый объект, context заполнено информацией от порта исходного сообщения вместо информации, которую Вы передали функции.

    Обсуждение

    Номер версии контекста для портов сообщения в настоящее время 0. Прежде, чем вызвать эту функцию, необходимо инициализировать version элемент context к 0.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает функцию обратного вызова аннулирования для объекта CFMessagePort.

    Объявление

    Swift

    func CFMessagePortGetInvalidationCallBack(_ ms: CFMessagePort!) -> CFMessagePortInvalidationCallBack

    Objective C

    CFMessagePortInvalidationCallBack CFMessagePortGetInvalidationCallBack ( CFMessagePortRef ms );

    Параметры

    ms

    Порт сообщения для исследования.

    Возвращаемое значение

    Функция обратного вызова, вызванная, когда ms лишен законной силы. NULL если никакой обратный вызов не был установлен с CFMessagePortSetInvalidationCallBack.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает имя, в котором регистрируется объект CFMessagePort.

    Объявление

    Swift

    func CFMessagePortGetName(_ ms: CFMessagePort!) -> CFString!

    Objective C

    CFStringRef CFMessagePortGetName ( CFMessagePortRef ms );

    Параметры

    ms

    Порт сообщения для исследования.

    Возвращаемое значение

    Зарегистрированное имя ms, NULL если не назван. Владение соблюдает Получить Правило.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает булево значение, указывающее, представляет ли объект CFMessagePort удаленный порт.

    Объявление

    Swift

    func CFMessagePortIsRemote(_ ms: CFMessagePort!) -> Boolean

    Objective C

    Boolean CFMessagePortIsRemote ( CFMessagePortRef ms );

    Параметры

    ms

    Порт сообщения для исследования.

    Возвращаемое значение

    true если ms удаленный порт, иначе false.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает булево значение, указывающее, допустим ли объект CFMessagePort и в состоянии отправить или получить сообщения.

    Объявление

    Swift

    func CFMessagePortIsValid(_ ms: CFMessagePort!) -> Boolean

    Objective C

    Boolean CFMessagePortIsValid ( CFMessagePortRef ms );

    Параметры

    ms

    Порт сообщения для исследования.

    Возвращаемое значение

    true если ms может использоваться для коммуникации, иначе false.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает идентификатор типа для CFMessagePort непрозрачный тип.

    Объявление

    Swift

    func CFMessagePortGetTypeID() -> CFTypeID

    Objective C

    CFTypeID CFMessagePortGetTypeID ( void );

    Возвращаемое значение

    Идентификатор типа для CFMessagePort непрозрачный тип.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

Обратные вызовы

  • Обратный вызов, вызванный для обработки сообщения, полученного на объекте CFMessagePort.

    Объявление

    Swift

    typealias CFMessagePortCallBack = CFunctionPointer<((CFMessagePort!, Int32, CFData!, UnsafeMutablePointer<Void>) -> Unmanaged<CFData>!)>

    Objective C

    typedef CFDataRef (*CFMessagePortCallBack) ( CFMessagePortRef local, SInt32 msgid, CFDataRef data, void *info );

    Параметры

    local

    Локальный порт сообщения, получивший сообщение.

    msgid

    Произвольное целочисленное значение присвоилось к сообщению отправителем.

    data

    Данные сообщения.

    info

    info элемент CFMessagePortContext структура, использовавшаяся при создании local.

    Возвращаемое значение

    Данные для передачи обратно отправителю сообщения. Система выпускает возвращенный объект CFData. Возвратиться NULL если Вы хотите пустой ответ, возвращенный к отправителю.

    Обсуждение

    Если Вы хотите, чтобы данные сообщения сохранились вне этого обратного вызова, необходимо явно создать копию data вместо того, чтобы просто сохранять его; содержание data будет освобожден после выходов обратного вызова.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Когда объект CFMessagePort лишен законной силы, обратный вызов вызвал.

    Объявление

    Swift

    typealias CFMessagePortInvalidationCallBack = CFunctionPointer<((CFMessagePort!, UnsafeMutablePointer<Void>) -> Void)>

    Objective C

    typedef void (*CFMessagePortInvalidationCallBack) ( CFMessagePortRef ms, void *info );

    Параметры

    ms

    Лишенный законной силы порт сообщения.

    info

    info элемент CFMessagePortContext структура, использовавшаяся при создании ms, если ms локальный порт; NULL если ms удаленный порт.

    Обсуждение

    Ваш обратный вызов должен освободить любые ресурсы, выделенные для ms.

    Вы указываете этот обратный вызов с CFMessagePortSetInvalidationCallBack.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

Типы данных

Прочие условия

  • Структура, содержащая определенные с помощью программы данные и обратные вызовы, с которыми можно сконфигурировать поведение объекта CFMessagePort.

    Объявление

    Swift

    struct CFMessagePortContext { var version: CFIndex var info: UnsafeMutablePointer<Void> var retain: CFunctionPointer<((UnsafePointer<Void>) -> UnsafePointer<Void>)> var release: CFunctionPointer<((UnsafePointer<Void>) -> Void)> var copyDescription: CFunctionPointer<((UnsafePointer<Void>) -> Unmanaged<CFString>!)> }

    Objective C

    struct CFMessagePortContext { CFIndex version; void *info; CFAllocatorRetainCallBack retain; CFAllocatorReleaseCallBack release; CFAllocatorCopyDescriptionCallBack copyDescription; }; typedef struct CFMessagePortContext CFMessagePortContext;

    Поля

    version

    Номер версии структуры. Должен быть 0.

    info

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

    retain

    Сохранить обратный вызов для Вашего определенного с помощью программы info указатель. Может быть NULL.

    release

    Обратный вызов выпуска для Вашего определенного с помощью программы info указатель. Может быть NULL.

    copyDescription

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

    Доступность

    Доступный в OS X v10.0 и позже.

  • Ссылка на объект порта сообщения.

    Объявление

    Swift

    typealias CFMessagePortRef = CFMessagePort

    Objective C

    typedef struct __CFMessagePort *CFMessagePortRef;

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

Константы

Прочие условия

  • Коды ошибки для CFMessagePortSendRequest.

    Объявление

    Swift

    var kCFMessagePortSuccess: Int { get } var kCFMessagePortSendTimeout: Int { get } var kCFMessagePortReceiveTimeout: Int { get } var kCFMessagePortIsInvalid: Int { get } var kCFMessagePortTransportError: Int { get } var kCFMessagePortBecameInvalidError: Int { get }

    Objective C

    enum { kCFMessagePortSuccess = 0, kCFMessagePortSendTimeout = -1, kCFMessagePortReceiveTimeout = -2, kCFMessagePortIsInvalid = -3, kCFMessagePortTransportError = -4 kCFMessagePortBecameInvalidError = -5 };

    Константы

    • kCFMessagePortSuccess

      kCFMessagePortSuccess

      Сообщение было успешно отправлено и, если ответ ожидался, ответ был получен.

      Доступный в OS X v10.0 и позже.

    • kCFMessagePortSendTimeout

      kCFMessagePortSendTimeout

      Сообщение не могло быть отправлено перед отправить тайм-аутом.

      Доступный в OS X v10.0 и позже.

    • kCFMessagePortReceiveTimeout

      kCFMessagePortReceiveTimeout

      Никакой ответ не был получен перед получить тайм-аутом.

      Доступный в OS X v10.0 и позже.

    • kCFMessagePortIsInvalid

      kCFMessagePortIsInvalid

      Сообщение не могло быть отправлено, потому что порт сообщения недопустим.

      Доступный в OS X v10.0 и позже.

    • kCFMessagePortTransportError

      kCFMessagePortTransportError

      Ошибка произошла, пытаясь отправить сообщение.

      Доступный в OS X v10.0 и позже.

    • kCFMessagePortBecameInvalidError

      kCFMessagePortBecameInvalidError

      Порт сообщения был лишен законной силы.

      Доступный в OS X v10.6 и позже.