/**
  * Fetches all relevant information from the file and generates a 
  * .torrent
  */
 public function toEncoded()
 {
     $infoArray["name"] = $this->name;
     $infoArray["piece length"] = $this->pieceLength;
     $infoArray["length"] = filesize($this->filename);
     $this->ensureSHA1Loaded();
     $infoArray["pieces"] = $this->concattedSHA1;
     $infoDictionary = new BElement(BDictionary::toEncoded($infoArray));
     $this->infoHash = sha1($infoDictionary->toEncoded(), true);
     $metainfoArray = array("announce" => $this->trackerURL, "info" => $infoDictionary);
     $metainfoArray["url-list"] = new BElement(BList::toEncoded($this->webseeds));
     $metainfoDictionary = BDictionary::toEncoded($metainfoArray);
     return $metainfoDictionary;
 }
function trackerError($error)
{
    echo BDictionary::toEncoded(array("failure_reason" => $error));
    exit;
}