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) { 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 (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 (!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 void SendSerialized(ISerializablePacket Packet) { PacketOutStream Out = PacketProcessor.WritePacket(Packet); byte[] ToSend = Out.ToArray(); SendTCP(ToSend); Out.Dispose(); }
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 static PacketOutStream WritePacket(ISerializablePacket Packet) { PacketOutStream Stream = new PacketOutStream(); WritePacket(ref Stream, Packet, true, true, true); return(Stream); }
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) { if (val == null) { return(false); } return(PacketProcessor.WritePacket(ref Data, (ISerializablePacket)val, false, true, 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 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 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 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 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 override bool Serialize(ref PacketOutStream Data,bool Force) { return true; }
public override bool Serialize(ref PacketOutStream Data, bool Force) { return(true); }
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 abstract bool Serialize(ref PacketOutStream Data, bool Force);