Class: Knj::Thread2
Instance Method Summary collapse
- #call(signal, *args) ⇒ Object
- #connect(signal, &block) ⇒ Object
-
#initialize(args = {}, &block) ⇒ Thread2
constructor
A new instance of Thread2.
- #run ⇒ Object
Constructor Details
#initialize(args = {}, &block) ⇒ Thread2
Returns a new instance of Thread2.
2 3 4 5 6 |
# File 'lib/knj/thread2.rb', line 2 def initialize(args = {}, &block) @args = args @block = block if block_given? @callbacks = {} end |
Instance Method Details
#call(signal, *args) ⇒ Object
13 14 15 16 17 18 19 20 |
# 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) ⇒ Object
8 9 10 11 |
# File 'lib/knj/thread2.rb', line 8 def connect(signal, &block) @callbacks[signal] = [] if !@callbacks.key?(signal) @callbacks[signal] << block end |
#run ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# 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 |