Class: Barrage

Inherits:
Object
  • Object
show all
Defined in:
lib/barrage.rb,
lib/barrage/version.rb,
lib/barrage/generators.rb,
lib/barrage/generators/pid.rb,
lib/barrage/generators/base.rb,
lib/barrage/generators/msec.rb,
lib/barrage/generators/sequence.rb,
lib/barrage/generators/timestamp.rb,
lib/barrage/generators/redis_worker_id.rb

Defined Under Namespace

Modules: Generators Classes: InvalidOption

Constant Summary collapse

VERSION =
"0.2.0"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Barrage

generators:

- name: msec
  length: 40
  start_at: 1396278000000 # 2014-04-01 00:00:00 +0900 (msec)
- name: pid
  length: 16
- name: sequence
  length: 8


18
19
20
21
22
23
24
25
26
# File 'lib/barrage.rb', line 18

def initialize(options = {})
  @options = options
  @lock = Mutex.new
  @generators = @options["generators"].map do |h|
    generator_name = h["name"]
    require "barrage/generators/#{generator_name}"
    "Barrage::Generators::#{generator_name.classify}".constantize.new(h)
  end
end

Instance Attribute Details

#generatorsObject (readonly)

Returns the value of attribute generators.



6
7
8
# File 'lib/barrage.rb', line 6

def generators
  @generators
end

Instance Method Details

#currentObject



39
40
41
42
43
44
45
46
47
# File 'lib/barrage.rb', line 39

def current
  @lock.synchronize {
    shift_size = length
    @generators.inject(0) do |result, generator|
      shift_size = shift_size - generator.length
      result += generator.current << shift_size
    end
  }
end

#generateObject Also known as: next



28
29
30
31
32
33
34
35
36
# File 'lib/barrage.rb', line 28

def generate
  @lock.synchronize {
    shift_size = length
    @generators.inject(0) do |result, generator|
      shift_size = shift_size - generator.length
      result += generator.generate << shift_size
    end
  }
end

#lengthObject



49
50
51
# File 'lib/barrage.rb', line 49

def length
  @generators.inject(0) {|sum, g| sum += g.length }
end