mirror of
https://github.com/sochix/TLSharp.git
synced 2026-04-07 15:36:23 +00:00
Redesign Everything
This commit is contained in:
parent
b5472c6cd7
commit
6af7c66a81
710 changed files with 32932 additions and 302 deletions
50
TeleSharp.TL/TLObject.cs
Normal file
50
TeleSharp.TL/TLObject.cs
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using TeleSharp.TL;
|
||||
namespace TeleSharp.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))
|
||||
{
|
||||
Serialize(bw);
|
||||
bw.Close();
|
||||
m.Close();
|
||||
return m.GetBuffer();
|
||||
}
|
||||
}
|
||||
public void Serialize(BinaryWriter writer)
|
||||
{
|
||||
writer.Write(Constructor);
|
||||
SerializeBody(writer);
|
||||
}
|
||||
public void Deserialize(BinaryReader reader)
|
||||
{
|
||||
int constructorId = reader.ReadInt32();
|
||||
if (constructorId != Constructor)
|
||||
throw new InvalidDataException("Constructor Invalid");
|
||||
DeserializeBody(reader);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue