Exemplo n.º 1
0
        public static bool WriteField(ref PacketOutStream Stream, EPacketFieldType FieldType, object Value, bool Force)
        {
            ISerializableField Field = GetFieldType(FieldType);

            Log.Debug("WriteField", "Type=" + FieldType + ",Val=" + Value + ",Field=" + Field);
            if (Field != null)
            {
                Field.val = Value;
                Field.Serialize(ref Stream, true);
                return(true);
            }

            return(false);
        }
Exemplo n.º 2
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, false))
            {
                Stream.Write(NewStream.ToArray());
            }

            return(true);
        }
Exemplo n.º 3
0
        public static byte[] FieldToBytes(ISerializablePacket Packet, string FieldName)
        {
            FieldInfo Info = Packet.GetType().GetField(FieldName);

            ISerializableFieldAttribute[] FieldsAttr = Info.GetCustomAttributes(typeof(ISerializableFieldAttribute), true) as ISerializableFieldAttribute[];
            if (FieldsAttr != null && FieldsAttr.Length > 0)
            {
                ISerializableField Field = Activator.CreateInstance(FieldsAttr[0].GetSerializableType()) as ISerializableField;
                Field.Index      = FieldsAttr[0].Index;
                Field.val        = Info.GetValue(Packet);
                Field.PacketType = PacketProcessor.GetFieldType(Field);

                PacketOutStream Str = new PacketOutStream();
                Field.Serialize(ref Str, true);
                byte[] Result = Str.ToArray();
                return(Result);
            }
            else
            {
                return(null);
            }
        }