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

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

Разработчик

Ссылка FSEvents

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

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

Ссылка FSEvents

Этот заголовок описывает API FSEvents. Этот API обеспечивает механизм для уведомления клиентов о каталогах, которые они должны повторно отсканировать для хранения их внутренних структур данных актуальными относительно истинного состояния файловой системы. (Например, когда файлы или каталоги создаются, изменили или удалили.) Это отправляет эти уведомления «оптом», возможно уведомляя клиент изменений в нескольких каталогах в единственном обратном вызове. При помощи API клиенты могут заметить такие изменения быстро, не будучи должен обратиться к рекурсивному опросу/сканированию файловой системы.

Когда содержание определенного каталога изменилось, во многом как kqueues API FSEvents позволяет приложению почти сразу найти. Однако в отличие от kqueues, API FSEvents позволяет приложению контролировать, целая иерархия файловой системы базировалась в указанном каталоге (и все еще получите точные уведомления на каталог) - чтобы сделать это с kqueues API потребовало бы, чтобы клиент контролировал каждый каталог индивидуально.

Клиенты могут зарегистрировать интерес к блоку иерархии файловой системы и получат обратные вызовы от их runloop каждый раз, когда событие имеет место, который изменяет файловую систему там. Обратный вызов укажет точный каталог, в котором событие имело место, таким образом, клиент только должен отсканировать тот каталог для обновленной информации, не все ее дочерние элементы. Клиенты могут предоставить параметр «задержки», говорящий, сколько времени ожидать после того, как событие имеет место прежде, чем передать его; это сокращает объем событий и сокращает шанс, что клиент будет видеть «промежуточное» состояние, как те, которые возникают при выполнении «безопасного сохранения» файла, создании пакета или загрузке файла через Safari.

Жизненный цикл FSEventStream состоит из этих этапов:

  1. FSEventStreamCreate () / FSEventStreamCreateRelativeToDevice ()-> Создает FSEventStream.

  2. FSEventStreamScheduleWithRunLoop ()-> Расписания FSEventStream на runloop, как CFRunLoopAddSource () делает для CFRunLoopSourceRef.

  3. Когда поток создавался, FSEventStreamStart ()-> Начинает получать события и обслуживать их от runloop клиента (s) использование обратного вызова, предоставленного клиентом. Если значение было предоставлено для sinceWhen параметра тогда, «исторические» события будут отправлены через Ваш обратный вызов сначала, то событие HistoryDone, то «современные» события будут отправлены на непрерывной основе (как будто Вы предоставили kFSEventStreamEventIdSinceNow для sinceWhen).

  4. FSEventStreamStop ()-> Остановки поток, гарантируя обратный вызов клиента не вызовут снова для этого потока. После остановки потока это может быть перезапущено беспрепятственно через FSEventStreamStart (), не пропуская событий.

  5. FSEventStreamInvalidate ()-> Лишает законной силы поток, как CFRunLoopSourceInvalidate () делает для CFRunLoopSourcRef.

  6. FSEventStreamRelease ()-> Декременты refcount на потоке (первоначально один и постепенно увеличенный через FSEventStreamRetain ()). Если refcount достигает нуля, поток освобожден.

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

Когда поток создавался, FSEventStreamGetLatestEventId ()-> Первоначально, это возвращает значение sinceWhen, предоставленное; после того это обновляется с идентификатором события с самым высоким номером, упомянутым в текущем пакете событий прежде, чем вызвать обратный вызов клиента. Клиенты могут постоянно хранить это значение, пока они также хранят UUID для устройства (полученный через FSEventsCopyUUIDForDevice ()). Клиенты могут тогда позже предоставить этот идентификатор события как sinceWhen параметр к FSEventStreamCreateRelativeToDevice (), пока его соответствия UUID, что Вы сохранили. Это работает, потому что служба FSEvents хранит события в персистентной, базе данных на объем. В этом отношении поток идентификаторов события действует как глобальная переменная, часы в масштабе всей системы, но переносы никакое отношение к любому определенному timebase.

FSEventStreamFlushAsync ()-> Запросы, что fseventsd демон отправляет любые события, он уже буферизовал (через параметр задержки к одному из FSEventStreamCreate... () функции). Это происходит асинхронно; клиенты не будут получать все обратные вызовы к тому времени, когда этот вызов возвращается к ним.

FSEventStreamFlushSync ()-> Запросы, что fseventsd демон отправляет любые события, он уже буферизовал (через параметр задержки к одному из FSEventStreamCreate... () функции). Тогда выполняет runloop в его частном режиме до всех событий, произошедших, были сообщены (через клиентский обратный вызов). Это происходит синхронно; клиенты получат все обратные вызовы к тому времени, когда этот вызов возвращается к ним.

Когда поток создавался с FSEventStreamCreateRelativeToDevice (), иначе 0, FSEventStreamGetDeviceBeingWatched ()-> Предоставил значение dev_t.

Когда поток создавался с одним из FSEventStreamCreate... () функции, FSEventStreamCopyPathsBeingWatched ()-> Предоставил пути.

Вызовы, которые могут быть выполнены без потока:

FSEventsCopyUUIDForDevice ()-> Получает UUID, однозначно определяющий базу данных FSEvents для того объема. Если база данных будет отброшена тогда, то ее замена будет иметь различный UUID так, чтобы клиенты были в состоянии обнаружить эту ситуацию и избежать пытаться использовать идентификаторы события, которые они сохранили как sinceWhen параметр к FSEventStreamCreate... () функции.

FSEventsGetCurrentEventId ()-> Получает последний раз сгенерированный идентификатор события, в масштабе всей системы (не только для одного потока).

FSEventsGetLastEventIdForDeviceBeforeTime ()-> Получает последний идентификатор события для данного устройства, возвращенного перед данным временем. Это консервативно в том смысле, что, если Вы тогда используете возвращенный идентификатор события в качестве sinceWhen параметра FSEventStreamCreateRelativeToDevice (), что Вы не пропустите событий, произошедших с этого времени. С другой стороны, Вы могли бы получить некоторые (безопасные) дополнительные события.

FSEventsPurgeEventsForDeviceUpToEventId ()-> Чистки старые события от персистентной базы данных на объем сохраняется службой. Можно объединить это с FSEventsGetLastEventIdForDeviceBeforeTime (). Может только быть вызван полностью пользователем.

Включенные заголовки

Функции

  • Объявление

    Swift

    func FSEventsCopyUUIDForDevice(_ dev: dev_t) -> Unmanaged<CFUUID>!

    Objective C

    CFUUIDRef FSEventsCopyUUIDForDevice ( dev_t dev );

    Параметры

    dev

    dev_t устройства, для которого Вы хотите получить UUID.

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

    Если никакой UUID не доступен (например, на устройстве только для чтения), UUID связался с потоком событий на этом устройстве или NULL. UUID сохранен на самом устройстве и перемещается с ним, даже когда устройство присоединено к различным компьютерам. Владение соблюдает Правило Копии.

    Обсуждение

    Получает UUID, связанный с устройством или NULL если не возможный (например, на устройстве только для чтения). (Не-NULL) UUID однозначно определяет данный поток FSEvents. Если этот (не-NULL) UUID отличается, чем тот, который Вы сохранили от предыдущего выполнения тогда, поток событий отличается (например, потому что FSEvents были очищены, потому что диск был стерт, или потому что счетчик идентификатора события повторился назад для обнуления).

    Возвращаемое значение NULL указывает, что «исторические» события не доступны, т.е. Вы не должны предоставлять значение «sinceWhen» к FSEventStreamCreate... () кроме kFSEventStreamEventIdSinceNow.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventsGetCurrentEventId() -> FSEventStreamEventId

    Objective C

    FSEventStreamEventId FSEventsGetCurrentEventId ( void );

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

    Идентификатор события нового события сгенерирован системой.

    Обсуждение

    Выбирает последний раз сгенерированный идентификатор события, в масштабе всей системы (не только для одного потока). Циклическим сульфинатом это возвращается к Вашему приложению, еще более новые события, возможно, были уже сгенерированы.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventsGetLastEventIdForDeviceBeforeTime(_ dev: dev_t, _ time: CFAbsoluteTime) -> FSEventStreamEventId

    Objective C

    FSEventStreamEventId FSEventsGetLastEventIdForDeviceBeforeTime ( dev_t dev, CFAbsoluteTime time );

    Параметры

    dev

    dev_t устройства.

    time

    Время как CFAbsoluteTime, значение которого является числом секунд начиная с Яна 1, 1970 (т.е. posix разрабатывают time_t).

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

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

    Обсуждение

    Получает последний идентификатор события для данного устройства, возвращенного перед данным временем. Это консервативно в том смысле, что, если Вы тогда используете возвращенный идентификатор события в качестве sinceWhen параметра FSEventStreamCreateRelativeToDevice (), что Вы не пропустите событий, произошедших с этого времени. С другой стороны, Вы могли бы получить некоторые (безопасные) дополнительные события.

    Остерегайтесь: существуют вещи, которые могут заставить этому не удаваться быть точными. Например, кто-то мог бы изменить часы системы (или назад или вперед). Или внешний диск мог бы использоваться в различных системах без отлично синхронизируемых часов.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventsPurgeEventsForDeviceUpToEventId(_ dev: dev_t, _ eventId: FSEventStreamEventId) -> Boolean

    Objective C

    Boolean FSEventsPurgeEventsForDeviceUpToEventId ( dev_t dev, FSEventStreamEventId eventId );

    Параметры

    dev

    dev_t устройства.

    eventId

    Идентификатор события.

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

    Истина, если это успешно выполняется, иначе Ложь, если это перестало работать.

    Обсуждение

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

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamCopyDescription(_ streamRef: ConstFSEventStreamRef) -> Unmanaged<CFString>!

    Objective C

    CFStringRef FSEventStreamCopyDescription ( ConstFSEventStreamRef streamRef );

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

    CFStringRef, содержащий описание предоставленного потока. Владение соблюдает правило Копии.

    Обсуждение

    Возвращает CFStringRef, содержащий описание предоставленного потока. Для отладки только.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamCopyPathsBeingWatched(_ streamRef: ConstFSEventStreamRef) -> Unmanaged<CFArray>!

    Objective C

    CFArrayRef FSEventStreamCopyPathsBeingWatched ( ConstFSEventStreamRef streamRef );

    Параметры

    streamRef

    Допустимый поток.

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

    Когда поток создавался, CFArray CFStringRefs, соответствующего тем, предоставил. Владение соблюдает правило Копии.

    Обсуждение

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

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamCreate(_ allocator: CFAllocator!, _ callback: FSEventStreamCallback, _ context: UnsafeMutablePointer<FSEventStreamContext>, _ pathsToWatch: CFArray!, _ sinceWhen: FSEventStreamEventId, _ latency: CFTimeInterval, _ flags: FSEventStreamCreateFlags) -> FSEventStreamRef

    Objective C

    FSEventStreamRef FSEventStreamCreate ( CFAllocatorRef allocator, FSEventStreamCallback callback, FSEventStreamContext *context, CFArrayRef pathsToWatch, FSEventStreamEventId sinceWhen, CFTimeInterval latency, FSEventStreamCreateFlags flags );

    Параметры

    allocator

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

    callback

    FSEventStreamCallback, который вызовут, когда события FS будут иметь место.

    context

    Указатель на структуру FSEventStreamContext клиент хочет связаться с этим потоком. Его поля копируются в сам поток, таким образом, его память может быть выпущена после того, как поток создается. Передача NULL позволяется и имеет тот же эффект как передача структуры, поля которой все обнуляются.

    pathsToWatch

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

    sinceWhen

    Служба предоставит события, произошедшие после данного идентификатора события. Для выяснения события «с тех пор теперь» передают постоянный kFSEventStreamEventIdSinceNow. Часто, клиенты предоставят FSEventStreamEventId с самым высоким номером, который они получили в обратном вызове, который они могут получить через FSEventStreamGetLatestEventId () средство доступа. Не передавайте нуль для sinceWhen, если Вы не хотите получить события для каждого каталога, измененного начиная с «начало времени» - маловероятный сценарий.

    latency

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

    flags

    Флаги, изменяющие поведение создаваемого потока. Посмотрите FSEventStreamCreateFlags.

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

    Допустимый FSEventStreamRef.

    Обсуждение

    Создает новый объект потока событий FS с данными параметрами. Чтобы начать получать обратные вызовы, необходимо также вызвать FSEventStreamScheduleWithRunLoop () и FSEventStreamStart ().

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamCreateRelativeToDevice(_ allocator: CFAllocator!, _ callback: FSEventStreamCallback, _ context: UnsafeMutablePointer<FSEventStreamContext>, _ deviceToWatch: dev_t, _ pathsToWatchRelativeToDevice: CFArray!, _ sinceWhen: FSEventStreamEventId, _ latency: CFTimeInterval, _ flags: FSEventStreamCreateFlags) -> FSEventStreamRef

    Objective C

    FSEventStreamRef FSEventStreamCreateRelativeToDevice ( CFAllocatorRef allocator, FSEventStreamCallback callback, FSEventStreamContext *context, dev_t deviceToWatch, CFArrayRef pathsToWatchRelativeToDevice, FSEventStreamEventId sinceWhen, CFTimeInterval latency, FSEventStreamCreateFlags flags );

    Параметры

    allocator

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

    callback

    FSEventStreamCallback, который вызовут, когда события FS будут иметь место.

    context

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

    deviceToWatch

    dev_t, соответствующий устройству, из которого Вы хотите получить уведомления. dev_t совпадает с st_dev полем от структуры статистики файла на том устройстве или f_fsid [0] поле statfs структуры. Если значение dev является нулем, это проигнорировано.

    pathsToWatchRelativeToDevice

    CFArray CFStringRefs, каждый указывающий относительный путь к каталогу на устройстве идентифицируется dev параметром. Пути должны быть относительно корня устройства. Например, если объем «MyData» смонтирован в «/volumes/mydata», и Вы хотите наблюдать «/volumes/mydata/pictures/july», указать строку пути «Изображений/Июля». Наблюдать, что корень объема передает путь «» (пустая строка).

    sinceWhen

    Служба предоставит события, произошедшие после данного идентификатора события. Для выяснения события «с тех пор теперь» передают постоянный kFSEventStreamEventIdSinceNow. Часто, клиенты предоставят FSEventStreamEventId с самым высоким номером, который они получили в обратном вызове, который они могут получить через FSEventStreamGetLatestEventId () средство доступа. Не передавайте нуль для sinceWhen, если Вы не хотите получить события для каждого каталога, измененного начиная с «начало времени» - маловероятный сценарий.

    latency

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

    flags

    Флаги, изменяющие поведение создаваемого потока. Посмотрите FSEventStreamCreateFlags.

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

    Допустимый FSEventStreamRef.

    Обсуждение

    Создает новый объект потока событий FS для определенного устройства с данными параметрами. Чтобы начать получать обратные вызовы, необходимо также вызвать FSEventStreamScheduleWithRunLoop () и FSEventStreamStart ().

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamFlushAsync(_ streamRef: FSEventStreamRef) -> FSEventStreamEventId

    Objective C

    FSEventStreamEventId FSEventStreamFlushAsync ( FSEventStreamRef streamRef );

    Параметры

    streamRef

    Допустимый поток.

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

    Если никакие события не были поставлены в очередь для этого потока, самый большой ID события любого события, когда-либо поставленного в очередь для этого потока, иначе обнулите.

    Обсуждение

    Просит служба FS Events спугивать любые события, произошедшие, но еще не поставленные вследствие параметра задержки, предоставленного, когда создавался поток. Это сбрасывание происходит асинхронно - не ожидают, что события будут уже поставлены к этому времени этот вызов возвраты.

    FSEventStreamFlushAsync () можно только вызвать после того, как поток был запущен через FSEventStreamStart ().

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamFlushSync(_ streamRef: FSEventStreamRef)

    Objective C

    void FSEventStreamFlushSync ( FSEventStreamRef streamRef );

    Параметры

    streamRef

    Допустимый поток.

    Обсуждение

    Просит служба FS Events спугивать любые события, произошедшие, но еще не поставленные вследствие параметра задержки, предоставленного, когда создавался поток. Это сбрасывание происходит синхронно - к этому времени этот вызов возвраты, Ваш обратный вызов будет вызван для каждого события, уже произошедшего в то время, когда Вы выполнили этот вызов.

    FSEventStreamFlushSync () можно только вызвать после того, как поток был запущен через FSEventStreamStart ().

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamGetDeviceBeingWatched(_ streamRef: ConstFSEventStreamRef) -> dev_t

    Objective C

    dev_t FSEventStreamGetDeviceBeingWatched ( ConstFSEventStreamRef streamRef );

    Параметры

    streamRef

    Допустимый поток.

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

    dev_t для относительного устройством потока, иначе 0.

    Обсуждение

    Когда поток создавался через FSEventStreamCreateRelativeToDevice (), иначе 0, выбирает dev_t, предоставленный.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamGetLatestEventId(_ streamRef: ConstFSEventStreamRef) -> FSEventStreamEventId

    Objective C

    FSEventStreamEventId FSEventStreamGetLatestEventId ( ConstFSEventStreamRef streamRef );

    Параметры

    streamRef

    Допустимый поток.

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

    sinceWhen атрибут потока.

    Обсуждение

    Выбирает sinceWhen свойство потока. После получения события (и прежде, чем вызвать обратный вызов клиента) этот атрибут обновляется к идентификатору события с самым высоким номером, упомянутому в конечном счете.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamInvalidate(_ streamRef: FSEventStreamRef)

    Objective C

    void FSEventStreamInvalidate ( FSEventStreamRef streamRef );

    Параметры

    streamRef

    Допустимый поток.

    Обсуждение

    Лишает законной силы поток, как CFRunLoopSourceInvalidate () делает для CFRunLoopSourceRef. Это будет не запланировано от любого runloops или диспетчеризирует очереди, на которые это было запланировано.

    FSEventStreamInvalidate () можно только вызвать на потоке после вызова FSEventStreamScheduleWithRunLoop () или FSEventStreamSetDispatchQueue ().

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamRelease(_ streamRef: FSEventStreamRef)

    Objective C

    void FSEventStreamRelease ( FSEventStreamRef streamRef );

    Параметры

    streamRef

    Допустимый поток.

    Обсуждение

    Постепенно уменьшает refcount потока. refcount первоначально один и постепенно увеличивается через FSEventStreamRetain (). Если refcount достигает нуля тогда, поток освобожден.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamScheduleWithRunLoop(_ streamRef: FSEventStreamRef, _ runLoop: CFRunLoop!, _ runLoopMode: CFString!)

    Objective C

    void FSEventStreamScheduleWithRunLoop ( FSEventStreamRef streamRef, CFRunLoopRef runLoop, CFStringRef runLoopMode );

    Параметры

    streamRef

    Допустимый поток.

    runLoop

    Цикл выполнения, на который можно запланировать поток.

    runLoopMode

    Режим цикла выполнения, на который можно запланировать поток.

    Обсуждение

    Эта функция планирует поток на указанный цикл выполнения, как CFRunLoopAddSource () делает для CFRunLoopSourceRef. Вызывающая сторона ответственна за обеспечение, что поток планируется по крайней мере на один выполненный цикл и что выполняется по крайней мере один из циклов выполнения, на которые планируется поток.

    Чтобы начать получать события на потоке, вызовите FSEventStreamStart ().

    Для удаления потока из циклов выполнения, на которые это было запланировано вызовите FSEventStreamUnscheduleFromRunLoop () или FSEventStreamInvalidate ().

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamSetDispatchQueue(_ streamRef: FSEventStreamRef, _ q: dispatch_queue_t!)

    Objective C

    void FSEventStreamSetDispatchQueue ( FSEventStreamRef streamRef, dispatch_queue_t q );

    Параметры

    streamRef

    Допустимый поток.

    q

    Очередь отгрузки для использования для получения событий (или NULL к прекратить получать события от потока).

    Обсуждение

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

    Если будет проблема, планируя поток на очередь, то ошибка будет возвращена, когда Вы попытаетесь Запустить поток.

    Чтобы начать получать события на потоке, вызовите FSEventStreamStart ().

    Для удаления потока из очереди, на которую это было запланировано вызовите FSEventStreamSetDispatchQueue () с параметром очереди NULL или вызовите FSEventStreamInvalidate (), который сделает ту же вещь.Примечание: необходимо в конечном счете вызвать FSEventStreamInvalidate (), и это - ошибка вызвать FSEventStreamInvalidate (), не имея потока, или запланированного на runloop или очередь отгрузки, не устанавливайте очередь отгрузки в NULL прежде, чем вызвать FSEventStreamInvalidate ().

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamShow(_ streamRef: ConstFSEventStreamRef)

    Objective C

    void FSEventStreamShow ( ConstFSEventStreamRef streamRef );

    Параметры

    streamRef

    Допустимый поток.

    Обсуждение

    Распечатывает описание предоставленного потока к stderr. Для отладки только.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamStart(_ streamRef: FSEventStreamRef) -> Boolean

    Objective C

    Boolean FSEventStreamStart ( FSEventStreamRef streamRef );

    Параметры

    streamRef

    Допустимый поток.

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

    Истина, если это успешно выполняется, иначе Ложь, если это перестало работать. Это должно всегда успешно выполняться, но в конечном счете это не делает тогда Вашего кода, должен отступить к выполнению рекурсивных сканирований каталогов интереса как надлежащий.

    Обсуждение

    Попытки зарегистрироваться в службе FS Events для получения событий на параметры в потоке.

    FSEventStreamStart () можно только вызвать, как только поток был запланирован по крайней мере на один runloop через FSEventStreamScheduleWithRunLoop ().

    После того, как запущенный, поток может быть остановлен через FSEventStreamStop ().

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamStop(_ streamRef: FSEventStreamRef)

    Objective C

    void FSEventStreamStop ( FSEventStreamRef streamRef );

    Параметры

    streamRef

    Допустимый поток.

    Обсуждение

    Нерегистры со службой FS Events. Клиентский обратный вызов не вызовут для этого потока, в то время как это останавливается.

    Если поток был запущен через FSEventStreamStart (), FSEventStreamStop () можно только вызвать.

    После того, как остановленный, поток может быть перезапущен через FSEventStreamStart (), в которой точке это продолжит получать события из того, где это кончило («sinceWhen»).

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    func FSEventStreamUnscheduleFromRunLoop(_ streamRef: FSEventStreamRef, _ runLoop: CFRunLoop!, _ runLoopMode: CFString!)

    Objective C

    void FSEventStreamUnscheduleFromRunLoop ( FSEventStreamRef streamRef, CFRunLoopRef runLoop, CFStringRef runLoopMode );

    Параметры

    streamRef

    Допустимый поток.

    runLoop

    Цикл выполнения, от которого можно не запланировать поток.

    runLoopMode

    Режим цикла выполнения, от которого можно не запланировать поток.

    Обсуждение

    Эта функция удаляет поток из указанного цикла выполнения, как CFRunLoopRemoveSource () делает для CFRunLoopSourceRef.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

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

  • Объявление

    Swift

    typealias FSEventStreamCallback = CFunctionPointer<((ConstFSEventStreamRef, UnsafeMutablePointer<Void>, UInt, UnsafeMutablePointer<Void>, UnsafePointer<FSEventStreamEventFlags>, UnsafePointer<FSEventStreamEventId>) -> Void)>

    Objective C

    typedef void ( *FSEventStreamCallback )( ConstFSEventStreamRef streamRef, void *clientCallBackInfo, size_t numEvents, void *eventPaths, const FSEventStreamEventFlags eventFlags[], const FSEventStreamEventId eventIds[]);

    Параметры

    streamRef

    Поток, для которого событие имело место.

    clientCallBackInfo

    Информационное поле, предоставленное в контексте, когда создавался этот поток.

    numEvents

    Число событий, сообщаемых в этом обратном вызове. Каждый из массивов (eventPaths, eventFlags, eventIds) будет иметь это многими элементами.

    eventPaths

    Массив путей к каталогам, в которых событие имело место.

    Тип этого параметра зависит от флагов, переданных FSEventStreamCreate... (). Если kFSEventStreamCreateFlagUseCFTypes был установлен, то это будет CFArrayRef, содержащий объекты CFStringRef (на CFStringCreateWithFileSystemRepresentation ()). Владение соблюдает Получить правило, и они будут выпущены платформой после Ваших возвратов обратного вызова. Если kFSEventStreamCreateFlagUseCFTypes не был установлен, то платформа передаст Ваш обратный вызов сырые данные C массив необработанных струн до, которые будут освобождены платформой после Ваших возвратов обратного вызова.

    Если эфир этих флагов установлен для события, путь мог бы быть «/»: kFSEventStreamEventFlagUserDropped, kFSEventStreamEventFlagKernelDropped.

    eventFlags

    Массив слов флага, соответствующих путям в eventPaths параметре. Если никакие флаги не установлены, то было некоторое изменение в каталоге в определенном пути, предоставленном в этом случае. Посмотрите FSEventStreamEventFlags.

    eventIds

    Массив FSEventStreamEventIds, соответствующего путям в eventPaths параметре.

    Каждый идентификатор события прибывает из нового события, сообщаемого в соответствующем каталоге, названном в eventPaths параметре. Идентификаторы события все прибывают из единственного глобального источника. Они, как гарантируют, всегда увеличатся, обычно в стремительно, даже через системные перезагрузки и переместят диски от одной машины до другого. Прежде, чем вызвать Ваш обратный вызов Ваш поток обновляется так, чтобы, вызывая средство доступа FSEventStreamGetLatestEventId () возвратился, самое большое из значений передало в eventIds параметре; если необходимо было прекратить обрабатывать события от этого потока после этого обратного вызова и продолжить обрабатывать их позже от недавно создаваемого FSEventStream, это - значение, Вы передали бы для sinceWhen параметра FSEventStreamCreate... () функцию.

    Обсуждение

    Это - тип функции обратного вызова, предоставленной клиентом при создании нового потока. Этот обратный вызов вызывается службой от runloop клиента (s), когда события имеют место на параметры, указанные, когда создавался поток.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

Типы данных

См. Обзор для документации уровня заголовка.

  • Объявление

    Swift

    typealias ConstFSEventStreamRef = COpaquePointer

    Objective C

    typedef const struct __FSEventStream* ConstFSEventStreamRef;

    Обсуждение

    Это - тип ссылки на постоянный FSEventStream.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    typealias FSEventStreamCreateFlags = UInt32

    Objective C

    typedef UInt32 FSEventStreamCreateFlags;

    Обсуждение

    Флаги, которые могут быть переданы FSEventStreamCreate... () функции для изменения поведения создаваемого потока.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    typealias FSEventStreamEventFlags = UInt32

    Objective C

    typedef UInt32 FSEventStreamEventFlags;

    Обсуждение

    Флаги, которые могут быть переданы Ваша функция FSEventStreamCallback.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    typealias FSEventStreamEventId = UInt64

    Objective C

    typedef UInt64 FSEventStreamEventId;

    Обсуждение

    Идентификаторы события, которые могут быть переданы FSEventStreamCreate... () функции и FSEventStreamCallback (). Они монотонно увеличиваются на систему, даже через перезагрузки и приходящие и уходящие диски. Они не переносят отношения ни к каким определенным часам или timebase.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    typealias FSEventStreamRef = COpaquePointer

    Objective C

    typedef struct __FSEventStream* FSEventStreamRef;

    Обсуждение

    Это - тип ссылки на FSEventStream.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Objective C

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

    Поля

    version

    В настоящее время единственное допустимое значение является нулем.

    info

    Произвольное определенное клиентами значение (например, указатель), чтобы быть связанным с потоком и переданным обратному вызову, когда это вызывается. Если ненулевое значение будет предоставлено для сохранить обратного вызова, то платформа будет использовать его для сохранения этого значения. Если ненулевое значение будет предоставлено для обратного вызова выпуска тогда, когда поток будет освобожден, то это будет использоваться для выпуска этого значения. Это может быть NULL.

    retain

    Используемый обратный вызов сохраняет информационный указатель. Это может быть NULL.

    release

    Используемый выпуск a обратного вызова сохраняет на информационном указателе. Это может быть NULL.

    copyDescription

    Обратный вызов раньше создавал представление описательной строки информационного указателя (или данные, на которые указывает информационный указатель) для отладки целей. Это может быть NULL.

    Обсуждение

    Структура, содержащая предоставленные клиентами данные (и обратные вызовы для управления этим), который должен быть связан с недавно создаваемым потоком.

Константы

См. Обзор для документации уровня заголовка.

  • Объявление

    Swift

    var kFSEventStreamCreateFlagNone: Int { get } var kFSEventStreamCreateFlagUseCFTypes: Int { get } var kFSEventStreamCreateFlagNoDefer: Int { get } var kFSEventStreamCreateFlagWatchRoot: Int { get } var kFSEventStreamCreateFlagIgnoreSelf: Int { get } var kFSEventStreamCreateFlagFileEvents: Int { get }

    Objective C

    enum { kFSEventStreamCreateFlagNone = 0x00000000, kFSEventStreamCreateFlagUseCFTypes = 0x00000001, kFSEventStreamCreateFlagNoDefer = 0x00000002, kFSEventStreamCreateFlagWatchRoot = 0x00000004, kFSEventStreamCreateFlagIgnoreSelf = 0x00000008, kFSEventStreamCreateFlagFileEvents = 0x00000010 };

    Константы

    • kFSEventStreamCreateFlagNone

      kFSEventStreamCreateFlagNone

      Значение по умолчанию.

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

    • kFSEventStreamCreateFlagUseCFTypes

      kFSEventStreamCreateFlagUseCFTypes

      Платформа вызовет Вашу функцию обратного вызова с типами CF, а не сырыми данными C типы (т.е. CFArrayRef CFStringRefs, а не сырые данные C массив необработанных указателей струны до). Посмотрите FSEventStreamCallback.

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

    • kFSEventStreamCreateFlagNoDefer

      kFSEventStreamCreateFlagNoDefer

      Влияет на значение параметра задержки. При указании этого флага и больше, чем секунды задержки протекли начиная с последнего события приложение сразу получит событие. Поставка события сбрасывает таймер задержки, и дальнейшие события будут поставлены после того, как секунды задержки протекли. Этот флаг полезен для приложений, которые являются интерактивными и хотят реагировать сразу на изменения, но избегать затопляться уведомлениями, когда изменения являются occurringin быстрой преемственностью. Если Вы не указываете этот флаг, то, когда событие имеет место после периода никаких событий, таймер задержки запущен. Любые события, происходящие в течение следующих секунд задержки, будут поставлены как одна группа (включая то первое событие). Поставка группы событий сбрасывает таймер задержки, и дальнейшие события будут поставлены после секунд задержки. Это - поведение по умолчанию и более подходяще для фона, демона или приложений пакетной обработки.

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

    • kFSEventStreamCreateFlagWatchRoot

      kFSEventStreamCreateFlagWatchRoot

      Уведомления запроса об изменениях вдоль пути к пути (ям) Вы смотрите. Например, с этим флагом, если бы Вы наблюдаете «/foo/bar» и он переименован к «/foo/bar.old», Вы получили бы событие RootChanged. Если каталог «/foo» был переименован, то же является истиной. Событие, которое Вы получаете, является специальным мероприятием: путь для события является первоначальным трактом, который Вы указали, флаг kFSEventStreamEventFlagRootChanged установлен, и идентификатор события является нулем. События RootChanged полезны, чтобы указать, что необходимо повторно отсканировать определенную иерархию, потому что она изменилась полностью (в противоположность вещам в нем изменение). Если Вы хотите отследить текущее расположение каталога, лучше открывать каталог прежде, чем создать поток так, чтобы Вы имели дескриптор файла для него и могли выпустить F_GETPATH fcntl () для нахождения текущего пути.

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

    • kFSEventStreamCreateFlagIgnoreSelf

      kFSEventStreamCreateFlagIgnoreSelf

      Не отправляйте события, инициированные текущим процессом. Это полезно для сокращения объема отправляющихся событий. Если Ваш процесс мог бы изменить иерархию файловой системы ниже контролируемого пути (ей), только полезно.Примечание: это не имеет никакого эффекта на исторические события, т.е. поставленных перед событием сигнальной метки HistoryDone.

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

    • kFSEventStreamCreateFlagFileEvents

      kFSEventStreamCreateFlagFileEvents

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

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

    Обсуждение

    Флаги, которые могут быть переданы FSEventStreamCreate... () функции для изменения поведения создаваемого потока.

  • Объявление

    Swift

    var kFSEventStreamEventFlagNone: Int { get } var kFSEventStreamEventFlagMustScanSubDirs: Int { get } var kFSEventStreamEventFlagUserDropped: Int { get } var kFSEventStreamEventFlagKernelDropped: Int { get } var kFSEventStreamEventFlagEventIdsWrapped: Int { get } var kFSEventStreamEventFlagHistoryDone: Int { get } var kFSEventStreamEventFlagRootChanged: Int { get } var kFSEventStreamEventFlagMount: Int { get } var kFSEventStreamEventFlagUnmount: Int { get }

    Objective C

    enum { kFSEventStreamEventFlagNone = 0x00000000, kFSEventStreamEventFlagMustScanSubDirs = 0x00000001, kFSEventStreamEventFlagUserDropped = 0x00000002, kFSEventStreamEventFlagKernelDropped = 0x00000004, kFSEventStreamEventFlagEventIdsWrapped = 0x00000008, kFSEventStreamEventFlagHistoryDone = 0x00000010, kFSEventStreamEventFlagRootChanged = 0x00000020, kFSEventStreamEventFlagMount = 0x00000040, kFSEventStreamEventFlagUnmount = 0x00000080 , /* These flags are only set if you specified the FileEvents */ /* flags when creating the stream.*/ kFSEventStreamEventFlagItemCreated = 0x00000100, kFSEventStreamEventFlagItemRemoved = 0x00000200, kFSEventStreamEventFlagItemInodeMetaMod = 0x00000400, kFSEventStreamEventFlagItemRenamed = 0x00000800, kFSEventStreamEventFlagItemModified = 0x00001000, kFSEventStreamEventFlagItemFinderInfoMod = 0x00002000, kFSEventStreamEventFlagItemChangeOwner = 0x00004000, kFSEventStreamEventFlagItemXattrMod = 0x00008000, kFSEventStreamEventFlagItemIsFile = 0x00010000, kFSEventStreamEventFlagItemIsDir = 0x00020000, kFSEventStreamEventFlagItemIsSymlink = 0x00040000 };

    Константы

    • kFSEventStreamEventFlagNone

      kFSEventStreamEventFlagNone

      Было некоторое изменение в каталоге в определенном пути, предоставленном в этом случае.

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

    • kFSEventStreamEventFlagMustScanSubDirs

      kFSEventStreamEventFlagMustScanSubDirs

      Ваше приложение должно повторно отсканировать не только каталог, данный в конечном счете, но и все его дочерние элементы, рекурсивно. Это может произойти, если была проблема, посредством чего события были объединены иерархически. Например, событие в/Users/jsmith/Music и событие в/Users/jsmith/Pictures могли бы быть объединены в событие с этим набором флага и путем =/Users/jsmith. Если этот флаг установлен, можно быть в состоянии понять то, произошло ли узкое место в ядре (менее вероятно) или в клиенте (более вероятно) путем проверки на присутствие информационных флагов kFSEventStreamEventFlagUserDropped или kFSEventStreamEventFlagKernelDropped.

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

    • kFSEventStreamEventFlagUserDropped

      kFSEventStreamEventFlagUserDropped

      kFSEventStreamEventFlagUserDropped или флаги kFSEventStreamEventFlagKernelDropped могут быть установлены в дополнение к флагу kFSEventStreamEventFlagMustScanSubDirs указать, что проблема произошла в буферизации событий (определенный набор флага указывает, где проблема произошла), и что клиент должен сделать полное сканирование любых каталогов (и их подкаталоги, рекурсивно) быть контролируемым этим потоком. Если Вы попросили контролировать разнообразные пути с этим потоком тогда, Вы будете уведомлены обо всех них. Ваша потребность кода только проверяет на флаг kFSEventStreamEventFlagMustScanSubDirs; эти флаги (если есть) только предоставляют информацию, чтобы помочь Вам диагностировать проблему.

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

    • kFSEventStreamEventFlagKernelDropped

      kFSEventStreamEventFlagKernelDropped

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

    • kFSEventStreamEventFlagEventIdsWrapped

      kFSEventStreamEventFlagEventIdsWrapped

      Если kFSEventStreamEventFlagEventIdsWrapped установлен, это означает 64-разрядный перенесенный счетчик идентификатора события. В результате ранее выпущенный идентификатор события является больше не действительными параметрами за sinceWhen параметр FSEventStreamCreate... () функции.

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

    • kFSEventStreamEventFlagHistoryDone

      kFSEventStreamEventFlagHistoryDone

      Обозначает событие сигнальной метки, отправленное для маркировки конца «исторических» событий, отправленных в результате указания значения sinceWhen в FSEventStreamCreate... () вызов, создавший этот поток событий. (Это не будет отправлено, если kFSEventStreamEventIdSinceNow был передан для sinceWhen.) После вызова обратного вызова клиента со всеми «историческими» событиями, произошедшими до настоящего времени, обратный вызов клиента будет вызван с событием, где установлен флаг kFSEventStreamEventFlagHistoryDone. Клиент должен проигнорировать путь, предоставленный в этом обратном вызове.

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

    • kFSEventStreamEventFlagRootChanged

      kFSEventStreamEventFlagRootChanged

      Обозначает специальное мероприятие, отправленное, когда существует изменение в одном из каталогов вдоль пути к одному из каталогов, которые Вы попросили смотреть. Когда этот флаг установлен, идентификатор события является нулем, и путь соответствует одному из путей, которые Вы попросили наблюдать (в частности, тот, изменившийся). Путь больше может не существовать, потому что он или один из его родителей был удален или переименован. События с этим набором флага будут только отправлены, если Вы передали флаг kFSEventStreamCreateFlagWatchRoot FSEventStreamCreate... () при создании потока.

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

    • kFSEventStreamEventFlagMount

      kFSEventStreamEventFlagMount

      Когда объем смонтирован под одним из контролируемых путей, обозначает специальное мероприятие, отправленное. Путь в конечном счете является путем к недавно смонтированному объему. Вы получите одно из этих уведомлений для каждого объема, монтируют событие в ядре (независимый от DiskArbitration). Остерегайтесь этого, недавно смонтированный объем мог содержать произвольно большую иерархию каталогов. Избегите ловушек как инициирование рекурсивного сканирования нелокальной файловой системы, которую можно обнаружить путем проверки на отсутствие флага MNT_LOCAL в f_flags, возвращенном statfs (). Также знайте о флаге MNT_DONTBROWSE, установленном для объемов, которые не должны быть выведены на экран элементами пользовательского интерфейса.

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

    • kFSEventStreamEventFlagUnmount

      kFSEventStreamEventFlagUnmount

      Когда объем размонтирован под одним из контролируемых путей, обозначает специальное мероприятие, отправленное. Путь в конечном счете является путем к каталогу, из которого был размонтирован объем. Вы получите одно из этих уведомлений для каждого события размонтирования объема в ядре. Это не замена для уведомлений, предоставленных платформой DiskArbitration; Вы только уведомляетесь после того, как размонтирование произошло. Остерегайтесь то размонтирование объема могло раскрыть произвольно большую иерархию каталогов, несмотря на то, что OS X никогда не делает это.

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

    Обсуждение

    Флаги, которые могут быть переданы Вашей функции FSEventStreamCallback.