TLSharp/TLSharp.Core/Requests/MTProtoRequest.cs

47 lines
984 B
C#
Raw Normal View History

2015-09-28 04:01:17 +02:00
using System;
using System.IO;
namespace TLSharp.Core.Requests
{
public abstract class MTProtoRequest
{
public MTProtoRequest()
{
Sended = false;
}
public long MessageId { get; set; }
public int Sequence { get; set; }
public bool Dirty { get; set; }
public bool Sended { get; private set; }
public DateTime SendTime { get; private set; }
public bool ConfirmReceived { get; set; }
public abstract void OnSend(BinaryWriter writer);
public abstract void OnResponse(BinaryReader reader);
public abstract void OnException(Exception exception);
public abstract bool Confirmed { get; }
public abstract bool Responded { get; }
public virtual void OnSendSuccess()
{
SendTime = DateTime.Now;
Sended = true;
}
public virtual void OnConfirm()
{
ConfirmReceived = true;
}
public bool NeedResend
{
get
{
return Dirty || (Confirmed && !ConfirmReceived && DateTime.Now - SendTime > TimeSpan.FromSeconds(3));
}
}
}
}