1 # -*- encoding: binary -*-
6 defined?(NeverBlock) or raise
9 # core module for all things that use Fibers in Rainbows!
10 module Rainbows::Fiber
12 # blocked readers (key: fileno, value: Rainbows::Fiber::IO object)
15 # blocked writers (key: fileno, value: Rainbows::Fiber::IO object)
18 # sleeping fibers go here (key: Fiber object, value: wakeup time)
21 # puts the current Fiber into uninterruptible sleep for at least
22 # +seconds+. Unlike Kernel#sleep, this it is not possible to sleep
23 # indefinitely to be woken up (nobody wants that in a web server,
24 # right?). Calling this directly is deprecated, use
25 # Rainbows.sleep(seconds) instead.
26 def self.sleep(seconds)
27 ZZ[Fiber.current] = Time.now + seconds
31 autoload :Base, 'rainbows/fiber/base'
32 autoload :Queue, 'rainbows/fiber/queue'
33 autoload :IO, 'rainbows/fiber/io'