Beispiel #1
0
        public static DhtAddress ReadPacket(G2Header root)
        {
            // read payload
            DhtAddress address = new DhtAddress();

            address.UserID   = BitConverter.ToUInt64(root.Data, root.PayloadPos);
            address.ClientID = BitConverter.ToUInt16(root.Data, root.PayloadPos + 8);
            address.UdpPort  = BitConverter.ToUInt16(root.Data, root.PayloadPos + 10);

            // read packets
            G2Protocol.ResetPacket(root);

            G2Header child = new G2Header(root.Data);

            while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD)
            {
                if (!G2Protocol.ReadPayload(child))
                {
                    continue;
                }

                switch (child.Name)
                {
                case Packet_IP:
                    address.IP = new IPAddress(Utilities.ExtractBytes(child.Data, child.PayloadPos, child.PayloadSize));
                    break;
                }
            }

            return(address);
        }
Beispiel #2
0
        public static NetworkPacket Decode(G2Header root)
        {
            NetworkPacket gn = new NetworkPacket();

            if (G2Protocol.ReadPayload(root))
            {
                gn.InternalData = Utilities.ExtractBytes(root.Data, root.PayloadPos, root.PayloadSize);
            }

            G2Protocol.ResetPacket(root);


            G2Header child = new G2Header(root.Data);

            while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD)
            {
                if (!G2Protocol.ReadPayload(child))
                {
                    continue;
                }

                switch (child.Name)
                {
                case Packet_SourceID:
                    gn.SourceID = BitConverter.ToUInt64(child.Data, child.PayloadPos);
                    break;

                case Packet_ClientID:
                    gn.ClientID = BitConverter.ToUInt16(child.Data, child.PayloadPos);
                    break;

                case Packet_To:
                    gn.ToAddress = DhtAddress.ReadPacket(child);
                    break;

                case Packet_From:
                    gn.FromAddress = DhtAddress.ReadPacket(child);
                    break;
                }
            }

            return(gn);
        }
Beispiel #3
0
        public override bool Equals(object obj)
        {
            DhtAddress check = obj as DhtAddress;

            if (check == null)
            {
                return(false);
            }

            if (UserID == check.UserID &&
                ClientID == check.ClientID &&
                IP.Equals(check.IP) &&
                UdpPort == check.UdpPort)
            {
                return(true);
            }

            return(false);
        }
Beispiel #4
0
 public DhtSource(DhtAddress address)
 {
 }