class Observed::ProcTask
Public Class Methods
new(args, &block)
click to toggle source
# File lib/observed/task.rb, line 82 def initialize(args, &block) @executor = args[:executor] || fail('Missing a value for :executor') @listener = args[:listener] || fail('Missing a value for :listener') @logger = args[:logger] @block = block @next_task = NoOpTask.instance if @logger.nil? @logger = ::Logger.new(STDERR) @logger.level = ::Logger::WARN end end
Public Instance Methods
now(data={}, options=nil) { |result| ... }
click to toggle source
# File lib/observed/task.rb, line 94 def now(data={}, options=nil) @executor.submit { result = @block.call(data, options) yield result if block_given? notify_listener(data: data, options: options, result: result) } end
Private Instance Methods
notify_listener(args)
click to toggle source
# File lib/observed/task.rb, line 104 def notify_listener(args) return unless @listener data = args[:data] options = args[:options] result = args[:result] @logger.debug "Notifying listeners with the result(#{result}) generated from the input data(#{data}) and the options(#{options})" if result.is_a? ::Hash if options @listener.on_result(result, options) else @listener.on_result(result) end elsif result.is_a? ::Array if result.size == 1 && options @listener.on_result(result, options) elsif result.size == 2 @listener.on_result(*result) end end end