Class: Artoo::Master

Inherits:
Object
  • Object
show all
Includes:
Celluloid
Defined in:
lib/artoo/master.rb

Overview

The Artoo::Master class is a registered supervisor class to keep track of all the running robots

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(bots) ⇒ Master

Create new master

Parameters:

  • robots (Collection)


10
11
12
# File 'lib/artoo/master.rb', line 10

def initialize(bots)
  @robots = bots
end

Instance Attribute Details

#robotsObject (readonly)

Returns the value of attribute robots.



6
7
8
# File 'lib/artoo/master.rb', line 6

def robots
  @robots
end

Instance Method Details

#continue_workObject

Continue work for each robot



61
62
63
# File 'lib/artoo/master.rb', line 61

def continue_work
  robots.each {|r| r.async.continue_work}
end

#pause_workObject

Pause work for each robot



53
54
55
56
57
58
# File 'lib/artoo/master.rb', line 53

def pause_work
  robots.each {|r|
    Logger.info "pausing #{r.name}"
    r.async.pause_work
  }
end

#robot(name) ⇒ Robot

Returns robot.

Parameters:

  • name (String)

Returns:



16
17
18
# File 'lib/artoo/master.rb', line 16

def robot(name)
  robots.find {|r| r.name == name}
end

#robot_connection(robot_id, connection_id) ⇒ Device

Returns robot connection.

Parameters:

  • robot_id (String)
  • connection_id (String)

Returns:

  • (Device)

    robot connection



42
43
44
# File 'lib/artoo/master.rb', line 42

def robot_connection(robot_id, connection_id)
  robot_connections(robot_id)[connection_id.intern]
end

#robot_connections(name) ⇒ Collection

Returns robot connections.

Parameters:

  • name (String)

Returns:

  • (Collection)

    robot connections



35
36
37
# File 'lib/artoo/master.rb', line 35

def robot_connections(name)
  robot(name).connections
end

#robot_device(name, device_id) ⇒ Device

Returns robot device.

Parameters:

  • name (String)
  • device_id (String)

Returns:



29
30
31
# File 'lib/artoo/master.rb', line 29

def robot_device(name, device_id)
  robot_devices(name)[device_id.intern]
end

#robot_devices(name) ⇒ Collection

Returns robot devices.

Parameters:

  • name (String)

Returns:

  • (Collection)

    robot devices



22
23
24
# File 'lib/artoo/master.rb', line 22

def robot_devices(name)
  robot(name).devices
end

#start_workObject

Do asynchronous work for each robot



47
48
49
50
# File 'lib/artoo/master.rb', line 47

def start_work
  robots.each {|r| r.async.work} unless Artoo::Robot.is_running?
  Artoo::Robot.running!
end

#stop_workObject

terminate all robots



66
67
68
69
# File 'lib/artoo/master.rb', line 66

def stop_work
  robots.each {|r| r.terminate} unless !Artoo::Robot.is_running?
  Artoo::Robot.stopped!
end