o
    ;i                     @   s   d dl Z d dlZd dlmZmZmZmZmZmZ er&ddl	m
Z
 ddlmZ edZedZdd	d
ddee dee fddZdddd	d
ddedee deddfddZG dd dee e jdZdS )    N)TypeTypeVarOptionalAsyncIteratorTYPE_CHECKINGcast   )Stream)	CodecBase	_SendType	_RecvTypestreamr	   codecr
   message_typereturnc                    s   |  dI d H }|sd S td|d d d }|rtdtd|dd  d }|  |I d H }t||ksCJ dt|||||}tt|S )N   ?r   r   zCompression not implemented>Iz{} != {})		recv_datastructunpackNotImplementedErrorlenformatdecoder   r   )r   r   r   metacompressed_flagmessage_lenmessage_binmessage r    B/home/ubuntu/.local/lib/python3.10/site-packages/grpclib/stream.pyrecv_message   s   
r"   F)endr   r#   c                   sF   | ||}tddtdt| | }| j||dI d H  d S )Nr   Fr   )
end_stream)encoder   packr   	send_data)r   r   r   r   r#   	reply_bin
reply_datar    r    r!   send_message$   s   
r*   c                   @   sD   e Zd Zejdee fddZdee fddZ	defddZ
dS )	StreamIteratorr   c                    s   d S Nr    selfr    r    r!   r"   5   s   zStreamIterator.recv_messagec                 C   s   | S r,   r    r-   r    r    r!   	__aiter__9   s   zStreamIterator.__aiter__c                    s"   |   I d H }|d u rt |S r,   )r"   StopAsyncIteration)r.   r   r    r    r!   	__anext__<   s
   zStreamIterator.__anext__N)__name__
__module____qualname__abcabstractmethodr   r   r"   r   r/   r1   r    r    r    r!   r+   3   s
    r+   )	metaclass)r5   r   typingr   r   r   r   r   r   protocolr	   encoding.baser
   r   r   r"   boolr*   ABCMetar+   r    r    r    r!   <module>   s@     

