Ссылка 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.CFMessagePortContextinfoинформация для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Порт сообщения для планирования.
queuelibdispatch очередь.
Оператор импорта
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() -> CFTypeIDObjective 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Данные сообщения.
infoinfoэлемент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Лишенный законной силы порт сообщения.
infoinfoэлемент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 = CFMessagePortObjective 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 };Константы
-
kCFMessagePortSuccesskCFMessagePortSuccessСообщение было успешно отправлено и, если ответ ожидался, ответ был получен.
Доступный в OS X v10.0 и позже.
-
kCFMessagePortSendTimeoutkCFMessagePortSendTimeoutСообщение не могло быть отправлено перед отправить тайм-аутом.
Доступный в OS X v10.0 и позже.
-
kCFMessagePortReceiveTimeoutkCFMessagePortReceiveTimeoutНикакой ответ не был получен перед получить тайм-аутом.
Доступный в OS X v10.0 и позже.
-
kCFMessagePortIsInvalidkCFMessagePortIsInvalidСообщение не могло быть отправлено, потому что порт сообщения недопустим.
Доступный в OS X v10.0 и позже.
-
kCFMessagePortTransportErrorkCFMessagePortTransportErrorОшибка произошла, пытаясь отправить сообщение.
Доступный в OS X v10.0 и позже.
-
kCFMessagePortBecameInvalidErrorkCFMessagePortBecameInvalidErrorПорт сообщения был лишен законной силы.
Доступный в OS X v10.6 и позже.
-
