class Batsir::Stage

Constants

FilterDeclaration
TransformerDeclaration

Attributes

acceptor_transformers[R]
acceptors[R]
cancellators[RW]
chain[RW]
conditional_notifiers[R]
filter_declarations[R]
name[RW]
notifier_transformers[R]
notifiers[R]
running_acceptors[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/batsir/stage.rb, line 19
def initialize(options = {})
  options.each do |attr, value|
    self.send("#{attr.to_s}=", value)
  end
  @cancellators           = []
  @acceptor_transformers  = []
  @running_acceptors      = []
  @acceptors              = {}
  @filter_declarations    = []
  @notifiers              = {}
  @conditional_notifiers  = []
  @notifier_transformers  = []
  @built                  = false
end

Public Instance Methods

add_acceptor(acceptor, options = {}) click to toggle source
# File lib/batsir/stage.rb, line 42
def add_acceptor(acceptor, options = {})
  @acceptors[acceptor] ||= Set.new
  @acceptors[acceptor] << options
end
add_acceptor_transformer(transformer, options = {}) click to toggle source
# File lib/batsir/stage.rb, line 38
def add_acceptor_transformer(transformer, options = {})
  @acceptor_transformers << TransformerDeclaration.new(transformer, options)
end
add_conditional_notifier(notifier_declaration) click to toggle source
# File lib/batsir/stage.rb, line 55
def add_conditional_notifier(notifier_declaration)
  @conditional_notifiers << notifier_declaration
end
add_filter(filter, options = {}) click to toggle source
# File lib/batsir/stage.rb, line 47
def add_filter(filter, options = {})
  @filter_declarations << FilterDeclaration.new(filter, options)
end
add_notifier(notifier, options = {}) click to toggle source
# File lib/batsir/stage.rb, line 59
def add_notifier(notifier, options = {})
  @notifiers[notifier] ||= Set.new
  @notifiers[notifier] << options
end
add_notifier_transformer(transformer, options = {}) click to toggle source
# File lib/batsir/stage.rb, line 64
def add_notifier_transformer(transformer, options = {})
  @notifier_transformers << TransformerDeclaration.new(transformer, options)
end
built?() click to toggle source
# File lib/batsir/stage.rb, line 34
def built?
  @built
end
compile() click to toggle source
# File lib/batsir/stage.rb, line 68
def compile
  Batsir::StageWorker.compile_from(self)
end
filters() click to toggle source
# File lib/batsir/stage.rb, line 51
def filters
  @filter_declarations.map{ |filter_declaration| filter_declaration.filter }
end
finalize() click to toggle source
# File lib/batsir/stage.rb, line 72
def finalize
  @cancellators.each do |cancellator|
    cancellator.write "STOP"
  end
end
start() click to toggle source
# File lib/batsir/stage.rb, line 78
def start
  acceptors.each do |acceptor_class, options|
    options.each do |acceptor_options|
      acceptor_options.merge!(:stage_name => self.name)
      acceptor = acceptor_class.new(acceptor_options)

      if acceptor_transformers.any?
        acceptor_transformers.each do |transformer_declaration|
          transformer = transformer_declaration.transformer.new(transformer_declaration.options)
          acceptor.add_transformer(transformer)
        end
      else
        acceptor.add_transformer(Batsir::Transformers::JSONInputTransformer.new)
      end
      @running_acceptors << acceptor
      acceptor.async.start
    end
  end
  true
end