Sha256: 446832efd8e096bfd3933bb92e5683b3c96b44f7afd0eae6c2714b8345325fd1

Contents?: true

Size: 614 Bytes

Versions: 1

Compression:

Stored size: 614 Bytes

Contents

# encoding: UTF-8
require 'em-synchrony'

# Monkey-patch
module Kernel
  alias_method :orig_sleep, :sleep

  class << self
    attr_accessor :em_synchrony_sleep_hook
  end

  # Monkey-patch
  def sleep(sleep_time)
    if Kernel.em_synchrony_sleep_hook &&
       EM.reactor_thread? &&
       !Thread.current[:em_synchrony_sleep_hook_called]
      begin
        Thread.current[:em_synchrony_sleep_hook_called] = true
        Kernel.em_synchrony_sleep_hook.call(sleep_time)
      ensure
        Thread.current[:em_synchrony_sleep_hook_called] = false
      end
    else
      orig_sleep(sleep_time)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
em-synchrony-1.0.5 lib/em-synchrony/kernel.rb