public override byte[] Encode(G2Protocol protocol) { lock (protocol.WriteSection) { G2Frame loc = protocol.WritePacket(null, LocationPacket.Data, null); protocol.WritePacket(loc, Packet_Key, Key); Source.WritePacket(protocol, loc, Packet_Source); protocol.WritePacket(loc, Packet_IP, IP.GetAddressBytes()); protocol.WritePacket(loc, Packet_Name, UTF8Encoding.UTF8.GetBytes(Name)); protocol.WritePacket(loc, Packet_Place, UTF8Encoding.UTF8.GetBytes(Place)); protocol.WritePacket(loc, Packet_Version, CompactNum.GetBytes(Version)); protocol.WritePacket(loc, Packet_GMTOffset, BitConverter.GetBytes(GmtOffset)); protocol.WritePacket(loc, Packet_Away, BitConverter.GetBytes(Away)); protocol.WritePacket(loc, Packet_AwayMsg, UTF8Encoding.UTF8.GetBytes(AwayMessage)); foreach (DhtAddress proxy in Proxies) { proxy.WritePacket(protocol, loc, Packet_Proxies); } foreach (PatchTag tag in Tags) { protocol.WritePacket(loc, Packet_Tag, tag.ToBytes()); } if (TunnelClient != null) { protocol.WritePacket(loc, Packet_TunnelClient, TunnelClient.ToBytes()); } foreach (DhtAddress server in TunnelServers) { server.WritePacket(protocol, loc, Packet_TunnelServers); } return(protocol.WriteFinish()); } }
public override byte[] Encode(G2Protocol protocol) { lock (protocol.WriteSection) { G2Frame tunnel = protocol.WritePacket(null, RootPacket.Tunnel, Payload); protocol.WritePacket(tunnel, Packet_Source, Source.ToBytes()); protocol.WritePacket(tunnel, Packet_Target, Target.ToBytes()); if (SourceServer != null) { SourceServer.WritePacket(protocol, tunnel, Packet_SourceServer); } if (TargetServer != null) { TargetServer.WritePacket(protocol, tunnel, Packet_TargetServer); } return(protocol.WriteFinish()); } }