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
    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?
    raise "Selector already closed!"
  end
  
  @selector.close
  @selector = nil
end

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



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

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

#io_wait(fiber, io, events) ⇒ Object



82
83
84
# File 'lib/io/event/debug/selector.rb', line 82

def io_wait(fiber, io, events)
  register_readable(fiber, io, events)
end

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



91
92
93
# File 'lib/io/event/debug/selector.rb', line 91

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

#process_wait(*arguments) ⇒ Object



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

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

#push(fiber) ⇒ Object



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

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

#raise(fiber, *arguments) ⇒ Object



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

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

#ready?Boolean

Returns:

  • (Boolean)


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

def ready?
  @selector.ready?
end

#resume(*arguments) ⇒ Object



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

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

#select(duration = nil) ⇒ Object



96
97
98
99
100
101
102
# File 'lib/io/event/debug/selector.rb', line 96

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

#transfer(*arguments) ⇒ Object



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

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

#wakeupObject



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

def wakeup
  @selector.wakeup
end

#yieldObject



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

def yield
  @selector.yield
end