class MTProtoRequest { 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 onSend() { throw Error("Not overload " + this.constructor.name); } onResponse(buffer) { } onException(exception) { } } module.exports = MTProtoRequest;