Sha256: d83453037b116e00003155c69f7a00e31ba658a5680b92005d3696da3fff2a88
Contents?: true
Size: 1.55 KB
Versions: 3
Compression:
Stored size: 1.55 KB
Contents
module Pione module Agent # TupleSpaceProvider is an agent that provides tuple space. class TupleSpaceProvider < BasicAgent set_agent_type :tuple_space_provider, self # # instance methods # def initialize(front) super() @front = front @reference = Marshal.dump(/druby:\/\/(.*):(\d+)/.match(@front.uri)[2].to_i) end # # agent activities # define_transition :send_packet define_transition :sleep chain :init => :send_packet chain :send_packet => :sleep chain :sleep => :send_packet # # transitions # def transit_to_send_packet send_packet end def transit_to_sleep sleep 5 end # # helper methods # # Send presence notification packets to tuple space receivers. def send_packet # open a UDP socket socket = UDPSocket.open socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, 1) # send broadcast packets Global.presence_notification_addresses.each do |address| begin Log::Debug.presence_notification do "provider sends presence notification packet from %s to %s" % [@front.uri, address, Time.now] end socket.send(@reference, 0, address.host, address.port) rescue => e Log::SystemLog.warn("tuple space provider agent failed to send a packet: %s" % e.message) end end ensure socket.close end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
pione-0.3.2 | lib/pione/agent/tuple-space-provider.rb |
pione-0.3.1 | lib/pione/agent/tuple-space-provider.rb |
pione-0.3.0 | lib/pione/agent/tuple-space-provider.rb |