class Knj::Thread2
Public Class Methods
new(args = {}, &block)
click to toggle source
# File lib/knj/thread2.rb, line 2 def initialize(args = {}, &block) @args = args @block = block if block_given? @callbacks = {} end
Public Instance Methods
call(signal, *args)
click to toggle source
# File lib/knj/thread2.rb, line 13 def call(signal, *args) return false if !@callbacks.key?(signal) @callbacks[signal].each do |block| block.call(*args) end return {:count => count} end
connect(signal, &block)
click to toggle source
# File lib/knj/thread2.rb, line 8 def connect(signal, &block) @callbacks[signal] = [] if !@callbacks.key?(signal) @callbacks[signal] << block end
run()
click to toggle source
# File lib/knj/thread2.rb, line 22 def run Thread.new do abort_on_exception = true call(:on_run) begin @block.call rescue SystemExit call(:on_exit) exit rescue => e call(:on_error, e) if !@args.key?(:print_error) or @args[:print_error] print "Error: " puts e.inspect print "\n" puts e.backtrace print "\n\n" end end call(:on_done) end end