Method: Evt::Bundled#block

Defined in:
lib/evt/backends/bundled.rb

#block(blocker, timeout = nil) ⇒ Object

Block the calling fiber.



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/evt/backends/bundled.rb', line 120

def block(blocker, timeout = nil)
  if timeout
    @waiting[Fiber.current] = current_time + timeout
    begin
      Fiber.yield
    ensure
      @waiting.delete(Fiber.current)
    end
  else
    @blocking += 1
    begin
      Fiber.yield
    ensure
      @blocking -= 1
    end
  end
end