Class: Moe::Sequence::Collector

Inherits:
Object
  • Object
show all
Defined in:
lib/moe/sequence/collector.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, owner_id) ⇒ Collector

Returns a new instance of Collector.



7
8
9
10
11
12
13
14
# File 'lib/moe/sequence/collector.rb', line 7

def initialize(name, owner_id)
  @dyna          = Dyna.new
  @flushed_count = 0
  @payloads      = []
  @owner_id      = owner_id
  @uuid          = SecureRandom.uuid
  @write_tables  = Moe.config.tables[name].last
end

Instance Attribute Details

#dynaObject

Returns the value of attribute dyna.



4
5
6
# File 'lib/moe/sequence/collector.rb', line 4

def dyna
  @dyna
end

#flushed_countObject

Returns the value of attribute flushed_count.



4
5
6
# File 'lib/moe/sequence/collector.rb', line 4

def flushed_count
  @flushed_count
end

#owner_idObject (readonly)

Returns the value of attribute owner_id.



5
6
7
# File 'lib/moe/sequence/collector.rb', line 5

def owner_id
  @owner_id
end

#payloadsObject

Returns the value of attribute payloads.



4
5
6
# File 'lib/moe/sequence/collector.rb', line 4

def payloads
  @payloads
end

#uuidObject (readonly)

Returns the value of attribute uuid.



5
6
7
# File 'lib/moe/sequence/collector.rb', line 5

def uuid
  @uuid
end

#write_tablesObject (readonly)

Returns the value of attribute write_tables.



5
6
7
# File 'lib/moe/sequence/collector.rb', line 5

def write_tables
  @write_tables
end

Instance Method Details

#add(payload = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/moe/sequence/collector.rb', line 16

def add(payload={})
  payloads << payload

  if payloads.size >= Moe.config.batch_limit
    items = keyify payloads
    flush items

    self.payloads = []
  end
end

#save(payload = {}) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/moe/sequence/collector.rb', line 27

def save(payload={})
   = {
    "count"    => (payloads.size + flushed_count).to_s,
    "saved_at" => Time.now.to_s,
    "payload"  => MultiJson.dump(payload)
  }.merge Locksmith.itemize owner_id, payload, 0, uuid

  items = keyify payloads

  items << 

  flush items
end