Class: ProcessorDispatcher

Inherits:
Edrive::Dispatcher show all
Defined in:
lib/edrive/processor_dispatcher.rb

Overview

Event Dispatcher For Processors

Author:

  • shimimi

Constant Summary collapse

DEFINED_EVENT =

Returns defined event symbols.

Returns:

  • (Array)

    defined event symbols

i[before after].freeze
DEFAULT_PROCESSOR_PROCESS =

Returns default processor process symbol.

Returns:

  • (Symbol)

    default processor process symbol

:process

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Edrive::Dispatcher

#clear!, #clear_all!, #dispatch, #dispatch_with_data, #handlers

Constructor Details

#initialize(processor, processor_process = DEFAULT_PROCESSOR_PROCESS) ⇒ ProcessorDispatcher

Initialize

Parameters:

  • processor (Processor)

    processor object

  • processor_process (Symbol) (defaults to: DEFAULT_PROCESSOR_PROCESS)

    processor main method



21
22
23
24
25
# File 'lib/edrive/processor_dispatcher.rb', line 21

def initialize(processor, processor_process = DEFAULT_PROCESSOR_PROCESS)
  super()
  @processor = processor
  @processor_process = processor_process
end

Instance Attribute Details

#processorProcessor

processor object

Returns:

  • (Processor)

    the current value of processor



9
10
11
# File 'lib/edrive/processor_dispatcher.rb', line 9

def processor
  @processor
end

#processor_processSymbol

processor main method symbol

Returns:

  • (Symbol)

    the current value of processor_process



9
10
11
# File 'lib/edrive/processor_dispatcher.rb', line 9

def processor_process
  @processor_process
end

Instance Method Details

#dispatch_all(use_result = true) ⇒ Mixed

Dispatch all events

Parameters:

  • use_result (Boolean) (defaults to: true)

    use processor process result in after_process event

Returns:

  • (Mixed)

    last subscriber return value



41
42
43
44
45
46
47
48
49
# File 'lib/edrive/processor_dispatcher.rb', line 41

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) ⇒ Mixed

Dispach processor process

Parameters:

  • args (Mixed)

Returns:

  • (Mixed)

    processor process return value



54
55
56
# File 'lib/edrive/processor_dispatcher.rb', line 54

def dispatch_processor_process(*args)
  processor.send(processor_process, *args)
end

#subscribe(event, handler = nil, &block) ⇒ Array

subscribe handler (proc, lambda, block)

Parameters:

  • event (Symbol)

    event name symbol

  • handler (Proc) (defaults to: nil)

    handler (lambda, proc)

  • block (Block)

    handler (block)

Returns:

  • (Array)

    registered handler list

Raises:

  • ArgumentError



33
34
35
36
# File 'lib/edrive/processor_dispatcher.rb', line 33

def subscribe(event, handler = nil, &block)
  undefined_event_protect(event)
  super
end