public override bool Serialize(ref PacketOutStream Data, bool Force) { if (!Force && (val == null || val.ToString() == "0")) return false; Data.WriteEncoded7Bit((long)(Convert.ChangeType(val,typeof(long)))); return true; }
public override bool Serialize(ref PacketOutStream Data, bool Force) { if (!Force && (val == null || val.ToString() == "0")) return false; 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; }
public override bool Serialize(ref PacketOutStream Data, bool Force) { if (!Force && (val == null || val.ToString() == "0")) return false; 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; }
public override bool Serialize(ref PacketOutStream Data,bool Force) { if (!Force && (val == null || val.ToString() == "0")) return false; 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; }
public override bool Serialize(ref PacketOutStream Data,bool Force) { return true; }
public static PacketOutStream WritePacket(ISerializablePacket Packet) { PacketOutStream Stream = new PacketOutStream(); WritePacket(ref Stream, Packet,true,true,true); return Stream; }
public static bool WritePacket(ref PacketOutStream Stream,ISerializablePacket Packet, bool WithSize = true , bool WithTerminator = true, bool WithOpcode = true) { if (Packet == null) return false; lock (Packet) { 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()); Packet.Fields.Clear(); } return true; }
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; }
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; }
public static bool WriteField(ref PacketOutStream Stream, ISerializableField Field) { if (Field == null) return false; return WriteField(ref Stream, Field, Field.Index, (int)Field.PacketType); }
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; }
public void SendTCPWithSize(byte[] ToSend) { PacketOutStream St = new PacketOutStream(); St.WriteEncoded7Bit(ToSend.Length); St.Write(ToSend); SendTCP(St.ToArray()); }
public override bool Serialize(ref PacketOutStream Data,bool Force) { Log.Debug("WriteList", "Serialize : " + val); if (val == null) return false; if (val is List<ISerializablePacket>) { List<ISerializablePacket> Packets = val as List<ISerializablePacket>; /*if (Packets.Count <= 0) return false;*/ long ListData; PacketOutStream.Encode2Parameters(out ListData, (int)EPacketFieldType.Packet, Packets.Count); Data.WriteEncoded7Bit(ListData); foreach (ISerializablePacket Packet in Packets) PacketProcessor.WritePacket(ref Data, Packet, false, true, true); } else if (val is ISerializablePacket[]) { ISerializablePacket[] Packets = val as ISerializablePacket[]; long ListData; PacketOutStream.Encode2Parameters(out ListData, (int)EPacketFieldType.Packet, Packets.Length); Data.WriteEncoded7Bit(ListData); foreach (ISerializablePacket Packet in Packets) PacketProcessor.WritePacket(ref Data, Packet, false, true, true); } else if (val is List<ulong>) { List<ulong> Values = val as List<ulong>; long ListData; PacketOutStream.Encode2Parameters(out ListData, (int)EPacketFieldType.Unsigned7BitEncoded, Values.Count); Data.WriteEncoded7Bit(ListData); for (int i = 0; i < Values.Count; ++i) PacketProcessor.WriteField(ref Data, EPacketFieldType.Unsigned7BitEncoded, (ulong)Values[i], true); } else if (val is List<long>) { List<long> Values = val as List<long>; long ListData; PacketOutStream.Encode2Parameters(out ListData, (int)EPacketFieldType.Unsigned7BitEncoded, Values.Count); Data.WriteEncoded7Bit(ListData); for (int i = 0; i < Values.Count; ++i) PacketProcessor.WriteField(ref Data, EPacketFieldType.Unsigned7BitEncoded, (long)Values[i],true); } else if (val is List<uint>) { List<uint> Values = val as List<uint>; /*if (Values.Count <= 0) return false;*/ long ListData; PacketOutStream.Encode2Parameters(out ListData, (int)EPacketFieldType.Raw4Bytes, Values.Count); Data.WriteEncoded7Bit(ListData); for (int i = 0; i < Values.Count; ++i) PacketProcessor.WriteField(ref Data, EPacketFieldType.Raw4Bytes, (uint)Values[i], true); } else if (val is List<float>) { List<float> Values = val as List<float>; /*if (Values.Count <= 0) return false;*/ long ListData; PacketOutStream.Encode2Parameters(out ListData, (int)EPacketFieldType.Raw4Bytes, Values.Count); Data.WriteEncoded7Bit(ListData); for (int i = 0; i < Values.Count; ++i) PacketProcessor.WriteField(ref Data, EPacketFieldType.Raw4Bytes, Values[i], true); } else if (val is List<string>) { List<string> Strs = val as List<string>; /*if (Strs.Count <= 0) return false;*/ long ListData; PacketOutStream.Encode2Parameters(out ListData, (int)EPacketFieldType.ByteArray, Strs.Count); Data.WriteEncoded7Bit(ListData); for (int i = 0; i < Strs.Count; ++i) PacketProcessor.WriteField(ref Data, EPacketFieldType.ByteArray, (string)Strs[i], true); return true; } else if (val is List<ISerializableField>) { List<ISerializableField> Strs = val as List<ISerializableField>; if (Strs.Count <= 0) return false; ISerializableField Field = Strs[0]; long ListData; PacketOutStream.Encode2Parameters(out ListData, (int)Field.PacketType, Strs.Count); Data.WriteEncoded7Bit(ListData); for (int i = 0; i < Strs.Count; ++i) PacketProcessor.WriteField(ref Data, Strs[i].PacketType, Strs[i].val, true); return true; } else return false; return true; }
public override bool Serialize(ref PacketOutStream Data, bool Force) { if (val == null) return false; if (val is Dictionary<long, ISerializablePacket>) { Dictionary<long, ISerializablePacket> Dic = val as Dictionary<long, ISerializablePacket>; int KeyType = (int)EPacketFieldType.Unsigned7BitEncoded; int ValueType = (int)EPacketFieldType.Packet; int Count = Dic.Count; if (Count <= 0) return false; long DicData; PacketOutStream.Encode3Parameters(out DicData, KeyType, ValueType, Count); Data.WriteEncoded7Bit(DicData); foreach (KeyValuePair<long, ISerializablePacket> KP in Dic) { PacketProcessor.WriteField(ref Data, (EPacketFieldType)KeyType, KP.Key,true); PacketProcessor.WriteField(ref Data, (EPacketFieldType)ValueType, KP.Value,true); } return true; } return false; }
public override bool Serialize(ref PacketOutStream Data, bool Force) { if (val == null) return false; return PacketProcessor.WritePacket(ref Data, (ISerializablePacket)val, false, true, true); }
public abstract bool Serialize(ref PacketOutStream Data,bool Force);