/**
         * Send the request to connected hubs .
         * */
        private void DispatchRequest(G2PacketQ2 pack)
        {
            int      count = 0;
            NodePeer hub   = null;

            while (count < Settings.PEER_DISPATCH_QUERY)
            {
                hub = G2Network.Instance.getQueryableHub();
                hub.DontQueryBefore(Settings.SEARCH_TIME_OUT_MS);
                hub.SendPacket(pack);
                G2Log.Write("G2SearchManager : Sent Query " + getTermsByGUID(pack.guid) + " on " + hub.ToString());
                count++;
            }
        }
Exemple #2
0
        // parse the many hubs data there are in a ack packet
        private G2Packet HandlePacketQA(NodePeer p, G2PacketQA pack)
        {
            foreach (G2Packet child in pack.children)
            {
                if (child.type == G2PacketType.S) // search hubs data
                {
                    G2PacketS s = child as G2PacketS;
                    if (s == null)
                    {
                        continue;
                    }

                    if (s.Timestamp != -1)
                    {
                        DateTime lastSeen = BinaryUtils.UnixTimeStampToDateTime(s.Timestamp);
                        cache.AddHub(new NodePeer(s.Node.ipv4, s.Node.port, lastSeen, true));
                    }
                    else
                    {
                        cache.AddHub(new NodePeer(s.Node.ipv4, s.Node.port, DateTime.Now, true));
                    }
                }
                else if (child.type == G2PacketType.RA)
                {
                    G2PacketRA ra = child as G2PacketRA;
                    if (ra == null || ra.Seconds == 0)
                    {
                        continue;
                    }
                    p.DontQueryBefore(ra.Seconds * 1000);
                }
                else if (child.type == G2PacketType.D)
                {
                    G2PacketD d = child as G2PacketD;
                    if (d.Node != null)
                    {
                        cache.AddHub(new NodePeer(d.Node, true));
                    }
                }
            }
            return(null);
        }
        // parse the many hubs data there are in a ack packet
        private G2Packet HandlePacketQA(NodePeer p, G2PacketQA pack)
        {
            foreach (G2Packet child in pack.children)
            {
                if(child.type == G2PacketType.S) // search hubs data
                {
                    G2PacketS s = child as G2PacketS;
                    if(s == null) continue;

                    if(s.Timestamp != -1) {
                        DateTime lastSeen = BinaryUtils.UnixTimeStampToDateTime(s.Timestamp);
                        cache.AddHub(new NodePeer(s.Node.ipv4, s.Node.port,lastSeen,true));
                    }
                    else
                        cache.AddHub(new NodePeer(s.Node.ipv4, s.Node.port,DateTime.Now, true));

                }
                else if(child.type == G2PacketType.RA)
                {
                    G2PacketRA ra = child as G2PacketRA;
                    if (ra == null || ra.Seconds == 0) continue;
                    p.DontQueryBefore(ra.Seconds * 1000);
                }
                else if (child.type == G2PacketType.D)
                {
                    G2PacketD d = child as G2PacketD;
                    if (d.Node != null)
                        cache.AddHub(new NodePeer(d.Node, true));
                }
            }
            return null;
        }