o
    �õ±j¢
  ã                   @   s(   d dl Z G dd„ dƒZG dd„ dƒZdS )é    Nc                   @   sD   e Zd Zddd„Zdd„ Zdd„ Zdefd	d
„Zdd„ Zdd„ Z	dS )Ú
Packetizeréÿÿ  c                 C   ó
   || _ d S ©N©Úbuffer_size©Úselfr   © r
   úŸ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asysocks/unicomm/common/packetizers/__init__.pyÚ__init__   ó   
zPacketizer.__init__c                 O   ó   d S r   r
   ©r	   ÚargsÚkwr
   r
   r   Úpacketizer_control   ó   zPacketizer.packetizer_controlc                 C   ó   dS ©Nó    r
   ©r	   r
   r
   r   Úflush_buffer   r   zPacketizer.flush_bufferr   c                 C   r   r   r   r   r
   r
   r   Úset_buffersize   r   zPacketizer.set_buffersizec                 C  ó   �|V  d S r   r
   ©r	   Údatar
   r
   r   Údata_out   ó   €
zPacketizer.data_outc                 C  r   r   r
   r   r
   r
   r   Údata_in   r   zPacketizer.data_inN©r   )
Ú__name__Ú
__module__Ú__qualname__r   r   r   Úintr   r   r   r
   r
   r
   r   r      s    
r   c                   @   sh   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
efdd„Zddd„Z	dd„ Z
ddd„Zdd„ Zdd„ ZdS )ÚStreamPacketizerr   c                 C   s.   || _ d| _t ¡ | _t ¡ | _t ¡ | _d S r   )r   ÚbufferÚasyncioÚEventÚstream_endedÚLockÚ_StreamPacketizer__read_lockÚdata_incoming_evtr   r
   r
   r   r      s
   

zStreamPacketizer.__init__c                 Ã   s   �d S r   r
   r   r
   r
   r   Ú	terminate   s   €zStreamPacketizer.terminatec                 O   r   r   r
   r   r
   r
   r   r   "   r   z#StreamPacketizer.packetizer_controlc                 C   r   r   r
   r   r
   r
   r   r   %   r   zStreamPacketizer.flush_bufferr   c                 C   r   r   r   r   r
   r
   r   r   (   r   zStreamPacketizer.set_buffersizeó   
c              	   Ã   sà   �| j  ¡ r
tdƒ‚| j ¡ rtdƒ‚| j4 I d H šI | j |¡dkr>| j ¡ I d H  | j 	¡  | j  ¡ r6n| j |¡dks#| j |¡t
|ƒ }| jd |… }| j|d … | _|W  d   ƒI d H  S 1 I d H siw   Y  d S )NúStream ended!ú(A read operation is already in progress!éÿÿÿÿ)r)   Úis_setÚ	Exceptionr+   Úlockedr&   Úfindr,   ÚwaitÚclearÚlen)r	   ÚendÚmÚresr
   r
   r   Ú	readuntil+   s"   €



ü0özStreamPacketizer.readuntilc              	   Ã   sä   �| j  ¡ r
tdƒ‚|dk rtdƒ‚|dkrdS | j ¡ r!tdƒ‚| j4 I d H š= t| jƒ|k rJ| j ¡ I d H  | j 	¡  | j  ¡ rCnt| jƒ|k s0| jd |… }| j|d … | _|W  d   ƒI d H  S 1 I d H skw   Y  d S )Nr/   r   zN must be >0r   r0   ©
r)   r2   r3   r+   r4   r8   r&   r,   r6   r7   ©r	   Únr;   r
   r
   r   Úreadexactly?   s(   €



ü0özStreamPacketizer.readexactlyr1   c              	   Ã   sÚ   �| j  ¡ r
tdƒ‚| j ¡ rtdƒ‚| j4 I d H šF t| jƒdkr<| j ¡ I d H  | j 	¡  | j  ¡ r5nt| jƒdks"|dkrEt| jƒ}| jd |… }| j|d … | _|W  d   ƒI d H  S 1 I d H sfw   Y  d S )Nr/   r0   r   r1   r=   r>   r
   r
   r   ÚreadV   s$   €



ü
0õzStreamPacketizer.readc                 C  r   r   r
   r   r
   r
   r   r   i   r   zStreamPacketizer.data_outc                 Ã   sX   �| j  ¡ r|dkrtdƒ‚|dkr| j  ¡  | j ¡  d S |  j|7  _| j ¡  d S )Nr   z*More data incoming after stream has ended!)r)   r2   r3   Úsetr,   r&   r   r
   r
   r   r   l   s   €
zStreamPacketizer.data_inNr    )r.   )r1   )r!   r"   r#   r   r-   r   r   r$   r   r<   r@   rA   r   r   r
   r
   r
   r   r%      s    


r%   )r'   r   r%   r
   r
   r
   r   Ú<module>   s    