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