class Synapse::ProcessManager::SimpleProcessManager

Simple implementation of a process manager

Attributes

always_create_events[RW]

@return [Array<Class>] Types of events that will always result in the creation of a process

optionally_create_events[RW]

@return [Array<Class>] Types of events that will result in the creation of a process if one

doesn't already exist

Public Class Methods

new(repository, factory, lock_manager, correlation_resolver, *process_types) click to toggle source

@param [ProcessRepository] repository @param [ProcessFactory] factory @param [LockManager] lock_manager @param [CorrelationResolver] correlation_resolver @param [Class…] process_types @return [undefined]

# File lib/synapse/process_manager/simple_process_manager.rb, line 18
def initialize(repository, factory, lock_manager, correlation_resolver, *process_types)
  super repository, factory, lock_manager, *process_types

  @correlation_resolver = correlation_resolver
  @always_create_events = Array.new
  @optionally_create_events = Array.new
end

Protected Instance Methods

creation_policy_for(process_type, event) click to toggle source

@param [Class] process_type @param [EventMessage] event @return [Symbol]

# File lib/synapse/process_manager/simple_process_manager.rb, line 31
def creation_policy_for(process_type, event)
  if @always_create_events.include? event.payload_type
    :always
  elsif @optionally_create_events.include? event.payload_type
    :if_none_found
  else
    :none
  end
end
extract_correlation(process_type, event) click to toggle source

@param [Class] process_type @param [EventMessage] event @return [Correlation] Returns nil if no correlation could be extracted

# File lib/synapse/process_manager/simple_process_manager.rb, line 44
def extract_correlation(process_type, event)
  @correlation_resolver.resolve event
end