Sha256: a1c38a26d0255a60514b7bd12ee0097a18935bf8ea6c656b455c5a64705f74d4

Contents?: true

Size: 973 Bytes

Versions: 1

Compression:

Stored size: 973 Bytes

Contents

# frozen_string_literal: true

require 'drb'

Class.include UU::Remotable

module DRb
  class DRbObject
    alias __orig_method_missing method_missing
    def method_missing(*args, &blk) # rubocop:disable Style/MethodMissingSuper, Style/MissingRespondToMissing
      __orig_method_missing(*args, &blk)
    rescue DRb::DRbConnError, Errno::ECONNREFUSED
      sleep 0.1
      retry
    end
  end
end

module UU
  class RemoteHelper
    def initialize
      @mutex = Mutex.new
      @count = 0
    end

    attr_reader :count

    def disable
      @mutex.synchronize do
        @count += 1
        GC.disable
      end
    end

    def enable
      @mutex.synchronize do
        @count -= 1
        break unless @count <= 0
        GC.enable
      end
    end

    def reset
      @mutex.synchronize do
        @count = 0
        GC.enable
      end
    end

    def eval_(code)
      instance_eval(code)
    end

    def klass(name)
      eval_(name.to_s)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
uu-0.1.3 lib/drb/http0helper.rb