Sha256: ecc6b77d3128fd9b86b1773045639c388a3cb6423c7eac1b84dd07bf1dd6f9e8
Contents?: true
Size: 1.25 KB
Versions: 5
Compression:
Stored size: 1.25 KB
Contents
# Copyright 2009 emonti at matasano.com # See README.rdoc for license information # require 'socket' module Plug class Peer attr_reader :addr, :transport, :name, :owner, :host, :port attr_accessor :mute def initialize(addr, owner) @addr = addr @owner = owner @transport = @owner.transport @port, @host = Socket.unpack_sockaddr_in(@addr) @name = "PEER-#{@host}:#{@port}(#{@transport})" end def say(dat, sender) UI.dump(sender.name, self.name, dat) if @transport == :UDP @owner.send_datagram(dat, @host, @port) else @owner.send_data(dat) end end def close @owner.unbind unless @transport == :UDP end end class PeerList < Array def initialize(owner, *args) @owner = owner @transport = @owner.transport super(*args) end def find_peer(addr) self.find {|p| p.addr == addr } end def add_peer(addr) self << Peer.new(addr, @owner) self.last end def add_peer_manually(host, port) addr = Socket.pack_sockaddr_in(port, host) return (find_peer(addr) || add_peer(addr)) end def delete(addr) if p=find_peer(addr) p.close super(p) end end end end
Version data entries
5 entries across 5 versions & 2 rubygems
Version | Path |
---|---|
emonti-rbkb-0.6.9.1 | lib/rbkb/plug/peer.rb |
emonti-rbkb-0.6.9 | lib/rbkb/plug/peer.rb |
rbkb-0.6.12 | lib/rbkb/plug/peer.rb |
rbkb-0.6.11 | lib/rbkb/plug/peer.rb |
rbkb-0.6.10 | lib/rbkb/plug/peer.rb |