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