Sha256: c4f94da8e3d3cfa40b4363185500bfb17927f44921c4d0b53f2c968f456d62b9

Contents?: true

Size: 1.33 KB

Versions: 44

Compression:

Stored size: 1.33 KB

Contents

module DaemonKit

  # EventMachine forms a critical part of the daemon-kit toolset, and
  # especially of daemon process developers.
  #
  # This class abstracts away the difficulties of managing multiple
  # libraries that all utilize the event reactor.
  class EM

    class << self

      # Start a reactor, just like classical EM.run. If the block is
      # provided, the method will block and call the provided block
      # argument inside the running reactor. If the block argument is
      # not provided the reactor will be started in a separate thread
      # and the program will continue to run after the method. All the
      # signal traps are configured to shutdown the reactor when the
      # daemon exists.
      def run(&block)
        if ::EM.reactor_running?
          DaemonKit.logger.warn "EventMachine reactor already running"
          block.call if block_given?

        else
          if block_given?
            ::EM.run { block.call }
          else
            Thread.main[:_dk_reactor] = Thread.new { EM.run {} }
            DaemonKit.trap( 'INT' ) { DaemonKit::EM.stop  }
            DaemonKit.trap( 'TERM' ) { DaemonKit::EM.stop }
          end
        end
      end

      # Stop the reactor
      def stop
        ::EM.stop_event_loop if ::EM.reactor_running?
        Thread.main[:_dk_reactor].join
      end
    end

  end
end

Version data entries

44 entries across 44 versions & 7 rubygems

Version Path
daemon-kit-0.3.3 lib/daemon_kit/em.rb
daemon-kit-0.3.2 lib/daemon_kit/em.rb
kennethkalmer-daemon-kit-0.1.7.10 lib/daemon_kit/em.rb
kennethkalmer-daemon-kit-0.1.7.7 lib/daemon_kit/em.rb
kennethkalmer-daemon-kit-0.1.7.8 lib/daemon_kit/em.rb
kennethkalmer-daemon-kit-0.1.7.9 lib/daemon_kit/em.rb
queso-daemon-kit-0.1.7.10 lib/daemon_kit/em.rb
skaar-daemon-kit-0.1.7.10 lib/daemon_kit/em.rb
daemon-kit-0.3.1 lib/daemon_kit/em.rb
daemon-kit-0.3.0 lib/daemon_kit/em.rb
daemon-kit-0.3.0.rc2 lib/daemon_kit/em.rb
daemon-kit-0.3.0.rc1 lib/daemon_kit/em.rb
daemon-kit-0.2.3 lib/daemon_kit/em.rb
daemon-kit-0.2.1 lib/daemon_kit/em.rb
daemon-kit-0.2.0 lib/daemon_kit/em.rb
daemon-kit-0.1.8.2 lib/daemon_kit/em.rb
amqp-daemon-kit-1.0.1 lib/daemon_kit/em.rb
amqp-daemon-kit-0.1.8.2 lib/daemon_kit/em.rb
amqp-daemon-kit-0.1.8.1 lib/daemon_kit/em.rb
daemon-kit-0.1.8.1 lib/daemon_kit/em.rb