class Elected::Senado
Attributes
key[W]
stats[R]
timeout[W]
Public Class Methods
new(key = nil, timeout = nil)
click to toggle source
# File lib/elected/senado.rb, line 11 def initialize(key = nil, timeout = nil) @key = key @timeout = timeout @stats = Stats.new :elected, :rejected, :missing, :released end
Public Instance Methods
key()
click to toggle source
# File lib/elected/senado.rb, line 17 def key @key || Elected.key end
leader()
click to toggle source
# File lib/elected/senado.rb, line 26 def leader mutex.synchronize { get_leader || set_leader } end
leader?()
click to toggle source
# File lib/elected/senado.rb, line 30 def leader? !!leader end
release()
click to toggle source
# File lib/elected/senado.rb, line 34 def release return false unless @leader if @leader.current? Elected.electorado.unlock @leader.info @stats.increment :released end @leader = false end
timeout()
click to toggle source
In ms (milliseconds), defaults to 5 seconds
# File lib/elected/senado.rb, line 22 def timeout @timeout || Elected.timeout end
to_s()
click to toggle source
# File lib/elected/senado.rb, line 45 def to_s %{#<#{self.class.name} key=#{key.inspect} timeout=#{timeout} leader?=#{leader?}>} end
Also aliased as: inspect
Private Instance Methods
get_leader()
click to toggle source
# File lib/elected/senado.rb, line 57 def get_leader unless @leader @stats.increment :missing return false end return @leader if @leader.current? release end
mutex()
click to toggle source
# File lib/elected/senado.rb, line 53 def mutex @mutex ||= Mutex.new end
set_leader()
click to toggle source
# File lib/elected/senado.rb, line 68 def set_leader found = Elected.electorado.lock key, timeout if found @stats.increment :elected @leader = Lider.new found, timeout else @stats.increment :rejected false end end