module Tor::Dispatcher

Public Class Methods

modes() click to toggle source
# File lib/rest_tor/dispatcher.rb, line 3
def self.modes
  @modes ||= {}
end
register(name, &block) click to toggle source
# File lib/rest_tor/dispatcher.rb, line 7
def self.register(name, &block)
  modes[name] = block
end
run(name) click to toggle source
# File lib/rest_tor/dispatcher.rb, line 24
def self.run(name)
  @modes[:"#{name}"].call
end
take(mode: :default) click to toggle source
# File lib/rest_tor/dispatcher.rb, line 11
def self.take(mode: :default)
  Tor.lock("tor:pick", expires: 10) do
    port, tor = run(mode)
    if port.blank? || tor.blank?
      port, _ = Tor.store.max {|a,b | a[0] <=> b[0] } || Tor.config.port
      tor     = Tor.listen(port=port.next)
    end
    return [port, tor]
  end

  return []
end