57 lines
1.2 KiB
TypeScript
57 lines
1.2 KiB
TypeScript
export abstract class MTProtoRequest {
|
|
private sent: boolean;
|
|
|
|
private sequence: number;
|
|
|
|
private msgId: number;
|
|
|
|
private readonly dirty: boolean;
|
|
|
|
private sendTime: number;
|
|
|
|
private confirmReceived: boolean;
|
|
|
|
private constructorId: number;
|
|
|
|
private readonly confirmed: boolean;
|
|
|
|
private responded: boolean;
|
|
|
|
constructor() {
|
|
this.sent = false;
|
|
this.msgId = 0; // long
|
|
this.sequence = 0;
|
|
|
|
this.dirty = false;
|
|
this.sendTime = 0;
|
|
this.confirmReceived = false;
|
|
|
|
// These should be overrode
|
|
|
|
this.constructorId = 0;
|
|
this.confirmed = false;
|
|
this.responded = false;
|
|
}
|
|
|
|
// These should not be overrode
|
|
onSendSuccess() {
|
|
this.sendTime = new Date().getTime();
|
|
this.sent = true;
|
|
}
|
|
|
|
onConfirm() {
|
|
this.confirmReceived = true;
|
|
}
|
|
|
|
needResend() {
|
|
return this.dirty || (this.confirmed && !this.confirmReceived && new Date().getTime() - this.sendTime > 3000);
|
|
}
|
|
|
|
// These should be overrode
|
|
abstract onSend(): void;
|
|
|
|
abstract onResponse(_buffer: Buffer): void;
|
|
|
|
abstract onException(_exception: Error): void;
|
|
}
|