Rinda::RingServer (Class)

In: rinda/ring.rb
Parent: Object

Methods

Included Modules

DRbUndumped

Public Class methods

[Source]

# File rinda/ring.rb, line 13
    def initialize(ts, port=Ring_PORT)
      @ts = ts
      @soc = UDPSocket.open
      @soc.bind('', port)
      @w_service = write_service
      @r_service = reply_service
    end

Public Instance methods

[Source]

# File rinda/ring.rb, line 48
    def do_reply
      tuple = @ts.take([:lookup_ring, DRbObject])
      Thread.new { tuple[1].call(@ts) rescue nil}
    rescue
    end

[Source]

# File rinda/ring.rb, line 30
    def do_write(msg)
      Thread.new do
        begin
          tuple, sec = Marshal.load(msg)
          @ts.write(tuple, sec)
        rescue
        end
      end
    end

[Source]

# File rinda/ring.rb, line 40
    def reply_service
      Thread.new do
        loop do
          do_reply
        end
      end
    end

[Source]

# File rinda/ring.rb, line 21
    def write_service
      Thread.new do
        loop do
          msg = @soc.recv(1024)
          do_write(msg)
        end
      end
    end

[Validate]