Fix initial events handling for mux worker

* Rename `before_wait' worker callback to `before_watch';
* Setup `before_watch' callback in the runner, handling events with the
  manager;
* Test the mux worker with a cucumber scenario.
This commit is contained in:
Thibault Jouan
2015-04-24 19:49:55 +00:00
parent e68d3fd6a3
commit cd06f99e9f
5 changed files with 25 additions and 2 deletions

View File

@@ -58,6 +58,9 @@ module Uh
def worker
@worker ||= Workers.build(*(@env.worker)).tap do |w|
w.before_watch do
@manager.handle_pending_events
end
w.on_read do
@manager.handle_pending_events
end

View File

@@ -2,7 +2,7 @@ module Uh
module WM
module Workers
class Base
CALLBACKS = %w[before_wait on_timeout on_read on_read_next].freeze
CALLBACKS = %w[before_watch on_timeout on_read on_read_next].freeze
def initialize **options
@ios = []

View File

@@ -8,7 +8,7 @@ module Uh
end
def work_events
@before_wait.call if @before_wait
@before_watch.call if @before_watch
if res = select(@ios, [], [], @timeout) then @on_read.call res
else @on_timeout.call if @on_timeout end
end