Retrieve the default event loop for the current thread
# File lib/cool.io/loop.rb, line 21 def self.default Thread.current._coolio_loop end
Create a new Coolio::Loop
Options:
:skip_environment (boolean)
Ignore the $LIBEV_FLAGS environment variable
:fork_check (boolean)
Enable autodetection of forks
:backend
Choose the default backend, one (or many in an array) of: :select (most platforms) :poll (most platforms except Windows) :epoll (Linux) :kqueue (BSD/Mac OS X) :port (Solaris 10)
# File lib/cool.io/loop.rb, line 49 def initialize(options = {}) @watchers = {} @active_watchers = 0 flags = 0 options.each do |option, value| case option when :skip_environment flags |= EVFLAG_NOEV if value when :fork_check flags |= EVFLAG_FORKCHECK if value when :backend value = [value] unless value.is_a? Array value.each do |backend| case backend when :select then flags |= EVBACKEND_SELECT when :poll then flags |= EVBACKEND_POLL when :epoll then flags |= EVBACKEND_EPOLL when :kqueue then flags |= EVBACKEND_KQUEUE when :port then flags |= EVBACKEND_PORT else raise ArgumentError, "no such backend: #{backend}" end end else raise ArgumentError, "no such option: #{option}" end end @loop = ev_loop_new(flags) end
Attach a watcher to the loop
# File lib/cool.io/loop.rb, line 81 def attach(watcher) watcher.attach self end
Does the loop have any active watchers?
# File lib/cool.io/loop.rb, line 108 def has_active_watchers? @active_watchers > 0 end
Run the event loop and dispatch events back to Ruby. If there are no watchers associated with the event loop it will return immediately. Otherwise, run will continue blocking and making event callbacks to watchers until all watchers associated with the loop have been disabled or detached. The loop may be explicitly stopped by calling the stop method on the loop object.
# File lib/cool.io/loop.rb, line 91 def run raise RuntimeError, "no watchers for this loop" if @watchers.empty? @running = true while @running and not @active_watchers.zero? run_once end @running = false end
Generated with the Darkfish Rdoc Generator 2.