Sha256: a0b9508670a66d2f5ca61c495a0b449b5ee0c8978b43a279e9e8baf77ed4b1ad

Contents?: true

Size: 846 Bytes

Versions: 1

Compression:

Stored size: 846 Bytes

Contents

class NetworkDiscoveryUdpApp<Service
  requires :udpBroadcast
  provides :networkDiscoveryUdp
  
  def initialize(cluster,options)
    super(cluster,options,:networkDiscoveryUdp)
    @nodes=[]
    @myNodes=[]
    @mutex=Mutex.new
    @quit=false
  end
  
  def add(node)
    @myNodes << node
  end
  
  def remove(node)
    @myNodes.delete(node)
  end
  
  def get
    (@nodes+@myNodes).uniq
  end
  
  def run
    begin
      @broadcast=getApp(:udpBroadcast)
      sleep 2
    end while @broadcast.nil?
    @connection=@broadcast.connect("networkDiscovery"){|result|
      @mutex.synchronize {
        @nodes << result
        @nodes.uniq!
      }
    }
    
    loop do
      @myNodes.uniq.each{|node|
        @connection.send(node)
      }
      sleep 2
      break if @quit
    end
    
  end
  
  def stop
    super
    @quit=true
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
appswarm-0.0.1 apps/network_discovery_udp/network_discovery_udp.rb