3
uQh^  ã               @   s\   d dl Z d dlZd dlZddlmZmZ G dd„ deƒZG dd„ deƒZG dd	„ d	eƒZdS )
é    Né   )Ú
ConnectionÚPacketCodecc               @   s$   e Zd ZdZeZdd„ Zdd„ ZdS )ÚIntermediatePacketCodecs   îîîîc             C   s   t jdt|ƒƒ| S )Nz<i)ÚstructÚpackÚlen)ÚselfÚdata© r   úO/tmp/pip-build-2nz6shyl/telethon/telethon/network/connection/tcpintermediate.pyÚencode_packet   s    z%IntermediatePacketCodec.encode_packetc             Ã   s,   t jd|jdƒI d H ƒd }|j|ƒI d H S )Nz<ié   r   )r   ÚunpackZreadexactly)r	   ÚreaderÚlengthr   r   r   Úread_packet   s    z#IntermediatePacketCodec.read_packetN)Ú__name__Ú
__module__Ú__qualname__ÚtagÚobfuscate_tagr   r   r   r   r   r   r      s   r   c                   s4   e Zd ZdZdZdZ‡ fdd„Z‡ fdd„Z‡  ZS )Ú!RandomizedIntermediatePacketCodecz‡
    Data packets are aligned to 4bytes. This codec adds random bytes of size
    from 0 to 3 bytes, which are ignored by decoder.
    Ns   ÝÝÝÝc                s&   t jddƒ}tj|ƒ}tƒ j|| ƒS )Nr   é   )ÚrandomÚrandintÚosÚurandomÚsuperr   )r	   r
   Úpad_sizeÚpadding)Ú	__class__r   r   r      s    
z/RandomizedIntermediatePacketCodec.encode_packetc             ƒ   s8   t ƒ j|ƒI d H }t|ƒd }|dkr4|d | … S |S )Nr   r   )r   r   r   )r	   r   Zpacket_with_paddingr   )r!   r   r   r   !   s
    z-RandomizedIntermediatePacketCodec.read_packet)	r   r   r   Ú__doc__r   r   r   r   Ú__classcell__r   r   )r!   r   r      s
   r   c               @   s   e Zd ZdZeZdS )ÚConnectionTcpIntermediatezŠ
    Intermediate mode between `ConnectionTcpFull` and `ConnectionTcpAbridged`.
    Always sends 4 extra bytes for the packet length.
    N)r   r   r   r"   r   Zpacket_codecr   r   r   r   r$   )   s   r$   )	r   r   r   Ú
connectionr   r   r   r   r$   r   r   r   r   Ú<module>   s   