コード例 #1
0
ファイル: Raw4Bit.cs プロジェクト: dsstest/SiennaCore
        public override bool Serialize(ref PacketOutStream Data)
        {
            if (val is UInt32)
            {
                Data.WriteUInt32R((UInt32)val);
            }
            else if (val is Int32)
            {
                Data.WriteInt32R((Int32)val);
            }
            else if (val is float)
            {
                Data.WriteFloat((float)val);
            }
            else if (val is byte[])
            {
                Data.Write((byte[])val);
            }
            else
            {
                return(false);
            }

            return(true);
        }
コード例 #2
0
ファイル: RiftClient.cs プロジェクト: dsstest/SiennaCore
        public void SendTCPWithSize(byte[] ToSend)
        {
            PacketOutStream St = new PacketOutStream();

            St.WriteEncoded7Bit(ToSend.Length);
            St.Write(ToSend);

            SendTCP(St.ToArray());
        }
コード例 #3
0
ファイル: Raw8Bit.cs プロジェクト: alterego21/SiennaCore
        public override bool Serialize(ref PacketOutStream Data)
        {
            if (val is byte[])
                Data.Write((byte[])val);
            else if (val is long)
                Data.WriteInt64R((long)val);
            else if (val is UInt64)
                Data.WriteUInt64R((UInt64)val);
            else
                return false;

            return true;
        }
コード例 #4
0
ファイル: Raw4Bit.cs プロジェクト: alterego21/SiennaCore
        public override bool Serialize(ref PacketOutStream Data)
        {
            if (val is UInt32)
                Data.WriteUInt32R((UInt32)val);
            else if (val is Int32)
                Data.WriteInt32R((Int32)val);
            else if (val is float)
                Data.WriteFloat((float)val);
            else if (val is byte[])
                Data.Write((byte[])val);
            else
                return false;

            return true;
        }
コード例 #5
0
ファイル: ArrayBit.cs プロジェクト: alterego21/SiennaCore
        public override bool Serialize(ref PacketOutStream Data)
        {
            byte[] Result = new byte[0];

            if (val is string)
            {
                Result = UTF8Encoding.UTF8.GetBytes((val as string));
            }
            else if (val is byte[])
            {
                Result = (val as byte[]);
            }

            if (Result == null || Result.Length <= 0)
                return false;

            Data.WriteEncoded7Bit(Result.Length);
            Data.Write(Result);

            return true;
        }
コード例 #6
0
ファイル: Raw8Bit.cs プロジェクト: dsstest/SiennaCore
        public override bool Serialize(ref PacketOutStream Data)
        {
            if (val is byte[])
            {
                Data.Write((byte[])val);
            }
            else if (val is long)
            {
                Data.WriteInt64R((long)val);
            }
            else if (val is UInt64)
            {
                Data.WriteUInt64R((UInt64)val);
            }
            else
            {
                return(false);
            }

            return(true);
        }
コード例 #7
0
        public static bool WriteField(ref PacketOutStream Stream, ISerializableField Field, int FieldIndex, int FieldType)
        {
            if (FieldType == (int)EPacketFieldType.Invalid)
            {
                return(false);
            }

            PacketOutStream NewStream = new PacketOutStream();

            long FieldResult;

            PacketOutStream.Encode2Parameters(out FieldResult, FieldType, FieldIndex);
            NewStream.WriteEncoded7Bit(FieldResult);

            if (Field == null || Field.Serialize(ref NewStream))
            {
                Stream.Write(NewStream.ToArray());
            }

            return(true);
        }
コード例 #8
0
ファイル: ArrayBit.cs プロジェクト: dsstest/SiennaCore
        public override bool Serialize(ref PacketOutStream Data)
        {
            byte[] Result = new byte[0];

            if (val is string)
            {
                Result = UTF8Encoding.UTF8.GetBytes((val as string));
            }
            else if (val is byte[])
            {
                Result = (val as byte[]);
            }

            if (Result == null || Result.Length <= 0)
            {
                return(false);
            }

            Data.WriteEncoded7Bit(Result.Length);
            Data.Write(Result);

            return(true);
        }
コード例 #9
0
        public static bool WritePacket(ref PacketOutStream Stream, ISerializablePacket Packet, bool WithSize = true, bool WithTerminator = true, bool WithOpcode = true)
        {
            if (Packet == null)
            {
                Log.Error("WritePacket", "Packet == null");
                return(false);
            }

            Packet.ConvertToField();

            PacketOutStream Data = new PacketOutStream();

            if (WithOpcode)
            {
                Data.WriteEncoded7Bit(Packet.Opcode);
            }

            foreach (ISerializableField Field in Packet.GetFields().Values)
            {
                WriteField(ref Data, Field);
            }

            if (WithTerminator && Packet.Opcode != (int)Opcodes.ProtocolHandshakeCompression)
            {
                WriteField(ref Data, null, 0, (int)EPacketFieldType.Terminator);
            }

            if (WithSize)
            {
                Stream.WriteEncoded7Bit(Data.Length);
            }

            Stream.Write(Data.ToArray());

            return(true);
        }
コード例 #10
0
ファイル: RiftClient.cs プロジェクト: alterego21/SiennaCore
        public void SendTCPWithSize(byte[] ToSend)
        {
            PacketOutStream St = new PacketOutStream();
            St.WriteEncoded7Bit(ToSend.Length);
            St.Write(ToSend);

            SendTCP(St.ToArray());
        }
コード例 #11
0
        public static bool WritePacket(ref PacketOutStream Stream,ISerializablePacket Packet, bool WithSize = true , bool WithTerminator = true, bool WithOpcode = true)
        {
            if (Packet == null)
            {
                Log.Error("WritePacket", "Packet == null");
                return false;
            }

            Packet.ConvertToField();

            PacketOutStream Data = new PacketOutStream();

            if (WithOpcode)
                Data.WriteEncoded7Bit(Packet.Opcode);

            foreach (ISerializableField Field in Packet.GetFields().Values)
                WriteField(ref Data, Field);

            if (WithTerminator && Packet.Opcode != (int)Opcodes.ProtocolHandshakeCompression)
                WriteField(ref Data, null, 0, (int)EPacketFieldType.Terminator);

            if (WithSize)
                Stream.WriteEncoded7Bit(Data.Length);

            Stream.Write(Data.ToArray());

            return true;
        }
コード例 #12
0
        public static bool WriteField(ref PacketOutStream Stream, ISerializableField Field, int FieldIndex, int FieldType)
        {
            if (FieldType == (int)EPacketFieldType.Invalid)
                return false;

            PacketOutStream NewStream = new PacketOutStream();

            long FieldResult;
            PacketOutStream.Encode2Parameters(out FieldResult, FieldType, FieldIndex);
            NewStream.WriteEncoded7Bit(FieldResult);

            if(Field == null || Field.Serialize(ref NewStream))
                Stream.Write(NewStream.ToArray());

            return true;
        }