class Estore::Commands::ReadForward

Public Class Methods

new(connection, stream, from, batch_size = nil, &block) click to toggle source
Calls superclass method Estore::Commands::Command::new
# File lib/estore/commands/reads/forward.rb, line 9
def initialize(connection, stream, from, batch_size = nil, &block)
  super(connection)

  @stream = stream
  @from = from
  @batch_size = batch_size || 1000
  @block = block
  @events = []
end

Public Instance Methods

batch_completed(response) click to toggle source
# File lib/estore/commands/reads/forward.rb, line 39
def batch_completed(response)
  error = error(response)

  if error
    remove!
    promise.reject ReadEventsError.new(error)
  else
    keep_reading(response)
  end
end
call() click to toggle source
# File lib/estore/commands/reads/forward.rb, line 19
def call
  register!
  read(@stream, @from, @batch_size)
  promise
end
keep_reading(response) click to toggle source
# File lib/estore/commands/reads/forward.rb, line 25
def keep_reading(response)
  events = Array(response.events)

  @from += events.size
  read(@stream, @from, @batch_size) unless response.is_end_of_stream

  @block ? @block.call(events) : @events.push(*events)

  if response.is_end_of_stream
    remove!
    promise.fulfill(@block ? nil : @events)
  end
end