@@ -51,11 +51,11 @@ func (w *watcher) Close() error {
5151 }
5252}
5353
54- func (w * watcher ) runFseventProducerLoop () * keventloop {
54+ func (w * watcher ) runFseventProducerLoop () fseventProducerLoop {
5555 return runKeventLoop (w .kq )
5656}
5757
58- func initWatcher () (* watcher , Error ) {
58+ func initWatcher () (fswatcher , Error ) {
5959 kq , err := syscall .Kqueue ()
6060 if err != nil {
6161 return nil , NewError (NotSpecified , err , "kqueue() failed" )
@@ -81,7 +81,7 @@ func (w *watcher) watchDir(path string) (*Dir, Error) {
8181 return & Dir {dir }, nil
8282}
8383
84- func (w * watcher ) watchNewFile (newFile * os. File ) Error {
84+ func (w * watcher ) watchFile (newFile fileMeta ) Error {
8585 zeroTimeout := syscall .NsecToTimespec (0 ) // timeout zero means non-blocking kevent() call
8686 _ , err := syscall .Kevent (w .kq , []syscall.Kevent_t {makeEvent (newFile )}, nil , & zeroTimeout )
8787 if err != nil {
@@ -90,12 +90,20 @@ func (w *watcher) watchNewFile(newFile *os.File) Error {
9090 return nil
9191}
9292
93- func (w * watcher ) processEvent (t * fileTailer , kevent syscall. Kevent_t , log logrus.FieldLogger ) Error {
93+ func (w * watcher ) processEvent (t * fileTailer , event fsevent , log logrus.FieldLogger ) Error {
9494 var (
9595 dir * Dir
9696 file * fileWithReader
9797 dirLogger , fileLogger logrus.FieldLogger
98+ kevent syscall.Kevent_t
99+ ok bool
98100 )
101+
102+ kevent , ok = event .(syscall.Kevent_t )
103+ if ! ok {
104+ return NewErrorf (NotSpecified , nil , "received a file system event of unknown type %T" , event )
105+ }
106+
99107 for _ , dir = range t .watchedDirs {
100108 if kevent .Ident == fdToInt (dir .file .Fd ()) {
101109 dirLogger = log .WithField ("directory" , dir .file .Name ())
@@ -189,7 +197,7 @@ func isTruncated(file *os.File) (bool, error) {
189197 return currentPos > fileInfo .Size (), nil
190198}
191199
192- func ( w * watcher ) findSameFile (t * fileTailer , file os.FileInfo , _ string ) (* fileWithReader , Error ) {
200+ func findSameFile (t * fileTailer , file os.FileInfo , _ string ) (* fileWithReader , Error ) {
193201 var (
194202 fileInfo os.FileInfo
195203 err error
@@ -206,7 +214,11 @@ func (w *watcher) findSameFile(t *fileTailer, file os.FileInfo, _ string) (*file
206214 return nil , nil
207215}
208216
209- func makeEvent (file * os.File ) syscall.Kevent_t {
217+ type withFd interface {
218+ Fd () uintptr
219+ }
220+
221+ func makeEvent (file withFd ) syscall.Kevent_t {
210222
211223 // Note about the EV_CLEAR flag:
212224 //
0 commit comments