Sha256: 0a453799d984e258bd2c29f531289fe7b811c0c220647ed234d9c3d1ff973374

Contents?: true

Size: 930 Bytes

Versions: 68

Compression:

Stored size: 930 Bytes

Contents

class Knj::Thread2
  def initialize(args = {}, &block)
    @args = args
    @block = block if block_given?
    @callbacks = {}
  end
  
  def connect(signal, &block)
    @callbacks[signal] = [] if !@callbacks.key?(signal)
    @callbacks[signal] << block
  end
  
  def call(signal, *args)
    return false if !@callbacks.key?(signal)
    @callbacks[signal].each do |block|
      block.call(*args)
    end
    
    return {:count => count}
  end
  
  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
end

Version data entries

68 entries across 68 versions & 1 rubygems

Version Path
knjrbfw-0.0.72 lib/knj/thread2.rb
knjrbfw-0.0.71 lib/knj/thread2.rb
knjrbfw-0.0.70 lib/knj/thread2.rb
knjrbfw-0.0.69 lib/knj/thread2.rb
knjrbfw-0.0.68 lib/knj/thread2.rb
knjrbfw-0.0.67 lib/knj/thread2.rb
knjrbfw-0.0.66 lib/knj/thread2.rb
knjrbfw-0.0.65 lib/knj/thread2.rb
knjrbfw-0.0.64 lib/knj/thread2.rb
knjrbfw-0.0.63 lib/knj/thread2.rb
knjrbfw-0.0.62 lib/knj/thread2.rb
knjrbfw-0.0.59 lib/knj/thread2.rb
knjrbfw-0.0.58 lib/knj/thread2.rb
knjrbfw-0.0.57 lib/knj/thread2.rb
knjrbfw-0.0.55 lib/knj/thread2.rb
knjrbfw-0.0.54 lib/knj/thread2.rb
knjrbfw-0.0.53 lib/knj/thread2.rb
knjrbfw-0.0.52 lib/knj/thread2.rb
knjrbfw-0.0.51 lib/knj/thread2.rb
knjrbfw-0.0.50 lib/knj/thread2.rb