Class: Barrage
- Inherits:
-
Object
- Object
- Barrage
- 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
-
#generators ⇒ Object
readonly
Returns the value of attribute generators.
Instance Method Summary collapse
- #current ⇒ Object
- #generate ⇒ Object (also: #next)
-
#initialize(options = {}) ⇒ Barrage
constructor
generators: - name: msec length: 40 start_at: 1396278000000 # 2014-04-01 00:00:00 +0900 (msec) - name: pid length: 16 - name: sequence length: 8.
- #length ⇒ Object
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 = @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
#generators ⇒ Object (readonly)
Returns the value of attribute generators.
6 7 8 |
# File 'lib/barrage.rb', line 6 def generators @generators end |
Instance Method Details
#current ⇒ Object
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 |
#generate ⇒ Object 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 |
#length ⇒ Object
49 50 51 |
# File 'lib/barrage.rb', line 49 def length @generators.inject(0) {|sum, g| sum += g.length } end |