Class: SeeingIsBelieving::EventStream::Consumer::FinishCriteria

Inherits:
Object
  • Object
show all
Defined in:
lib/seeing_is_believing/event_stream/consumer.rb

Overview

Contemplated doing FinishCriteria in binary, but the cost of doing it with an array like this is negligible and it has the nice advantage that the elements in the array are named # so if I ever look at it, I don’t have to tranlsate a number to figure out the names gist.github.com/JoshCheek/10deb07277b6c85efc7b5e65c007785d

Constant Summary collapse

EventThreadFinished =
Module.new
StdoutThreadFinished =
Module.new
StderrThreadFinished =
Module.new
ProcessExited =
Module.new

Instance Method Summary collapse

Constructor Details

#initializeFinishCriteria

Returns a new instance of FinishCriteria.



20
21
22
23
24
25
26
27
# File 'lib/seeing_is_believing/event_stream/consumer.rb', line 20

def initialize
  @unmet_criteria = [
    EventThreadFinished,
    StdoutThreadFinished,
    StderrThreadFinished,
    ProcessExited,
  ]
end

Instance Method Details

#event_thread_finished!Object



35
36
37
# File 'lib/seeing_is_believing/event_stream/consumer.rb', line 35

def event_thread_finished!
  @unmet_criteria.delete EventThreadFinished
end

#received_exitstatus!Object



47
48
49
# File 'lib/seeing_is_believing/event_stream/consumer.rb', line 47

def received_exitstatus!
  @unmet_criteria.delete ProcessExited
end

#received_timeout!Object



51
52
53
# File 'lib/seeing_is_believing/event_stream/consumer.rb', line 51

def received_timeout!
  @unmet_criteria.delete ProcessExited
end

#satisfied?Boolean

finish criteria are satisfied, we can stop processing events

Returns:

  • (Boolean)


31
32
33
# File 'lib/seeing_is_believing/event_stream/consumer.rb', line 31

def satisfied?
  @unmet_criteria.empty?
end

#stderr_thread_finished!Object



43
44
45
# File 'lib/seeing_is_believing/event_stream/consumer.rb', line 43

def stderr_thread_finished!
  @unmet_criteria.delete StderrThreadFinished
end

#stdout_thread_finished!Object



39
40
41
# File 'lib/seeing_is_believing/event_stream/consumer.rb', line 39

def stdout_thread_finished!
  @unmet_criteria.delete StdoutThreadFinished
end