class Synapse::ProcessManager::InMemoryProcessRepository

Process repository that stores all processes in memory

While the storage of processes are thread-safe, the processes themselves may not be. Use a lock manager if the processes are not thread-safe.

Public Class Methods

new() click to toggle source
# File lib/synapse/process_manager/repository/in_memory.rb, line 8
def initialize
  @managed_processes = Hash.new
  @mutex = Mutex.new
end

Public Instance Methods

add(process) click to toggle source

@param [Process] process @return [undefined]

# File lib/synapse/process_manager/repository/in_memory.rb, line 52
def add(process)
  if process.active?
    commit process
  end
end
commit(process) click to toggle source

@param [Process] process @return [undefined]

# File lib/synapse/process_manager/repository/in_memory.rb, line 38
def commit(process)
  @mutex.synchronize do
    if process.active?
      @managed_processes.store process.id, process
    else
      @managed_processes.delete process.id
    end
  end

  process.correlations.commit
end
count() click to toggle source

@return [Integer] The number of processes managed by this repository

# File lib/synapse/process_manager/repository/in_memory.rb, line 59
def count
  @managed_processes.count
end
find(type, correlation) click to toggle source

@param [Class] type @param [Correlation] correlation @return [Set<String>]

# File lib/synapse/process_manager/repository/in_memory.rb, line 16
def find(type, correlation)
  matching = Array.new

  @managed_processes.each_value do |process|
    if process.correlations.include? correlation
      matching.push process.id
    end
  end

  matching
end
load(id) click to toggle source

@param [String] id @return [Process] Returns nil if process could not be found

# File lib/synapse/process_manager/repository/in_memory.rb, line 30
def load(id)
  if @managed_processes.has_key? id
    @managed_processes.fetch id
  end
end