Class: Synapse::ProcessManager::ProcessManager Abstract

Inherits:
Object
  • Object
show all
Includes:
EventBus::EventListener
Defined in:
lib/synapse/process_manager/process_manager.rb

Overview

This class is abstract.

Represents a mechanism for managing the lifeycle and notification of process instances

Direct Known Subclasses

MappingProcessManager, SimpleProcessManager

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(repository, factory, lock_manager, *process_types) ⇒ undefined

Parameters:



25
26
27
28
29
30
31
32
33
# File 'lib/synapse/process_manager/process_manager.rb', line 25

def initialize(repository, factory, lock_manager, *process_types)
  @repository = repository
  @factory = factory
  @lock_manager = lock_manager
  @process_types = process_types.flatten

  @logger = Logging.logger[self.class]
  @suppress_exceptions = true
end

Instance Attribute Details

#factoryProcessFactory (readonly)

Returns:



12
13
14
# File 'lib/synapse/process_manager/process_manager.rb', line 12

def factory
  @factory
end

#lock_managerLockManager (readonly)

Returns:



9
10
11
# File 'lib/synapse/process_manager/process_manager.rb', line 9

def lock_manager
  @lock_manager
end

#repositoryProcessRepository (readonly)

Returns:



15
16
17
# File 'lib/synapse/process_manager/process_manager.rb', line 15

def repository
  @repository
end

#suppress_exceptionsBoolean

Returns true if exceptions will be logged silently

Returns:

  • (Boolean)

    Returns true if exceptions will be logged silently



18
19
20
# File 'lib/synapse/process_manager/process_manager.rb', line 18

def suppress_exceptions
  @suppress_exceptions
end

Instance Method Details

#notify(event) ⇒ undefined

Parameters:

  • event (EventMessage)

Returns:

  • (undefined)


37
38
39
40
41
42
43
44
45
46
47
# File 'lib/synapse/process_manager/process_manager.rb', line 37

def notify(event)
  @process_types.each do |process_type|
    correlation = extract_correlation process_type, event
    if correlation
      current = notify_current_processes process_type, event, correlation
      if should_start_new_process process_type, event, current
        start_new_process process_type, event, correlation
      end
    end
  end
end