U
    n–hö  ã                   @   sX   d dl Z d dlmZ ddlmZmZ ddlmZmZ G dd„ deƒZ	G d	d
„ d
eƒZ
dS )é    N)Úcrc32é   )Ú
ConnectionÚPacketCodecé   )ÚInvalidChecksumErrorÚInvalidBufferErrorc                       s0   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Z‡  ZS )ÚFullPacketCodecNc                    s   t ƒ  |¡ d| _d S )Nr   )ÚsuperÚ__init__Ú_send_counter)ÚselfÚ
connection©Ú	__class__© úm/var/www/html/peyman_registration/venvv2/lib/python3.8/site-packages/telethonv2/network/connection/tcpfull.pyr      s    zFullPacketCodec.__init__c                 C   sF   t |ƒd }t d|| j¡| }t dt|ƒ¡}|  jd7  _|| S )Né   ú<iiú<Ir   )ÚlenÚstructÚpackr   r   )r   ÚdataÚlengthÚcrcr   r   r   Úencode_packet   s
    zFullPacketCodec.encode_packetc                 Ã   s´   |  d¡I d H }t d|¡\}}|dk rJ|dk rJ|  d¡I d H }t|ƒ‚n|dk rZt|ƒ‚|  |d ¡I d H }t d|dd … ¡d }|d d… }t|| ƒ}||kr°t||ƒ‚|S )Né   r   r   é   r   éüÿÿÿ)Úreadexactlyr   Úunpackr   r   r   )r   ÚreaderZpacket_len_seqZ
packet_lenÚseqÚbodyÚchecksumÚvalid_checksumr   r   r   Úread_packet   s    

zFullPacketCodec.read_packet)Ú__name__Ú
__module__Ú__qualname__Útagr   r   r'   Ú__classcell__r   r   r   r   r	      s   	r	   c                   @   s   e Zd ZdZeZdS )ÚConnectionTcpFullzy
    Default Telegram mode. Sends 12 additional bytes and
    needs to calculate the CRC value of the packet itself.
    N)r(   r)   r*   Ú__doc__r	   Úpacket_codecr   r   r   r   r-   2   s   r-   )r   Úzlibr   r   r   r   Úerrorsr   r   r	   r-   r   r   r   r   Ú<module>   s
   *