o
    FDi                     @   st   d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZmZmZmZ G dd de	ZG dd	 d	eZd
S )    )	constants)BaseCompressorimport_cityhash)Context)BlockReaderBlockWriter)BufferedReaderBufferedWriterCompressedBufferedReaderCompressedBufferedWriterc                
       sB   e Zd Zdededededef
 fddZdd	 Z	d
d Z
  ZS )CompressedBlockWriterreaderwritercontext
compressorcompress_block_sizec                    s:   || _ || _|| _t||jtj| _t || j| d S N)	r   r   
raw_writerr   r   r   BUFFER_SIZEsuper__init__)selfr   r   r   r   r   	__class__ X/var/www/Datamplify/venv/lib/python3.10/site-packages/asynch/proto/streams/compressed.pyr      s
   zCompressedBlockWriter.__init__c                    s   t  }| j I d H  |  I d H }t|}||}| j|I d H  | j}d}||k rD| j||||  I d H  ||7 }||k s-| j I d H  d S )Nr   )	r   r   flushget_compressedlenr   write_uint128r   write_bytes)r   CityHash128
compressedcompressed_sizecompressed_hash
block_sizeir   r   r   finalize   s    
zCompressedBlockWriter.finalizec                    sZ   t  }| jjd ur|| jjI d H  d}nd}| j|I d H }||I d H  |jS )N   r   )r	   r   method_bytewrite_uint8get_compressed_datar    buffer)r   r   extra_header_sizedatar   r   r   r   1   s   z$CompressedBlockWriter.get_compressed)__name__
__module____qualname__r   r	   r   r   intr   r'   r   __classcell__r   r   r   r   r      s    r   c                       s&   e Zd Zdedef fddZ  ZS )CompressedBlockReaderr   r   c                    s0   || _ t| j |jtj| _t | j|| d S r   )
raw_readerr
   r   r   r   r   r   )r   r   r   r   r   r   r   r   A   s
   zCompressedBlockReader.__init__)r/   r0   r1   r   r	   r   r3   r   r   r   r   r4   @   s    r4   N)asynch.protor   asynch.proto.compressionr   r   asynch.proto.contextr   asynch.proto.streams.blockr   r   asynch.proto.streams.bufferedr   r	   r
   r   r   r4   r   r   r   r   <module>   s    3