mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-08-08 21:10:29 +00:00
Avoid using BinaryWriter where possible
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import os
|
||||
import struct
|
||||
from datetime import timedelta
|
||||
from zlib import crc32
|
||||
from enum import Enum
|
||||
@@ -6,7 +7,7 @@ from enum import Enum
|
||||
import errno
|
||||
|
||||
from ..crypto import AESModeCTR
|
||||
from ..extensions import BinaryWriter, TcpClient
|
||||
from ..extensions import TcpClient
|
||||
from ..errors import InvalidChecksumError
|
||||
|
||||
|
||||
@@ -175,30 +176,22 @@ class Connection:
|
||||
# https://core.telegram.org/mtproto#tcp-transport
|
||||
# total length, sequence number, packet and checksum (CRC32)
|
||||
length = len(message) + 12
|
||||
with BinaryWriter(known_length=length) as writer:
|
||||
writer.write_int(length)
|
||||
writer.write_int(self._send_counter)
|
||||
writer.write(message)
|
||||
writer.write_int(crc32(writer.get_bytes()), signed=False)
|
||||
self._send_counter += 1
|
||||
self.write(writer.get_bytes())
|
||||
data = struct.pack('<ii', length, self._send_counter) + message
|
||||
crc = struct.pack('<I', crc32(data))
|
||||
self._send_counter += 1
|
||||
self.write(data + crc)
|
||||
|
||||
def _send_intermediate(self, message):
|
||||
with BinaryWriter(known_length=len(message) + 4) as writer:
|
||||
writer.write_int(len(message))
|
||||
writer.write(message)
|
||||
self.write(writer.get_bytes())
|
||||
self.write(struct.pack('<i', len(message)) + message)
|
||||
|
||||
def _send_abridged(self, message):
|
||||
with BinaryWriter(known_length=len(message) + 4) as writer:
|
||||
length = len(message) >> 2
|
||||
if length < 127:
|
||||
writer.write_byte(length)
|
||||
else:
|
||||
writer.write_byte(127)
|
||||
writer.write(int.to_bytes(length, 3, 'little'))
|
||||
writer.write(message)
|
||||
self.write(writer.get_bytes())
|
||||
length = len(message) >> 2
|
||||
if length < 127:
|
||||
length = struct.pack('B', length)
|
||||
else:
|
||||
length = b'\x7f' + int.to_bytes(length, 3, 'little')
|
||||
|
||||
self.write(length + message)
|
||||
|
||||
# endregion
|
||||
|
||||
|
Reference in New Issue
Block a user