Class: Qswarm::Swarm

Inherits:
Object
  • Object
show all
Includes:
Loggable
Defined in:
lib/qswarm/swarm.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Loggable

#logger, logger

Constructor Details

#initializeSwarm

Returns a new instance of Swarm.



17
18
19
20
21
# File 'lib/qswarm/swarm.rb', line 17

def initialize
  @agents = []
  $fqdn = Socket.gethostbyname(Socket.gethostname).first
  @brokers = {}
end

Class Method Details

.load(config) ⇒ Object



11
12
13
14
15
# File 'lib/qswarm/swarm.rb', line 11

def self.load(config)
  dsl = new
  dsl.instance_eval(File.read(config), config)
  dsl
end

Instance Method Details

#agent(name, args = nil, &block) ⇒ Object



27
28
29
30
# File 'lib/qswarm/swarm.rb', line 27

def agent(name, args = nil, &block)
  logger.info "Registering agent: #{name}"
  @agents << Qswarm::Agent.new(self, name, args, &block)
end

#broker(name, &block) ⇒ Object



32
33
34
35
# File 'lib/qswarm/swarm.rb', line 32

def broker(name, &block)
  logger.info "Registering broker: #{name}"
  @brokers[name] = Qswarm::Broker.new(name, &block)
end

#get_broker(name) ⇒ Object



37
38
39
# File 'lib/qswarm/swarm.rb', line 37

def get_broker(name)
  @brokers[name]
end

#logObject



23
24
25
# File 'lib/qswarm/swarm.rb', line 23

def log
  logger
end

#runObject



41
42
43
44
45
# File 'lib/qswarm/swarm.rb', line 41

def run
  EventMachine.run do
    @agents.map { |a| a.run }
  end
end