Class: IO::Event::Debug::Selector

Inherits:
Object
  • Object
show all
Defined in:
lib/io/event/debug/selector.rb

Overview

Enforces the selector interface and delegates operations to a wrapped selector instance.

Instance Method Summary collapse

Constructor Details

#initialize(selector) ⇒ Selector

Returns a new instance of Selector.



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/io/event/debug/selector.rb', line 25

def initialize(selector)
	@selector = selector
	
	@readable = {}
	@writable = {}
	@priority = {}
	
	unless Fiber.current == selector.loop
		Kernel::raise "Selector must be initialized on event loop fiber!"
	end
end

Instance Method Details

#closeObject



41
42
43
44
45
46
47
48
# File 'lib/io/event/debug/selector.rb', line 41

def close
	if @selector.nil?
		Kernel::raise "Selector already closed!"
	end
	
	@selector.close
	@selector = nil
end

#io_read(fiber, io, buffer, length) ⇒ Object



84
85
86
# File 'lib/io/event/debug/selector.rb', line 84

def io_read(fiber, io, buffer, length)
	@selector.io_read(fiber, io, buffer, length)
end

#io_wait(fiber, io, events) ⇒ Object



79
80
81
# File 'lib/io/event/debug/selector.rb', line 79

def io_wait(fiber, io, events)
	@selector.io_wait(fiber, io, events)
end

#io_write(fiber, io, buffer, length) ⇒ Object



88
89
90
# File 'lib/io/event/debug/selector.rb', line 88

def io_write(fiber, io, buffer, length)
	@selector.io_write(fiber, io, buffer, length)
end

#process_wait(*arguments) ⇒ Object



75
76
77
# File 'lib/io/event/debug/selector.rb', line 75

def process_wait(*arguments)
	@selector.process_wait(*arguments)
end

#push(fiber) ⇒ Object



63
64
65
# File 'lib/io/event/debug/selector.rb', line 63

def push(fiber)
	@selector.push(fiber)
end

#raise(fiber, *arguments) ⇒ Object



67
68
69
# File 'lib/io/event/debug/selector.rb', line 67

def raise(fiber, *arguments)
	@selector.raise(fiber, *arguments)
end

#ready?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/io/event/debug/selector.rb', line 71

def ready?
	@selector.ready?
end

#resume(*arguments) ⇒ Object



55
56
57
# File 'lib/io/event/debug/selector.rb', line 55

def resume(*arguments)
	@selector.resume(*arguments)
end

#select(duration = nil) ⇒ Object



93
94
95
96
97
98
99
# File 'lib/io/event/debug/selector.rb', line 93

def select(duration = nil)
	unless Fiber.current == @selector.loop
		Kernel::raise "Selector must be run on event loop fiber!"
	end
	
	@selector.select(duration)
end

#transferObject

Transfer from the calling fiber to the event loop.



51
52
53
# File 'lib/io/event/debug/selector.rb', line 51

def transfer
	@selector.transfer
end

#wakeupObject



37
38
39
# File 'lib/io/event/debug/selector.rb', line 37

def wakeup
	@selector.wakeup
end

#yieldObject



59
60
61
# File 'lib/io/event/debug/selector.rb', line 59

def yield
	@selector.yield
end