示例#1
0
        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());
            }
        }
示例#2
0
        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());
            }
        }