@@ -15,50 +15,19 @@ public class DirectoryWatcher {
1515 case cannotCreateSource
1616 }
1717
18- enum Mask {
19- case attribute
20- case delete
21- case extend
22- case link
23- case rename
24- case revoke
25- case write
26-
27- var flag : dispatch_source_vnode_flags_t {
28- get {
29- switch self {
30- case . attribute:
31- return DispatchSource . FileSystemEvent. attrib
32- case . delete:
33- return DispatchSource . FileSystemEvent. delete
34- case . extend:
35- return DispatchSource . FileSystemEvent. extend
36- case . link:
37- return DispatchSource . FileSystemEvent. link
38- case . rename:
39- return DispatchSource . FileSystemEvent. rename
40- case . revoke:
41- return DispatchSource . FileSystemEvent. revoke
42- case . write:
43- return DispatchSource . FileSystemEvent. write
44- }
45- }
46- }
47- }
48-
4918 public typealias CompletionCallback = ( ) -> ( )
5019
5120 var watchedURL : URL
52- let mask : Mask
21+ let eventMask : DispatchSource . FileSystemEvent
5322 public var completionCallback : CompletionCallback ?
5423 private let queue = DispatchQueue ( label: " com.pop-tap.directory-watcher " , attributes: DispatchQueueAttributes . serial)
5524 private var source : DispatchSource ?
5625 private var directoryChanging = false
5726 private var oldDirectoryInfo = [ FileInfo? ] ( )
5827
59- init ( URL: Foundation . URL , mask : Mask = . write) {
28+ init ( URL: Foundation . URL , eventMask : DispatchSource . FileSystemEvent = . write) {
6029 watchedURL = URL
61- self . mask = mask
30+ self . eventMask = eventMask
6231 }
6332
6433 deinit {
@@ -83,7 +52,7 @@ public class DirectoryWatcher {
8352 close ( fd)
8453 }
8554
86- guard let src = DispatchSource . fileSystemObject ( fileDescriptor: fd, eventMask: mask . flag , queue: queue) /*Migrator FIXME: Use DispatchSourceFileSystemObject to avoid the cast*/ as! DispatchSource else {
55+ guard let src = DispatchSource . fileSystemObject ( fileDescriptor: fd, eventMask: eventMask , queue: queue) /*Migrator FIXME: Use DispatchSourceFileSystemObject to avoid the cast*/ as? DispatchSource else {
8756 cleanUp ( )
8857 throw Error . cannotCreateSource
8958 }
0 commit comments