# File lib/rubytorrent/peer.rb, line 116 def initialize(name, controller, socket, package) @name = name @controller = controller @socket = socket @package = package @running = false ## my state @want_blocks = [].extend(ArrayDelete2) # blocks i want @want_blocks_m = Mutex.new @choking = true @interested = false @snubbing = false ## peer's state @peer_want_blocks = [].extend(ArrayDelete2) @peer_choking = true # assumption of initial condition @peer_interested = false # ditto @peer_pieces = Array.new(@package.num_pieces, false) # ditto @peer_virgin = true # does the peer have any pieces at all? ## connection stats @dlmeter = RateMeter.new @ulmeter = RateMeter.new @send_q = Queue.new # output thread takes messages from here and # puts them on the wire end