mirror of
https://github.com/sochix/TLSharp.git
synced 2025-12-06 08:02:00 +01:00
In "TLObject.Serialize() -> Serialize(BinaryWriter br) -> SerializeBody" code path, constructor get written two times instead of once, which since this code path is currently unused and it's only provided for completeness, It's undetectable while testing.
45 lines
1.2 KiB
C#
45 lines
1.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace TgSharp.TL
|
|
{
|
|
public class TLObjectAttribute : Attribute
|
|
{
|
|
public int Constructor { get; private set; }
|
|
|
|
public TLObjectAttribute(int Constructor)
|
|
{
|
|
this.Constructor = Constructor;
|
|
}
|
|
}
|
|
|
|
public abstract class TLObject
|
|
{
|
|
public abstract int Constructor { get; }
|
|
public abstract void SerializeBody(BinaryWriter bw);
|
|
public abstract void DeserializeBody(BinaryReader br);
|
|
public byte[] Serialize()
|
|
{
|
|
using (MemoryStream m = new MemoryStream())
|
|
using (BinaryWriter bw = new BinaryWriter(m))
|
|
{
|
|
SerializeBody(bw);
|
|
bw.Close();
|
|
m.Close();
|
|
return m.ToArray();
|
|
}
|
|
}
|
|
public void Deserialize(BinaryReader reader)
|
|
{
|
|
int constructorId = reader.ReadInt32();
|
|
if (constructorId != Constructor)
|
|
throw new InvalidDataException("Constructor Invalid");
|
|
DeserializeBody(reader);
|
|
}
|
|
}
|
|
}
|