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"   



0z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(   



0z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$   




0z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    