Sha256: 9e40030688645fba18e93835f63089ab41ac8c312770a4a5b6b6ca2303213cae

Contents?: true

Size: 1.17 KB

Versions: 5

Compression:

Stored size: 1.17 KB

Contents

class ProconBypassMan::QueueOverProcess
  attr_reader :drb

  @@drb_server = nil
  @@drb_server_thread = nil

  def self.start!
    return unless ProconBypassMan.config.enable_remote_macro?
    require 'drb/drb'

    FileUtils.rm_rf(file_path) if File.exist?(file_path)
    begin
      @@drb_server = DRb.start_service(url, Queue.new, safe_level: 1)
    rescue Errno::EADDRINUSE => e
      ProconBypassMan.logger.error e
      raise
    end

    @@drb_server_thread =
      Thread.new do
        DRb.thread.join
      end
  end

  def self.shutdown
    if @@drb_server
      @@drb_server_thread.kill
      @@drb_server.stop_service
    end
  end

  def self.push(value)
    return unless ProconBypassMan.config.enable_remote_macro?

    drb.push(value)
  end

  def self.pop
    return unless ProconBypassMan.config.enable_remote_macro?

    drb.pop
  end

  def self.drb
    return unless ProconBypassMan.config.enable_remote_macro?

    @@drb ||= new.drb
  end

  PROTOCOL = "drbunix"
  def self.url
    "#{PROTOCOL}:/tmp/procon_bypass_man_queue"
  end

  def self.file_path
    url.gsub("#{PROTOCOL}:", "")
  end

  def initialize
    @drb = DRbObject.new_with_uri(self.class.url)
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
procon_bypass_man-0.2.2 lib/procon_bypass_man/remote_macro/queue_over_process.rb
procon_bypass_man-0.2.1 lib/procon_bypass_man/remote_macro/queue_over_process.rb
procon_bypass_man-0.2.0 lib/procon_bypass_man/remote_macro/queue_over_process.rb
procon_bypass_man-0.1.23 lib/procon_bypass_man/remote_macro/queue_over_process.rb
procon_bypass_man-0.1.22 lib/procon_bypass_man/remote_macro/queue_over_process.rb