public void AnnouncePeerEncode() { // var n = new Node(NodeId.Create(), null) {Token = _token}; var message = new AnnouncePeer(_id, _infohash, 6881, _token) { TransactionId = _transactionId }; Compare(message, "d1:ad2:id20:abcdefghij01234567899:info_hash20:mnopqrstuvwxyz1234564:porti6881e5:token8:aoeusnthe1:q13:announce_peer1:t2:aa1:y1:qe"); }
public void AnnouncePeerEncode() { Node n = new System.Net.BitTorrent.Dht.Node(NodeId.Create(), null); n.Token = token; AnnouncePeer m = new AnnouncePeer(id, infohash, 6881, token); m.TransactionId = transactionId; Compare(m, "d1:ad2:id20:abcdefghij01234567899:info_hash20:mnopqrstuvwxyz1234564:porti6881e5:token8:aoeusnthe1:q13:announce_peer1:t2:aa1:y1:qe"); }
public void AnnouncePeerDecode() { string text = "d1:ad2:id20:abcdefghij01234567899:info_hash20:mnopqrstuvwxyz1234564:porti6881e5:token8:aoeusnthe1:q13:announce_peer1:t2:aa1:y1:qe"; AnnouncePeer m = (AnnouncePeer)Decode("d1:ad2:id20:abcdefghij01234567899:info_hash20:mnopqrstuvwxyz1234564:porti6881e5:token8:aoeusnthe1:q13:announce_peer1:t2:aa1:y1:qe"); Assert.AreEqual(m.TransactionId, transactionId, "#1"); Assert.AreEqual(m.MessageType, QueryMessage.QueryType, "#2"); Assert.AreEqual(id, m.Id, "#3"); Assert.AreEqual(infohash, m.InfoHash, "#3"); Assert.AreEqual((BEncodedNumber)6881, m.Port, "#4"); Assert.AreEqual(token, m.Token, "#5"); Compare(m, text); message = m; }
public async Task Execute() { GetPeersTask getpeers = new GetPeersTask(engine, infoHash); var nodes = await getpeers.Execute(); foreach (Node n in nodes) { if (n.Token == null) { continue; } AnnouncePeer query = new AnnouncePeer(engine.LocalId, infoHash, port, n.Token); await engine.SendQueryAsync(query, n); } }
public async Task ExecuteAsync() { var getpeers = new GetPeersTask(engine, infoHash); IEnumerable <Node> nodes = await getpeers.ExecuteAsync(); var announceTasks = new List <Task> (); foreach (Node n in nodes) { if (n.Token != null) { var query = new AnnouncePeer(engine.LocalId, infoHash, port, n.Token); announceTasks.Add(engine.SendQueryAsync(query, n)); } } await Task.WhenAll(announceTasks); }
private void GotPeers(object o, TaskCompleteEventArgs e) { e.Task.Completed -= GotPeers; GetPeersTask getpeers = (GetPeersTask)e.Task; foreach (Node n in getpeers.ClosestActiveNodes.Values) { if (n.Token == null) { continue; } AnnouncePeer query = new AnnouncePeer(_engine.LocalId, _infoHash, _port, n.Token); SendQueryTask task = new SendQueryTask(_engine, query, n); task.Completed += SentAnnounce; task.Execute(); _activeAnnounces++; } if (_activeAnnounces == 0) { RaiseComplete(new TaskCompleteEventArgs(this)); } }