o
    FDi2                     @   s   d dl Z d dlmZmZ d dlZd dlmZ d dlmZ d dl	m
Z
mZ dZdZG dd	 d	ZG d
d dZG dd deZG dd deZdS )    N)StreamReaderStreamWriter)OperationalError)	constants)BaseCompressorget_decompressor_clsl    l    c                   @   s   e Zd ZdejfdedefddZdd Zde	fd	d
Z
defddZdefddZdd Zdd Zd+ddZdedefddZdefddZdd Zdd Zdd  Zd!d" Zd#d$ Zdefd%d&Zdefd'd(Zdefd)d*ZdS ),BufferedWriterNwritermax_buffer_sizec                 C   s   || _ || _t | _d| _d S Nr   )r
   r	   	bytearraybufferposition)selfr	   r
    r   V/var/www/Datamplify/venv/lib/python3.10/site-packages/asynch/proto/streams/buffered.py__init__   s   
zBufferedWriter.__init__c                    s<   | j sd S | j | j t | _d| _| j  I d H  d S r   )r	   writer   r   r   drainr   r   r   r   flush   s   zBufferedWriter.flushdatac                    sB   | j | |  jt|7  _| j| jkr|  I d H  d S d S N)r   extendr   lenr
   r   r   r   r   r   r   write_bytes   s   zBufferedWriter.write_bytesc                    s"   t j|}| |I d H  d S r   )leb128iencoder   r   r   packetr   r   r   write_varint#   s   zBufferedWriter.write_varintc                    s2   |  }| t|I d H  | |I d H  d S r   )r   r"   r   r   r    r   r   r   	write_str'   s   zBufferedWriter.write_strc                    sL   |D ] }t |tr| }n|}| t|I d H  | |I d H  qd S r   )
isinstancestrr   r"   r   r   )r   r   itemr!   r   r   r   write_strings,   s   

zBufferedWriter.write_stringsc                    s@   |D ]}t |tr| }n|}| ||dI d H  qd S )N    )r$   r%   r   r   ljust)r   r   lengthr&   r!   r   r   r   write_fixed_strings5   s   

z"BufferedWriter.write_fixed_stringsreturnc                    s*   | j sd S | j   | j  I d H  d S r   )r	   closewait_closedr   r   r   r   r-   =   s
   
zBufferedWriter.closefmtc                    s&   d| }|  t||I d H  d S )N<)r   structpack)r   r   r/   r   r   r   	write_intC   s   zBufferedWriter.write_intc                       |  |dI d H  d S Nbr3   r   r   r   r   
write_int8G      zBufferedWriter.write_int8c                    r4   Nhr7   r   r   r   r   write_int16J   r9   zBufferedWriter.write_int16c                    r4   Nr   r7   r   r   r   r   write_int32M   r9   zBufferedWriter.write_int32c                    r4   Nqr7   r   r   r   r   write_int64P   r9   zBufferedWriter.write_int64c                    r4   NBr7   r   r   r   r   write_uint8S   r9   zBufferedWriter.write_uint8c                    r4   NHr7   r   r   r   r   write_uint16V   r9   zBufferedWriter.write_uint16c                    r4   NIr7   r   r   r   r   write_uint32Y   r9   zBufferedWriter.write_uint32c                    r4   NQr7   r   r   r   r   write_uint64\   r9   zBufferedWriter.write_uint64c                    s4   d}t ||d? t@ |t@ }| |I d H  d S )Nz<QQ@   )r1   r2   
MAX_UINT64r   )r   r   r/   r!   r   r   r   write_uint128_   s   zBufferedWriter.write_uint128)r,   N)__name__
__module____qualname__r   BUFFER_SIZEr   intr   r   bytesr   r"   r%   r#   r'   r+   r-   r3   r8   r<   r>   rA   rD   rG   rJ   rM   rP   r   r   r   r   r      s&    	
r   c                   @   s   e Zd ZejfdedefddZdd Zdd Z	d	e
fd
dZdd Zdd Zdd Zdd ZdefddZd3dede
fddZd3de
fddZdefddZd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2S )4BufferedReaderreaderbuffer_max_sizec                 C   s$   || _ || _t | _d| _d| _d S r   )rY   rX   r   r   current_buffer_sizer   )r   rX   rY   r   r   r   r   f   s
   
zBufferedReader.__init__c                    s,   | j | jkr|   |  I d H  d S d S r   )r   rZ   _reset_buffer_read_into_bufferr   r   r   r   _refill_bufferm   s
   zBufferedReader._refill_bufferc                 C   s   | j p| j S r   r   r   r   r   r   r   _is_buffer_emptyr   s   zBufferedReader._is_buffer_emptyr,   c                    s    |   I d H  |  rdS dS )NFT)r]   r_   r   r   r   r   _is_buffer_readableu   s
   z"BufferedReader._is_buffer_readablec                 C   s   d| _ t | _d S r   )r   r   r   r   r   r   r   r[   {   s   zBufferedReader._reset_bufferc                    s2   | j | jI d H }| j| t| j| _d S r   )rX   readrY   r   r   r   rZ   r   r!   r   r   r   r\      s   z BufferedReader._read_into_bufferc                 C   s   | j | j }|  jd7  _|S )N   r^   rb   r   r   r   	_read_one   s   zBufferedReader._read_onec                    sT   t  }	 |  I d H sn|  }|| |dk rnq|r$tj|S d}t|)NT   zPFailed to read data from socket. Likely the connection was closed by the remote.)r   r`   rd   appendr   udecoder   )r   packetsr!   msgr   r   r   read_varint   s   
zBufferedReader.read_varintr*   c                    sr   t  }|dkr7|  I d H s	 |S | j| }| j| j| }|t|8 }|  jt|7  _|| |dks|S r   )r   r`   r   r   r   r   )r   r*   ri   read_positionr!   r   r   r   
read_bytes   s   

zBufferedReader.read_bytesFas_bytesc                    s"   |  |I d H }|r|S | S r   )rm   rh   )r   r*   rn   r!   r   r   r   read_fixed_str   s
   zBufferedReader.read_fixed_strc                    s$   |   I d H }| j||dI d H S )N)r*   rn   )rk   ro   )r   rn   r*   r   r   r   read_str   s   zBufferedReader.read_strr/   c                    s0   t d| }| |jI d H }||d S )Nr0   r   )r1   Structrm   sizeunpack)r   r/   sr!   r   r   r   read_int   s   zBufferedReader.read_intc                       |  dI d H S r5   ru   r   r   r   r   	read_int8      zBufferedReader.read_int8c                    rv   r:   rw   r   r   r   r   
read_int16   ry   zBufferedReader.read_int16c                    rv   r=   rw   r   r   r   r   
read_int32   ry   zBufferedReader.read_int32c                    rv   r?   rw   r   r   r   r   
read_int64   ry   zBufferedReader.read_int64c                    rv   rB   rw   r   r   r   r   
read_uint8   ry   zBufferedReader.read_uint8c                    rv   rE   rw   r   r   r   r   read_uint16   ry   zBufferedReader.read_uint16c                    rv   rH   rw   r   r   r   r   read_uint32   ry   zBufferedReader.read_uint32c                    rv   rK   rw   r   r   r   r   read_uint64   ry   zBufferedReader.read_uint64c                    s.   |  dI d H }|  dI d H }|d> | S )NrL   rN   rw   )r   hilor   r   r   read_uint128   s   zBufferedReader.read_uint128N)F)rQ   rR   rS   r   rT   r   rU   r   r]   r_   boolr`   r[   r\   rd   rk   rm   ro   rp   r%   ru   rx   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   rW   e   s,    rW   c                       s:   e Zd Zdejfdededef fddZdd Z	  Z
S )	CompressedBufferedWriterN
compressorr	   r
   c                       || _ t || d S r   )r   superr   )r   r   r	   r
   	__class__r   r   r         z!CompressedBufferedWriter.__init__c                    s    | j | jI d H  d| _d S r   )r   r   r   r   r   r   r   r   r      s   
zCompressedBufferedWriter.flush)rQ   rR   rS   r   rT   r   r   rU   r   r   __classcell__r   r   r   r   r      s    	r   c                       s@   e Zd Zejfdededef fddZdd Z	dd	 Z
  ZS )
CompressedBufferedReader
raw_readerrX   rY   c                    r   r   )r   r   r   )r   r   rX   rY   r   r   r   r      r   z!CompressedBufferedReader.__init__c                    s`   | j  I d H }| j  I d H }t|}|| j t }|jd ur$d}nd}||||I d H S )Nrc   r   )r   r   r}   r   r   method_byteget_decompressed_data)r   compressed_hashr   decompressor_clsdecompressorextra_header_sizer   r   r   _read_compressed_data   s   

z.CompressedBufferedReader._read_compressed_datac                    s4   |   I d H | _t| j| _| jdkrtdd S )Nr   z"Unexpected EOF while reading bytes)r   r   r   rZ   EOFErrorr   r   r   r   r\      s   
z*CompressedBufferedReader._read_into_buffer)rQ   rR   rS   r   rT   rW   r   rU   r   r   r\   r   r   r   r   r   r      s    	r   )r1   asyncior   r   r   asynch.errorsr   asynch.protor   asynch.proto.compressionr   r   rO   	MAX_INT64r   rW   r   r   r   r   r   r   <module>   s    Wl