Ссылка CFMachPort
Объект CFMachPort является оберткой для порта собственного компонента Маха (mach_port_t
). Порты Маха являются собственным каналом передачи для ядра OS X.
CFMachPort не обеспечивает функцию для отправки сообщений, таким образом, Вы прежде всего используете объект CFMachPort, если необходимо слушать порт Маха, который Вы получили другими средними значениями. Можно получить обратный вызов, когда сообщение поступает в порт или когда порт становится недопустимым, такой как тогда, когда умирает собственный порт.
Для прислушиваний к сообщениям, необходимо создать источник цикла выполнения с CFMachPortCreateRunLoopSource
и добавьте его к циклу выполнения с CFRunLoopAddSource
.
Для отправки данных необходимо использовать Маха APIs с портом собственного компонента Маха, не описанным здесь. Также можно использовать Ссылочный объект CFMessagePort, который может отправить произвольные данные.
Порты Маха только поддерживают коммуникацию на локальной машине. Для сетевой связи необходимо использовать Ссылочный объект CFSocket.
-
Создает объект CFMachPort с новым портом Маха.
Объявление
Swift
func CFMachPortCreate(_
allocator
: CFAllocator!, _callout
: CFMachPortCallBack, _context
: UnsafeMutablePointer<CFMachPortContext>, _shouldFreeInfo
: UnsafeMutablePointer<Boolean>) -> CFMachPort!Objective C
CFMachPortRef CFMachPortCreate ( CFAllocatorRef allocator, CFMachPortCallBack callout, CFMachPortContext *context, Boolean *shouldFreeInfo );
Параметры
allocator
Средство выделения для использования для выделения памяти для нового объекта. Передача
NULL
илиkCFAllocatorDefault
использовать текущее средство выделения по умолчанию.callout
Когда сообщение получено на новом порту Маха, функция обратного вызова вызвала.
context
Структура, содержащая контекстную информацию для нового порта Маха. Функция копирует информацию из структуры, таким образом, память, которой указывают
context
не должен сохраняться вне вызова функции.shouldFreeInfo
Флаг, установленный функцией указать, ли
info
элементcontext
должен быть освобожден. Флаг установлен вtrue
при отказе,false
иначе.shouldFreeInfo
может бытьNULL
.Возвращаемое значение
Новые CFMachPort возражают или
NULL
при отказе. Объект CFMachPort имеет, и отправьте и получите права. Владение соблюдает Создать Правило.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Создает объект CFMachPort для существующего ранее порта собственного компонента Маха.
Объявление
Swift
func CFMachPortCreateWithPort(_
allocator
: CFAllocator!, _portNum
: mach_port_t, _callout
: CFMachPortCallBack, _context
: UnsafeMutablePointer<CFMachPortContext>, _shouldFreeInfo
: UnsafeMutablePointer<Boolean>) -> CFMachPort!Objective C
CFMachPortRef CFMachPortCreateWithPort ( CFAllocatorRef allocator, mach_port_t portNum, CFMachPortCallBack callout, CFMachPortContext *context, Boolean *shouldFreeInfo );
Параметры
allocator
Средство выделения для использования для выделения памяти для нового объекта. Передача
NULL
илиkCFAllocatorDefault
использовать текущее средство выделения по умолчанию.portNum
Порт собственного компонента Маха для использования.
callout
Когда сообщение получено на порту Маха, функция обратного вызова вызвала.
context
Структура, содержащая контекстную информацию для порта Маха. Функция копирует информацию из структуры, таким образом, память, которой указывают
context
не должен сохраняться вне вызова функции.shouldFreeInfo
Флаг, установленный функцией указать, ли
info
элементcontext
должен быть освобожден. Флаг установлен вtrue
при отказе или если объект CFMachPort уже существует дляportNum
,false
иначе.shouldFreeInfo
может бытьNULL
.Возвращаемое значение
Новые CFMachPort возражают или
NULL
при отказе. Если объект CFMachPort уже существует дляportNum
, функция возвращает существующий ранее объект вместо того, чтобы создать новый объект;context
иcallout
параметры проигнорированы в этом случае. Владение соблюдает Создать Правило.Обсуждение
Объект CFMachPort не берет полное владение отправления и получает права на порт Маха
portNum
. Это - ответственность вызывающей стороны освободить права порта Маха после того, как объект CFMachPort больше не будет необходим и будет лишен законной силы.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Лишает законной силы объект CFMachPort, мешая ему больше получать сообщения.
Объявление
Swift
func CFMachPortInvalidate(_
port
: CFMachPort!)Objective C
void CFMachPortInvalidate ( CFMachPortRef port );
Параметры
port
CFMachPort возражают для лишения законной силы.
Обсуждение
Лишение законной силы объекта CFMachPort предотвращает порт от когда-либо получения, больше обменивается сообщениями. Объект CFMachPort не освобожден, все же. Если порт не был уже лишен законной силы, функция обратного вызова аннулирования порта вызывается, если Вы были установлены с
CFMachPortSetInvalidationCallBack
.CFMachPortContext
info
информация дляport
если обратный вызов выпуска был указан в структуре контекста порта, также выпущен. Наконец, если источник цикла выполнения создавался дляport
, источник цикла выполнения лишен законной силы, также.Если базовый порт Маха уничтожается, объект CFMachPort автоматически лишен законной силы.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Создает объект CFRunLoopSource для объекта CFMachPort.
Объявление
Swift
func CFMachPortCreateRunLoopSource(_
allocator
: CFAllocator!, _port
: CFMachPort!, _order
: CFIndex) -> CFRunLoopSource!Objective C
CFRunLoopSourceRef CFMachPortCreateRunLoopSource ( CFAllocatorRef allocator, CFMachPortRef port, CFIndex order );
Параметры
allocator
Средство выделения для использования для выделения памяти для нового объекта. Передача
NULL
илиkCFAllocatorDefault
использовать текущее средство выделения по умолчанию.port
Порт Маха, для которого можно создать объект CFRunLoopSource.
order
Показатель приоритета, указывающий порядок, в котором обрабатываются выполненные источники цикла.
order
в настоящее время игнорируется CFMachPort выполненные источники цикла. Передача0
для этого значения.Возвращаемое значение
Новые CFRunLoopSource возражают для
port
. Владение соблюдает Создать Правило.Обсуждение
Источник цикла выполнения автоматически не добавляется к циклу выполнения. Для добавления источника к циклу выполнения использовать
CFRunLoopAddSource
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Когда объект CFMachPort лишен законной силы, устанавливает функцию обратного вызова, вызванную.
Объявление
Swift
func CFMachPortSetInvalidationCallBack(_
port
: CFMachPort!, _callout
: CFMachPortInvalidationCallBack)Objective C
void CFMachPortSetInvalidationCallBack ( CFMachPortRef port, CFMachPortInvalidationCallBack callout );
Параметры
port
CFMachPort возражают для изменения.
callout
Функция обратного вызова для вызова, когда
port
лишен законной силы. ПередачаNULL
удалить обратный вызов.Обсуждение
Если
port
уже недопустимо,callout
сразу вызывается.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает контекстную информацию для объекта CFMachPort.
Объявление
Swift
func CFMachPortGetContext(_
port
: CFMachPort!, _context
: UnsafeMutablePointer<CFMachPortContext>)Objective C
void CFMachPortGetContext ( CFMachPortRef port, CFMachPortContext *context );
Параметры
port
CFMachPort возражают для исследования.
context
Указатель тот, на структуру, в который контекстная информация для
port
должен быть скопирован. Возвращаемой информацией обычно является та же информация, которой Вы передалиCFMachPortCreate
илиCFMachPortCreateWithPort
при созданииport
. Однако, еслиCFMachPortCreateWithPort
возвращенный кэшируемый CFMachPort возражают вместо того, чтобы создать новый объект,context
заполнено информацией от исходного объекта CFMachPort вместо информации, которую Вы передали функции.Обсуждение
Номер версии контекста для объектов CFMachPort в настоящее время
0
. Прежде, чем вызвать эту функцию, необходимо инициализироватьversion
элементcontext
к0
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает функцию обратного вызова аннулирования для объекта CFMachPort.
Объявление
Swift
func CFMachPortGetInvalidationCallBack(_
port
: CFMachPort!) -> CFMachPortInvalidationCallBackObjective C
CFMachPortInvalidationCallBack CFMachPortGetInvalidationCallBack ( CFMachPortRef port );
Параметры
port
CFMachPort возражают для исследования.
Возвращаемое значение
Функция обратного вызова, вызванная, когда
port
лишен законной силы.NULL
если никакой обратный вызов не был установлен сCFMachPortSetInvalidationCallBack
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает порт собственного компонента Маха, представленный объектом CFMachPort.
Объявление
Swift
func CFMachPortGetPort(_
port
: CFMachPort!) -> mach_port_tObjective C
mach_port_t CFMachPortGetPort ( CFMachPortRef port );
Параметры
port
CFMachPort возражают для исследования.
Возвращаемое значение
Порт собственного компонента Маха, представленный
port
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает булево значение, указывающее, допустим ли объект CFMachPort и в состоянии получить сообщения.
Объявление
Swift
func CFMachPortIsValid(_
port
: CFMachPort!) -> BooleanObjective C
Boolean CFMachPortIsValid ( CFMachPortRef port );
Параметры
port
CFMachPort возражают для исследования.
Возвращаемое значение
true
еслиport
может использоваться для коммуникации, иначеfalse
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает идентификатор типа для CFMachPort непрозрачный тип.
Объявление
Swift
func CFMachPortGetTypeID() -> CFTypeID
Objective C
CFTypeID CFMachPortGetTypeID ( void );
Возвращаемое значение
Идентификатор типа для CFMachPort непрозрачный тип.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Обратный вызов, вызванный для обработки сообщения, полученного на объекте CFMachPort.
Объявление
Swift
typealias CFMachPortCallBack = CFunctionPointer<((CFMachPort!, UnsafeMutablePointer<Void>, CFIndex, UnsafeMutablePointer<Void>) -> Void)>
Objective C
typedef void (*CFMachPortCallBack) ( CFMachPortRef port, void *msg, CFIndex size, void *info );
Параметры
port
CFMachPort возражают на который сообщение
msg
был получен.msg
Сообщение Маха, полученное на
port
. Указатель к amach_msg_header_t
структура.size
Размер сообщения Маха
msg
, исключая метку конца сообщения.info
info
элементCFMachPortContext
структура, используемая при созданииport
.Обсуждение
Вы указываете этот обратный вызов при создании объекта CFMachPort с также
CFMachPortCreate
илиCFMachPortCreateWithPort
. Чтобы получить сообщения на объекте CFMachPort (и вызвать этот обратный вызов), необходимо создать источник цикла выполнения для порта и добавить его к циклу выполнения.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Когда объект CFMachPort лишен законной силы, обратный вызов вызвал.
Объявление
Swift
typealias CFMachPortInvalidationCallBack = CFunctionPointer<((CFMachPort!, UnsafeMutablePointer<Void>) -> Void)>
Objective C
typedef void (*CFMachPortInvalidationCallBack) ( CFMachPortRef port, void *info );
Параметры
port
Лишенный законной силы объект CFMachPort.
info
info
элементCFMachPortContext
структура, используемая при созданииport
.Обсуждение
Ваш обратный вызов должен освободить любые ресурсы, выделенные для
port
.Вы указываете этот обратный вызов с
CFMachPortSetInvalidationCallBack
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Структура, содержащая определенные с помощью программы данные и обратные вызовы, с которыми можно сконфигурировать поведение объекта CFMachPort.
Объявление
Swift
struct CFMachPortContext { 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 CFMachPortContext { CFIndex version; void *info; CFAllocatorRetainCallBack retain; CFAllocatorReleaseCallBack release; CFAllocatorCopyDescriptionCallBack copyDescription; }; typedef struct CFMachPortContext CFMachPortContext;
Поля
version
Номер версии структуры. Должен быть
0
.info
Произвольный указатель на определенные с помощью программы данные, которые могут быть связаны с объектом CFMachPort во время создания. Этот указатель передается всем обратным вызовам, определенным в контексте.
retain
Сохранить обратный вызов для Вашего определенного с помощью программы
info
указатель. Может бытьNULL
.release
Обратный вызов выпуска для Вашего определенного с помощью программы
info
указатель. Может бытьNULL
.copyDescription
Обратный вызов описания копии для Вашего определенного с помощью программы
info
указатель. Может бытьNULL
.Доступность
Доступный в OS X v10.0 и позже.
-
Ссылка на объект CFMachPort.
Объявление
Swift
typealias CFMachPortRef = CFMachPort
Objective C
typedef struct __CFMachPort *CFMachPortRef;
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.