-
-
Notifications
You must be signed in to change notification settings - Fork 86
Monitors
Tony Arcieri edited this page Dec 28, 2016
·
9 revisions
The NIO::Monitor
class monitors a specific IO object and lets you introspect on why that object was selected. Monitors are returned by Selectors whenever you #register
an IO
object or whenever they #select
as ready for a particular interests.
NIO::Monitors
are thread safe only if you are holding the selector lock (i.e. if you're in a block passed to #select
). Don't share them between multiple threads unless only one thread at a time is calling #select
.
The following methods are available for controlling and inspecting interests:
- #interests: what this monitor is interested in (:r, :w, or :rw)
- #interests=: change the current interests for a monitor (to :r, :w, or :rw)
- #readiness: what I/O operations the monitored object is ready for
- #readable?: was the IO readable last time it was selected?
- #writable?: was the IO writable last time it was selected?
Monitors also support a #value and #value= method for storing a handle to an arbitrary object of your choice (e.g. a proc with a callback to fire on a given event)