Ejemplo n.º 1
0
		public override void Handle(DhtEngine engine, Node node)
		{
			base.Handle(engine, node);

			BEncodedString token = engine.TokenManager.GenerateToken(node);
			var response = new GetPeersResponse(engine.RoutingTable.LocalNode.Id, TransactionId, token);
			if (engine.Torrents.ContainsKey(InfoHash))
			{
				var list = new BEncodedList();
				foreach (Node n in engine.Torrents[InfoHash])
					list.Add(n.CompactPort());
				response.Values = list;
			}
			else
			{
				// Is this right?
				response.Nodes = Node.CompactNode(engine.RoutingTable.GetClosest(InfoHash));
			}

			engine.MessageLoop.EnqueueSend(response, node.EndPoint);
		}
Ejemplo n.º 2
0
        public override void Handle(DhtEngine engine, Node node)
        {
            base.Handle(engine, node);

            BEncodedString token    = engine.TokenManager.GenerateToken(node);
            var            response = new GetPeersResponse(engine.RoutingTable.LocalNode.Id, TransactionId, token);

            if (engine.Torrents.ContainsKey(InfoHash))
            {
                var list = new BEncodedList();
                foreach (Node n in engine.Torrents[InfoHash])
                {
                    list.Add(n.CompactPort());
                }
                response.Values = list;
            }
            else
            {
                response.Nodes = Node.CompactNode(engine.RoutingTable.GetClosest(InfoHash));
            }

            engine.MessageLoop.EnqueueSend(response, node, node.EndPoint);
        }
Ejemplo n.º 3
0
 public void GetPeersResponseEncode()
 {
     GetPeersResponse m = new GetPeersResponse(id, transactionId, token);
     m.Values = new BEncodedList();
     m.Values.Add((BEncodedString)"axje.u");
     m.Values.Add((BEncodedString)"idhtnm");
     Compare(m, "d1:rd2:id20:abcdefghij01234567895:token8:aoeusnth6:valuesl6:axje.u6:idhtnmee1:t2:aa1:y1:re");
 }