class Edrive::ProcessorDispatcher

Constants

DEFAULT_PROCESSOR_PROCESS

@return [Symbol] default processor process symbol

DEFINED_EVENT

@return [Array] defined event symbols

Attributes

processor[RW]
processor_process[RW]

Public Class Methods

new(processor, processor_process = DEFAULT_PROCESSOR_PROCESS) click to toggle source

Initialize @param [Processor] processor processor object @param [Symbol] processor_process processor main method

Calls superclass method Edrive::Dispatcher::new
# File lib/edrive/processor_dispatcher.rb, line 22
def initialize(processor, processor_process = DEFAULT_PROCESSOR_PROCESS)
  super()
  @processor = processor
  @processor_process = processor_process
end

Public Instance Methods

dispatch_all(use_result = true) click to toggle source

Dispatch all events @param [Boolean] use_result use processor process result in after_process event @return [Mixed] last subscriber return value

# File lib/edrive/processor_dispatcher.rb, line 42
def dispatch_all(use_result = true)
  dispatch(DEFINED_EVENT[0])
  if use_result
    result = dispatch_processor_process
    return dispatch_with_data(DEFINED_EVENT[1], result)
  end
  dispatch_processor_process
  dispatch(DEFINED_EVENT[1])
end
dispatch_processor_process(*args) click to toggle source

Dispach processor process @param [Mixed] args @return [Mixed] processor process return value

# File lib/edrive/processor_dispatcher.rb, line 55
def dispatch_processor_process(*args)
  processor.send(processor_process, *args)
end
subscribe(event, handler = nil, &block) click to toggle source

subscribe handler (proc, lambda, block) @param [Symbol] event event name symbol @param [Proc] handler handler (lambda, proc) @param [Block] block handler (block) @raise ArgumentError @return [Array] registered handler list

Calls superclass method Edrive::Dispatcher#subscribe
# File lib/edrive/processor_dispatcher.rb, line 34
def subscribe(event, handler = nil, &block)
  undefined_event_protect(event)
  super
end

Private Instance Methods

undefined_event_protect(event) click to toggle source

Check event is defined or not @param [Symbol] event event name symbol @raise ArgumentError

# File lib/edrive/processor_dispatcher.rb, line 64
def undefined_event_protect(event)
  raise ArgumentError, "event #{event} is not defined." unless DEFINED_EVENT.include?(event)
end