Class: EventMachine::Breakout::Grid
- Inherits:
-
Object
- Object
- EventMachine::Breakout::Grid
- Defined in:
- lib/em-breakout/grid.rb
Instance Attribute Summary collapse
-
#browsers ⇒ Object
readonly
Returns the value of attribute browsers.
-
#disconnected_browsers ⇒ Object
readonly
Returns the value of attribute disconnected_browsers.
-
#grid_key ⇒ Object
readonly
Returns the value of attribute grid_key.
-
#work_queue ⇒ Object
readonly
Returns the value of attribute work_queue.
-
#worker_queue ⇒ Object
readonly
Returns the value of attribute worker_queue.
-
#workers ⇒ Object
readonly
Returns the value of attribute workers.
Instance Method Summary collapse
-
#initialize(worker) ⇒ Grid
constructor
A new instance of Grid.
- #release ⇒ Object
- #try_work ⇒ Object
Constructor Details
#initialize(worker) ⇒ Grid
Returns a new instance of Grid.
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/em-breakout/grid.rb', line 10 def initialize(worker) @browsers = Hash.new # bid => browser @disconnected_browsers = Hash.new # bid => browser @workers = Hash.new # worker => true @work_queue = Hash.new # browser => true @worker_queue = Hash.new # worker => true @grid_key = worker.request["query"]["grid_key"] @name = worker.grid_name GRIDS[@name] = self end |
Instance Attribute Details
#browsers ⇒ Object (readonly)
Returns the value of attribute browsers.
8 9 10 |
# File 'lib/em-breakout/grid.rb', line 8 def browsers @browsers end |
#disconnected_browsers ⇒ Object (readonly)
Returns the value of attribute disconnected_browsers.
8 9 10 |
# File 'lib/em-breakout/grid.rb', line 8 def disconnected_browsers @disconnected_browsers end |
#grid_key ⇒ Object (readonly)
Returns the value of attribute grid_key.
8 9 10 |
# File 'lib/em-breakout/grid.rb', line 8 def grid_key @grid_key end |
#work_queue ⇒ Object (readonly)
Returns the value of attribute work_queue.
8 9 10 |
# File 'lib/em-breakout/grid.rb', line 8 def work_queue @work_queue end |
#worker_queue ⇒ Object (readonly)
Returns the value of attribute worker_queue.
8 9 10 |
# File 'lib/em-breakout/grid.rb', line 8 def worker_queue @worker_queue end |
#workers ⇒ Object (readonly)
Returns the value of attribute workers.
8 9 10 |
# File 'lib/em-breakout/grid.rb', line 8 def workers @workers end |
Instance Method Details
#release ⇒ Object
21 22 23 24 25 |
# File 'lib/em-breakout/grid.rb', line 21 def release GRIDS.delete @name @browsers.each_value { |browser| browser.close_websocket } @worker_queue = {} end |
#try_work ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/em-breakout/grid.rb', line 27 def try_work return if @work_queue.empty? return if @worker_queue.empty? browser = @work_queue.shift.first msg = browser..shift return unless msg worker = @worker_queue.shift.first browser.wip = true worker.browser = browser worker.send("#{browser.route}\n#{browser.bid}\n#{msg}") end |