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); }
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); }
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); }
public DhtSource(DhtAddress address) { }