Class: Logux::Process::Batch

Inherits:
Object
  • Object
show all
Defined in:
lib/logux/process/batch.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(stream:, batch:) ⇒ Batch

Returns a new instance of Batch.



8
9
10
11
# File 'lib/logux/process/batch.rb', line 8

def initialize(stream:, batch:)
  @stream = stream
  @batch = batch
end

Instance Attribute Details

#batchObject (readonly)

Returns the value of attribute batch.



6
7
8
# File 'lib/logux/process/batch.rb', line 6

def batch
  @batch
end

#streamObject (readonly)

Returns the value of attribute stream.



6
7
8
# File 'lib/logux/process/batch.rb', line 6

def stream
  @stream
end

Instance Method Details

#callObject



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/logux/process/batch.rb', line 13

def call
  last_chunk = batch.size - 1
  preprocessed_batch.map.with_index do |chunk, index|
    case chunk[:type]
    when :action
      process_action(chunk: chunk.slice(:action, :meta))
    when :auth
      process_auth(chunk: chunk[:auth])
    end
    stream.write(',') if index != last_chunk
  end
end

#preprocess_action(chunk) ⇒ Object



45
46
47
48
49
# File 'lib/logux/process/batch.rb', line 45

def preprocess_action(chunk)
  { type: :action,
    action: Logux::Actions.new(chunk[1]),
    meta: Logux::Meta.new(chunk[2]) }
end

#preprocess_auth(chunk) ⇒ Object



51
52
53
54
55
56
# File 'lib/logux/process/batch.rb', line 51

def preprocess_auth(chunk)
  { type: :auth,
    auth: Logux::Auth.new(node_id: chunk[1],
                          credentials: chunk[2],
                          auth_id: chunk[3]) }
end

#preprocessed_batchObject



34
35
36
37
38
39
40
41
42
43
# File 'lib/logux/process/batch.rb', line 34

def preprocessed_batch
  @preprocessed_batch ||= batch.map do |chunk|
    case chunk[0]
    when 'action'
      preprocess_action(chunk)
    when 'auth'
      preprocess_auth(chunk)
    end
  end
end

#process_action(chunk:) ⇒ Object



26
27
28
# File 'lib/logux/process/batch.rb', line 26

def process_action(chunk:)
  Logux::Process::Action.new(stream: stream, chunk: chunk).call
end

#process_auth(chunk:) ⇒ Object



30
31
32
# File 'lib/logux/process/batch.rb', line 30

def process_auth(chunk:)
  Logux::Process::Auth.new(stream: stream, chunk: chunk).call
end