Class: Async::DebugSelector

Inherits:
Object
  • Object
show all
Defined in:
lib/async/debug.rb

Defined Under Namespace

Classes: MonitorProxy

Instance Method Summary collapse

Constructor Details

#initialize(selector) ⇒ DebugSelector

Returns a new instance of DebugSelector.



45
46
47
48
# File 'lib/async/debug.rb', line 45

def initialize(selector)
	@selector = selector
	@monitors = {}
end

Instance Method Details

#closeObject



74
75
76
77
78
79
80
# File 'lib/async/debug.rb', line 74

def close
	if @monitors.any?
		$stderr.puts "Trying to close selector with active monitors: #{@monitors.values.inspect}!"
	end
	
	@selector.close
end

#deregister(io) ⇒ Object



62
63
64
65
66
67
68
# File 'lib/async/debug.rb', line 62

def deregister(io)
	$stderr.puts "Deregistering #{io.inspect}."
	
	unless @monitors.delete(io.fileno)
		raise RuntimeError, "Trying to remove monitor for #{io.inspect} but it was not registered!"
	end
end

#register(io, interests) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/async/debug.rb', line 50

def register(io, interests)
	$stderr.puts "Registering #{io.inspect} for #{interests}."
	
	if monitor = @monitors[io.fileno]
		raise RuntimeError, "Trying to register monitor for #{io.inspect} but it was already registered as #{monitor.io.inspect}!"
	end
	
	@monitors[io.fileno] = io
	
	MonitorProxy.new(@selector.register(io, interests), self)
end

#select(*args) ⇒ Object



82
83
84
# File 'lib/async/debug.rb', line 82

def select(*args)
	@selector.select(*args)
end

#wakeupObject



70
71
72
# File 'lib/async/debug.rb', line 70

def wakeup
	@selector.wakeup
end