summaryrefslogtreecommitdiff
path: root/spec/ruby/core/fiber/fixtures/scheduler.rb
blob: 16bd2f6b443457edadf0aead9bf037c7b1d56671 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
module FiberSpecs

  class LoggingScheduler
    attr_reader :events
    def initialize
      @events = []
    end

    def block(*args)
      @events << { event: :block, fiber: Fiber.current, args: args }
      Fiber.yield
    end

    def io_wait(*args)
      @events << { event: :io_wait, fiber: Fiber.current, args: args }
      Fiber.yield
    end

    def kernel_sleep(*args)
      @events << { event: :kernel_sleep, fiber: Fiber.current, args: args }
      Fiber.yield
    end

    def unblock(*args)
      @events << { event: :unblock, fiber: Fiber.current, args: args }
      Fiber.yield
    end

    def fiber_interrupt(*args)
      @events << { event: :fiber_interrupt, fiber: Fiber.current, args: args }
      Fiber.yield
    end
  end

end