| In: |
rinda/ring.rb
|
| Parent: | Object |
| broadcast_list | [RW] | |
| port | [RW] | |
| primary | [RW] |
# File rinda/ring.rb, line 57 def self.finger unless @@finger @@finger = self.new @@finger.lookup_ring_any end @@finger end
# File rinda/ring.rb, line 74 def initialize(broadcast_list=@@broadcast_list, port=Ring_PORT) @broadcast_list = broadcast_list || ['localhost'] @port = port @primary = nil @rings = [] end
# File rinda/ring.rb, line 86 def each lookup_ring_any unless @primary return unless @primary yield(@primary) @rings.each { |x| yield(x) } end
# File rinda/ring.rb, line 93 def lookup_ring(timeout=5, &block) return lookup_ring_any(timeout) unless block_given? msg = Marshal.dump([[:lookup_ring, DRbObject.new(block)], timeout]) @broadcast_list.each do |it| soc = UDPSocket.open begin soc.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true) soc.send(msg, 0, it, @port) rescue nil ensure soc.close end end sleep(timeout) end