Module: OnyxCord::Internal::AsyncRuntime

Defined in:
lib/onyxcord/internal/async_runtime.rb

Class Method Summary collapse

Class Method Details

.async(&block) ⇒ Object



17
18
19
20
21
22
# File 'lib/onyxcord/internal/async_runtime.rb', line 17

def async(&block)
  current = Async::Task.current?
  return current.async(&block) if current

  Async(&block)
end

.run(&block) ⇒ Object



10
11
12
13
14
15
# File 'lib/onyxcord/internal/async_runtime.rb', line 10

def run(&block)
  current = Async::Task.current?
  return yield current if current

  Sync(&block)
end

.sleep(duration) ⇒ Object



24
25
26
27
28
29
# File 'lib/onyxcord/internal/async_runtime.rb', line 24

def sleep(duration)
  task = Async::Task.current?
  return task.sleep(duration) if task.respond_to?(:sleep)

  Kernel.sleep(duration)
end