private void btnOpen_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "torrent file (*.torrent)|*.torrent|All files (*.*)|*.*"; if (dialog.ShowDialog() == DialogResult.OK) { try { coder_ = new Bencoder(); coder_.OpenFile(dialog.FileName); TreeNode root = treeView1.Nodes.Add("Root"); AddRootToTree(root, coder_.root_); root.Expand(); currentPath_ = Path.GetDirectoryName(dialog.FileName); currentFileName_ = Path.GetFileName(dialog.FileName); btnSaveAs.Enabled = true; btnClear.Enabled = true; fileDict_ = coder_.root_.FindFileDict(); for (int i = 0; i < fileList_.Count; i++) { string extName = fileList_[i].extName_; if (extName == ".mp4" || extName == ".avi" || extName == ".mkv" || extName == ".mpg" || extName == ".rmvb" || extName == ".rm" || extName == ".wmv" || extName == ".zip" || extName == ".rar" || extName == ".iso") { } else { checkedListBox1.SetItemChecked(i, true); } } } catch (System.Exception ex) { MessageBox.Show("Open Error: " + ex.Message); } } }
public void Decode(Bencoder file) { if (len_ != 0) { byte[] buf = file.ReadBytes(len_); value_ = System.Text.Encoding.UTF8.GetString(buf); org_ = buf; } }
public void Encode(Bencoder file) { if (len_ == 0) { file.WriteInt(0); file.WriteChar(':'); } else { file.WriteInt(len_); file.WriteChar(':'); file.WriteBytes(org_, org_.Length); } }
public void Decode(Bencoder file) { IBenNode node = BenDecoder.NextNote(file); while (node != null) { nodes_.Add(node); node = BenDecoder.NextNote(file); } }
public void Encode(Bencoder file) { foreach (IBenNode node in nodes_) { node.Encode(file); } }
public void Decode(Bencoder file) { IBenNode item = BenDecoder.NextNote(file); while (item != null) { list_.Add(item); item = BenDecoder.NextNote(file); } }
public void Encode(Bencoder file) { file.WriteChar('l'); foreach (IBenNode node in list_) { node.Encode(file); } file.WriteChar('e'); }
public void Encode(Bencoder file) { file.WriteChar('i'); file.WriteInt(value_); file.WriteChar('e'); }
public void Decode(Bencoder file) { string value = string.Empty; char c = file.ReadChar(); while (c != 'e') { value += c; c = file.ReadChar(); } value_ = Convert.ToInt64(value); }
public void Encode(Bencoder file) { file.WriteChar('d'); foreach (KeyValuePair<BenString, IBenNode> pair in dict_) { pair.Key.Encode(file); pair.Value.Encode(file); } file.WriteChar('e'); }
public void Decode(Bencoder file) { IBenNode key = BenDecoder.NextNote(file); while (key != null) { IBenNode value = BenDecoder.NextNote(file); if ((key as BenString).value_ == "path") { (value as BenList).isPathList_ = true; } if ((key as BenString).value_ == "files") { (value as BenList).isFileList_ = true; } dict_.Add(key as BenString, value); key = BenDecoder.NextNote(file); } }
public static IBenNode NextNote(Bencoder file) { IBenNode node = null; char key = file.ReadChar(); switch (key) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': string stringLen = string.Empty; char c = key; while (c != ':') { stringLen += c.ToString(); c = file.ReadChar(); } BenString benString = new BenString(System.Int32.Parse(stringLen)); benString.Decode(file); node = benString; break; case 'i': BenInt i = new BenInt(); i.Decode(file); node = i; break; case 'd': BenDictionary dict = new BenDictionary(); dict.Decode(file); node = dict; break; case 'l': BenList list = new BenList(); list.Decode(file); node = list; break; } return node; }