Class: EventMachine::FileWatch
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Connection
|
|
Instance Chain:
self,
Connection
|
|
Inherits: |
EventMachine::Connection
|
Defined in: | lib/em/file_watch.rb |
Overview
On Mac OS X, file watching only works when kqueue is enabled
Utility class that is useful for file monitoring. Supported events are
- File is modified
- File is deleted
- File is moved
Constant Summary
-
Cdeleted =
Internal use only
# File 'lib/em/file_watch.rb', line 15'deleted'.freeze
-
Cmodified =
Internal use only
# File 'lib/em/file_watch.rb', line 13'modified'.freeze
-
Cmoved =
Internal use only
# File 'lib/em/file_watch.rb', line 17'moved'.freeze
Class Method Summary
Connection
- Inherited
.new | Override .new so subclasses don't have to call super and can ignore connection-specific arguments. |
Instance Attribute Summary
Connection
- Inherited
#comm_inactivity_timeout | comm_inactivity_timeout returns the current value (float in seconds) of the inactivity-timeout property of network-connection and datagram-socket objects. |
#comm_inactivity_timeout= | Allows you to set the inactivity-timeout property for a network connection or datagram socket. |
#error? | Returns true if the connection is in an error state, false otherwise. |
#notify_readable= | Watches connection for readability. |
#notify_readable?, | |
#notify_writable= | Watches connection for writeability. |
#notify_writable? | Returns true if the connection is being watched for writability. |
#paused?, | |
#pending_connect_timeout | The duration after which a TCP connection in the connecting state will fail. |
#pending_connect_timeout= | Sets the duration after which a TCP connection in a connecting state will fail. |
#signature, #watch_only? |
Instance Method Summary
-
#file_deleted
abstract
Will be called when the file is deleted.
-
#file_modified
abstract
Will be called when the file is modified.
-
#file_moved
abstract
Will be called when the file is moved or renamed.
-
#path ⇒ String
Returns the path that is being monitored.
- #receive_data(data) Internal use only Internal use only
-
#stop_watching
Discontinue monitoring of the file.
Connection
- Inherited
#associate_callback_target | conn_associate_callback_target. |
#close_connection | EventMachine::Connection#close_connection is called only by user code, and never by the event loop. |
#close_connection_after_writing | A variant of #close_connection. |
#connection_completed | Called by the event loop when a remote TCP connection attempt completes successfully. |
#detach | Removes given connection from the event loop. |
#disable_keepalive | t_disable_keepalive. |
#enable_keepalive | t_enable_keepalive. |
#get_cipher_bits, #get_cipher_name, #get_cipher_protocol, | |
#get_idle_time | The number of seconds since the last send/receive activity on this connection. |
#get_outbound_data_size | conn_get_outbound_data_size. |
#get_peer_cert | If TLS is active on the connection, returns the remote X509 certificate as a string, in the popular PEM format. |
#get_peername | This method is used with stream-connections to obtain the identity of the remotely-connected peer. |
#get_pid | Returns the PID (kernel process identifier) of a subprocess associated with this |
#get_proxied_bytes | The number of bytes proxied to another connection. |
#get_sni_hostname, #get_sock_opt, | |
#get_sockname | Used with stream-connections to obtain the identity of the local side of the connection. |
#get_status | Returns a subprocess exit status. |
#initialize | Stubbed initialize so legacy superclasses can safely call super. |
#original_method, | |
#pause | Pause a connection so that #send_data and #receive_data events are not fired until |
#post_init | Called by the event loop immediately after the network connection has been established, and before resumption of the network loop. |
#proxy_completed | called when the reactor finished proxying all of the requested bytes. |
#proxy_incoming_to | EventMachine::Connection#proxy_incoming_to is called only by user code. |
#proxy_target_unbound | Called by the reactor after attempting to relay incoming data to a descriptor (set as a proxy target descriptor with enable_proxy) that has already been closed. |
#receive_data | Called by the event loop whenever data has been received by the network connection. |
#reconnect | Reconnect to a given host/port with the current instance. |
#resume | Resume a connection's #send_data and #receive_data events. |
#send_data | Call this method to send data to the remote end of the network connection. |
#send_datagram | Sends UDP messages. |
#send_file_data | Like Connection#send_data, this sends data to the remote end of the network connection. |
#set_sock_opt, | |
#ssl_handshake_completed | Called by |
#ssl_verify_peer | Called by |
#start_tls | Call #start_tls at any point to initiate TLS encryption on connected streams. |
#stop_proxying | A helper method for disable_proxy |
#stream_file_data | Open a file on the filesystem and send it to the remote peer. |
#unbind | called by the framework whenever a connection (either a server or client connection) is closed. |
Constructor Details
This class inherits a constructor from EventMachine::Connection
Instance Method Details
#file_deleted
On Linux (with inotify), this method will not be called until all open file descriptors to the file have been closed.
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.
# File 'lib/em/file_watch.rb', line 56
def file_deleted end
#file_modified
Will be called when the file is modified. Supposed to be redefined by subclasses.
# File 'lib/em/file_watch.rb', line 45
def file_modified end
#file_moved
Will be called when the file is moved or renamed. Supposed to be redefined by subclasses.
# File 'lib/em/file_watch.rb', line 62
def file_moved end
#path ⇒ String
Current implementation does not pick up on the new filename after a rename occurs.
Returns the path that is being monitored.
# File 'lib/em/file_watch.rb', line 38
def path @path end
#receive_data(data)
# File 'lib/em/file_watch.rb', line 21
def receive_data(data) case data when Cmodified file_modified when Cdeleted file_deleted when Cmoved file_moved end end
#stop_watching
Discontinue monitoring of the file.
This involves cleaning up the underlying monitoring details with kqueue/inotify, and in turn firing Connection#unbind. This will be called automatically when a file is deleted. User code may call it as well.
# File 'lib/em/file_watch.rb', line 69
def stop_watching EventMachine::unwatch_filename(@signature) end