Sha256: b6cd80bba8d4cedeee55b4209d3cfeb42c9983f908d41f27beb1f202f0b73a2b

Contents?: true

Size: 889 Bytes

Versions: 2

Compression:

Stored size: 889 Bytes

Contents

require 'thread'
require 'sideband/version'
require 'sideband/manager'
require 'sideband/queue'
require 'sideband/thread'
require 'sideband/worker'

module Sideband

  class NotInitializedError < Exception; end

  def self.initialize!
    new_manager = Manager.new
    puts 'Sideband initialized!'

    if block_given?
      begin
        ::Thread.current['sideband.manager'] = new_manager
        yield
      ensure
        join
      end
    else
      ::Thread.current['sideband.manager'] = new_manager
    end
  end

  def self.join
    manager.join
    kill
  end

  def self.kill
    manager.kill
    ::Thread.current['sideband.manager'] = nil
  end

  def self.queue
    manager.queue
  end

  def self.manager
    manager = ::Thread.current['sideband.manager']
    raise NotInitializedError.new('Sideband must be initialized! before using.') if manager.nil?
    manager
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sideband-1.0.1 lib/sideband.rb
sideband-1.0.0 lib/sideband.rb