D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
blackhat.pw
:
/
kunden
/
kunden
/
proc
/
self
/
root
/
usr
/
lib
/
ruby
/
vendor_ruby
/
em
/
Filename :
file_watch.rb
back
Copy
module EventMachine # Utility class that is useful for file monitoring. Supported events are # # * File is modified # * File is deleted # * File is moved # # @note On Mac OS X, file watching only works when kqueue is enabled # # @see EventMachine.watch_file class FileWatch < Connection # @private Cmodified = 'modified'.freeze # @private Cdeleted = 'deleted'.freeze # @private Cmoved = 'moved'.freeze # @private def receive_data(data) case data when Cmodified file_modified when Cdeleted file_deleted when Cmoved file_moved end end # Returns the path that is being monitored. # # @note Current implementation does not pick up on the new filename after a rename occurs. # # @return [String] # @see EventMachine.watch_file def path @path end # Will be called when the file is modified. Supposed to be redefined by subclasses. # # @abstract def file_modified end # Will be called when the file is deleted. Supposed to be redefined by subclasses. # When the file is deleted, stop_watching will be called after this to make sure everything is # cleaned up correctly. # # @note On Linux (with {http://en.wikipedia.org/wiki/Inotify inotify}), this method will not be called until *all* open file descriptors to # the file have been closed. # # @abstract def file_deleted end # Will be called when the file is moved or renamed. Supposed to be redefined by subclasses. # # @abstract def file_moved end # Discontinue monitoring of the file. # # This involves cleaning up the underlying monitoring details with kqueue/inotify, and in turn firing {EventMachine::Connection#unbind}. # This will be called automatically when a file is deleted. User code may call it as well. def stop_watching EventMachine::unwatch_filename(@signature) end # stop_watching end # FileWatch end # EventMachine