module Aggro
Private: Define methods to protect handlers from code reloading.
Public: Module for namespacing and configuration methods.
Constants
- ClientNode
- Event
- EventArgument
- EventStream
- MESSAGE_TYPES
- QueryError
- VERSION
Attributes
data_dir[W]
logger[W]
port[W]
publisher_port[W]
transport[W]
Public Instance Methods
channels()
click to toggle source
# File lib/aggro.rb, line 127 def channels if cluster_config.server_node? @channels ||= begin Aggro.store.registry.reduce({}) do |channels, (id, type)| channels.merge id => Channel.new(id, type) end end else @channels ||= {} end end
class_attributes()
click to toggle source
# File lib/aggro.rb, line 17 def class_attributes @class_attributes ||= Hash.new { |hash, key| hash[key] = {} } end
cluster_config()
click to toggle source
# File lib/aggro.rb, line 139 def cluster_config @cluster_config ||= ClusterConfig.new cluster_config_path end
cluster_config_path()
click to toggle source
# File lib/aggro.rb, line 143 def cluster_config_path [data_dir, 'cluster.yml'].join('/') end
command_handlers()
click to toggle source
# File lib/aggro.rb, line 21 def command_handlers @command_handlers ||= Hash.new { |hash, key| hash[key] = {} } end
data_dir()
click to toggle source
# File lib/aggro.rb, line 147 def data_dir @data_dir ||= begin ENV.fetch('AGGRO_DIR') { './tmp/aggro' }.tap do |dir| FileUtils.mkdir_p dir end end end
event_bus()
click to toggle source
# File lib/aggro.rb, line 155 def event_bus @event_bus ||= EventBus.new end
local_node()
click to toggle source
# File lib/aggro.rb, line 159 def local_node if cluster_config.server_node? @local_node ||= LocalNode.new(cluster_config.node_name) else @local_node ||= ClientNode.new(SecureRandom.uuid) end end
logger()
click to toggle source
# File lib/aggro.rb, line 167 def logger @logger ||= -> (_level, _progname, _message = nil, &_block) {} end
node_list()
click to toggle source
# File lib/aggro.rb, line 171 def node_list @node_list ||= begin NodeList.new.tap do |node_list| nodes = cluster_config.nodes nodes.each { |name, server| node_list.add Node.new(name, server) } node_list.add local_node if cluster_config.server_node? end end end
port()
click to toggle source
# File lib/aggro.rb, line 181 def port @port ||= ENV.fetch('PORT') { 5000 }.to_i end
publisher_port()
click to toggle source
# File lib/aggro.rb, line 185 def publisher_port @publisher_port ||= ENV.fetch('PUBLISHER_PORT') { 6000 }.to_i end
query_handlers()
click to toggle source
# File lib/aggro.rb, line 25 def query_handlers @query_handlers ||= Hash.new { |hash, key| hash[key] = {} } end
reset()
click to toggle source
# File lib/aggro.rb, line 189 def reset @cluster_config = nil @event_bus.shutdown if @event_bus @event_bus = nil @local_node = nil reset_clients && @node_list = nil @port = nil @publisher_port = nil @server.stop if @server @server = nil @store = nil end
reset_clients()
click to toggle source
# File lib/aggro.rb, line 202 def reset_clients return unless @node_list @node_list.nodes .select { |node| node.is_a? Node } .map(&:client) .each(&:disconnect!) end
server()
click to toggle source
# File lib/aggro.rb, line 211 def server return unless cluster_config.server_node? @server ||= Server.new(local_node.endpoint, local_node.publisher_endpoint) end
step_handlers()
click to toggle source
# File lib/aggro.rb, line 29 def step_handlers @step_handlers ||= Hash.new { |hash, key| hash[key] = {} } end
store()
click to toggle source
# File lib/aggro.rb, line 217 def store @store ||= FileStore.new(data_dir) end
transport()
click to toggle source
# File lib/aggro.rb, line 221 def transport @transport ||= ZeroMQTransport end