SCEvents

ファイル監視をする為にFSEventの事を調べてみたらSCEventsとクラスを発見。

CoreFoundationを使うよりも楽そうなのでこのコードを使用する事にする。

SCEventsのSCContstans.hで定義されている列挙型SCEventFlagsの定義が少したらないのようなので以下のように付け足して運用してみる事にした。

typedef enum
{
    SCEventStreamEventFlagNone            = 0x00000000,
    SCEventStreamEventFlagMustScanSubDirs = 0x00000001,
    SCEventStreamEventFlagUserDropped     = 0x00000002,
    SCEventStreamEventFlagKernelDropped   = 0x00000004,
    SCEventStreamEventFlagEventIdsWrapped = 0x00000008,
    SCEventStreamEventFlagHistoryDone     = 0x00000010,
    SCEventStreamEventFlagRootChanged     = 0x00000020,
    SCEventStreamEventFlagMount           = 0x00000040,
    SCEventStreamEventFlagUnmount         = 0x00000080
    // 以下追加分
    SCEventStreamEventFlagItemCreated       = 0x00000100,
    SCEventStreamEventFlagItemRemoved       = 0x00000200,
    SCEventStreamEventFlagItemInodeMetaMod  = 0x00000400,
    SCEventStreamEventFlagItemRenamed       = 0x00000800,
    SCEventStreamEventFlagItemModified      = 0x00001000,
    SCEventStreamEventFlagItemFinderInfoMod = 0x00002000,
    SCEventStreamEventFlagItemChangeOwner   = 0x00004000,
    SCEventStreamEventFlagItemXattrMod      = 0x00008000,
    SCEventStreamEventFlagItemIsFile        = 0x00010000,
    SCEventStreamEventFlagItemIsDir         = 0x00020000,
    SCEventStreamEventFlagItemIsSymlink     = 0x00040000
}
SCEventFlags;

なお、”日暮れて道遠し”ではシングルトンであるとの事でしたが、複数のインスタンスを作成出来た。

間違いかもしれないが、そのまま使用してみるつもり。

参考文献

日暮れて道遠し: Cocoa FSEvent と SCEvents
http://michitoshi.blogspot.jp/2011/06/cocoa-fsevent-scevents.html
本家
http://stuconnolly.com/blog/scevents-011/