File: reactor.rb

package info (click to toggle)
ruby-async 2.36.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 400 kB
  • sloc: ruby: 1,938; makefile: 4
file content (34 lines) | stat: -rw-r--r-- 838 bytes parent folder | download
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
# frozen_string_literal: true

# Released under the MIT License.
# Copyright, 2017-2025, by Samuel Williams.
# Copyright, 2017, by Kent Gruber.
# Copyright, 2018, by Sokolov Yura.

require_relative "scheduler"

module Async
	# A wrapper around the the scheduler which binds it to the current thread automatically.
	class Reactor < Scheduler
		# @deprecated Replaced by {Kernel::Async}.
		def self.run(...)
			warn("`Async::Reactor.run{}` is deprecated, use `Async{}` instead.", uplevel: 1, category: :deprecated) if $VERBOSE
			
			Async(...)
		end
		
		# Initialize the reactor and assign it to the current Fiber scheduler.
		def initialize(...)
			super
			
			Fiber.set_scheduler(self)
		end
		
		# Close the reactor and remove it from the current Fiber scheduler.
		def scheduler_close
			self.close
		end
		
		public :sleep
	end
end