Sha256: 4d241c9bd185b217868595e540280983bd9619c4f5b290b54c1d89f250da589e
Contents?: true
Size: 1.31 KB
Versions: 4
Compression:
Stored size: 1.31 KB
Contents
class FluQ::DSL attr_reader :path, :reactor, :inputs, :handlers # @param [FluQ::Reactor] reactor # @param [String] DSL script file path def initialize(reactor, path) @reactor = reactor @path = Pathname.new(path) @inputs = [] @handlers = [] end # @param [Array<Symbol>] input type path, e.g. :socket def input(*type, &block) klass = constantize(:input, *type) inputs.push [klass, FluQ::DSL::Options.new(&block).to_hash] end # @param [Array<Symbol>] handler type path, e.g. :log, :counter def handler(*type, &block) klass = constantize(:handler, *type) handlers.push [klass, FluQ::DSL::Options.new(&block).to_hash] end # @param [String] relative relative path def import(relative) instance_eval(path.dirname.join(relative).read) end # Starts the components. Handlers first, then inputs. def run instance_eval(path.read) handlers.each {|klass, options| reactor.register(klass, options) } inputs.each {|klass, options| reactor.listen(klass, options) } end protected def constantize(*path) require([:fluq, *path].join('/')) names = path.map {|p| p.to_s.split('_').map(&:capitalize).join } names.inject(FluQ) {|klass, name| klass.const_get(name) } end end %w'options'.each do |name| require "fluq/dsl/#{name}" end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
fluq-0.7.5 | lib/fluq/dsl.rb |
fluq-0.7.3 | lib/fluq/dsl.rb |
fluq-0.7.1 | lib/fluq/dsl.rb |
fluq-0.7.0 | lib/fluq/dsl.rb |