public void Test_CreateFindNodeResponse() { var tid = DHTTransactions.GetNextId(); var nodeId = DHTId.CreateRandom(); DHTMessage msg = DHTMessage.CreateFindNodeResponse(tid, nodeId, new List <DHTNode>()); Assert.IsNotNull(msg); Assert.AreEqual(MessageType.Response, msg.Type); // TODO: test contents }
private void OnRecvFindNodeQuery(IPEndPoint ipinfo, BDictionary data) { var t = data.Get <BString>("t"); var args = data.Get <BDictionary>("a"); var id = args.Get <BString>("id"); var target = args.Get <BString>("target"); fLogger.WriteDebug("Receive `find_node` query from {0} [{1}]", ipinfo.ToString(), id.Value.ToHexString()); fRoutingTable.UpdateNode(new DHTNode(id.Value, ipinfo)); var nodesList = fRoutingTable.FindNodes(target.Value); Send(ipinfo, DHTMessage.CreateFindNodeResponse(t, fLocalID, nodesList)); }
private void OnRecvFindNodeQuery(IPEndPoint ipinfo, BDictionary data) { var t = data.Get <BString>("t"); var args = data.Get <BDictionary>("a"); var id = args.Get <BString>("id"); var target = args.Get <BString>("target"); var remoteNode = new DHTNode(id.Value, ipinfo); UpdateRoutingTable(remoteNode); #if DEBUG_DHT_INTERNALS fLogger.WriteDebug("Receive `find_node` query from {0}", remoteNode.ToString()); #endif var nodesList = fRoutingTable.GetClosest(target.Value); Send(ipinfo, DHTMessage.CreateFindNodeResponse(t, fLocalID, nodesList)); }