# File lib/rubytorrent/controller.rb, line 177
  def initialize(server, package, info_hash, trackers, dlratelim=nil, ulratelim=nil, http_proxy=ENV["http_proxy"])
    @server = server
    @info_hash = info_hash
    @package = package
    @trackers = trackers
    @http_proxy = http_proxy

    @dlratelim = dlratelim
    @ulratelim = ulratelim

    @peers = [].extend(ArrayShuffle)
    @peers_m = Mutex.new
    @thread = nil

    @tracker = nil
    @last_tracker_attempt = nil
    @tracker_delay = DEAD_TRACKER_INITIAL_INTERVAL

    ## friends
    @num_friends = 0
    @num_optunchokes = 0
    @num_snubbed = 0

    ## keep track of the popularity of the pieces so as to assign
    ## blocks optimally to peers.
    @piece_order = PieceOrder.new @package

    @running = false
  end