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