Ссылка 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!) -> BooleanObjective 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>?>) -> Int32Objective 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!) -> CFMessagePortInvalidationCallBackObjective 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!) -> BooleanObjective 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!) -> BooleanObjective 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 и позже.
-