Module: Tor::Dispatcher

Defined in:
lib/rest_tor/dispatcher.rb

Class Method Summary collapse

Class Method Details

.modesObject



3
4
5
# File 'lib/rest_tor/dispatcher.rb', line 3

def self.modes
  @modes ||= {}
end

.register(name, &block) ⇒ Object



7
8
9
# File 'lib/rest_tor/dispatcher.rb', line 7

def self.register(name, &block)
  modes[name] = block
end

.run(name) ⇒ Object



24
25
26
# File 'lib/rest_tor/dispatcher.rb', line 24

def self.run(name)
  @modes[:"#{name}"].call
end

.take(mode: :default) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
# 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::TOR_PORT_START_WITH
      tor     = Tor.listen(port=port.next)
    end
    return [port, tor]
  end

  return []
end