o
    vvXjr  ã                   @   sÄ   d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZ dd	lmZmZmZ dd
lmZ ddgZeejjejjejjgƒZdZeefdd„Zeeeeeeefdd„Z dS )z5Convert between frames and higher-level AMQP methods.é    )Úabsolute_importÚunicode_literals©Údefaultdicté   )Úspec)ÚMessage)ÚUnexpectedFrame)ÚrangeÚtext_t)ÚpackÚ	pack_intoÚunpack_from)Ústr_to_bytesÚframe_handlerÚframe_writeré(   c                    s*   t dd„ ƒ‰i ‰‡ ‡‡‡‡‡fdd„}|S )z!Create closure that reads frames.c                   S   s   dS )Nr   © r   r   r   úP/var/www/html/myproject/venv/lib/python3.10/site-packages/amqp/method_framing.pyÚ<lambda>!   s    zframe_handler.<locals>.<lambda>c                    s:  | \}}}ˆ j d7  _ |ˆ| dfvrtd |ˆ| ¡ƒ‚|dkrCˆd|dƒ}|ˆv r:t||d�ˆ|< dˆ|< dS ˆ |||d ƒ d
S |dkrnˆ| }| |¡ |jsYd	ˆ|< dS dˆ|< ˆ |d ¡ ˆ ||j|j|ƒ d
S |d	kr•ˆ| }| 	|¡ |js€dS dˆ|< ˆ |d ¡ ˆ ||j|j|ƒ d
S |dkr›dS d
S )Nr   é   z,Received frame {0} while expecting type: {1}ú>HHr   )Úframe_methodÚ
frame_argsé   Fé   T)
Ú
bytes_recvr	   Úformatr   Úinbound_headerÚreadyÚpopr   r   Úinbound_body)ÚframeÚ
frame_typeÚchannelÚbufÚ
method_sigÚmsg©ÚcallbackÚ
connectionÚcontent_methodsÚexpected_typesÚpartial_messagesr   r   r   Úon_frame$   sP   
ÿÿ
ÿæ
ô
ýzframe_handler.<locals>.on_framer   )r*   r)   r   r+   r.   r   r(   r   r      s   1c	           
   
      s>   |j ‰	tˆjd ƒ‰ tˆ ƒ‰‡ ‡‡‡‡‡‡‡‡‡	f
dd„}	|	S )z"Create closure that writes frames.r   c              	      sh  ˆj d }d}d }ˆ|ƒ}|r>|j}t|ˆƒr#|j dd¡}	| |	¡}| ¡ }ˆ|ƒ}
ˆ|ƒˆ|ƒp3d |
 t }||k}nd\}}
}|r¯| dkrVd ˆdg|¢R Ž |g¡nd}ˆ|ƒ}ˆ	ˆd	| | |||d
ƒƒ |r®d ˆd|d dˆ|ƒƒ|g¡}ˆ|ƒ}ˆ	ˆd	| d|||d
ƒƒ ˆd|
|ƒD ]}|||| … }ˆ|ƒ}ˆ	ˆd	| d|||d
ƒƒ q’n|| dkrÀd ˆdg|¢R Ž |g¡nd}ˆ|ƒ}ˆd	| ˆ || |||d
ƒ |d| 7 }|d u�r#d ˆd|d dˆ|ƒƒ|g¡}ˆ|ƒ}ˆd	| ˆ |d|||d
ƒ |d| 7 }ˆ|ƒ}
|
dk�r#|
}ˆd	| ˆ |d|||d
ƒ |d| 7 }ˆ	ˆd |… ƒ ˆ j	d7  _	d S )Nr   r   Úcontent_encodingzutf-8)Nr   r   r   ó    r   z>BHI%dsBéÎ   z>HHQr   r   )
Ú	frame_maxÚbodyÚ
isinstanceÚ
propertiesÚ
setdefaultÚencodeÚ_serialize_propertiesÚFRAME_OVERHEADÚjoinÚ
bytes_sent)Útype_r$   r&   ÚargsÚcontentÚ
chunk_sizeÚoffsetr5   r3   ÚencodingÚbodylenÚframelenÚbigbodyr"   Úi©
r%   r*   Úlenr   r   r
   r   r   ÚviewÚwriter   r   Úwrite_framed   sš   

ÿ

ÿþýÿ

ÿÿ

ÿþ

ÿ
þ€ÿÿ
ÿ
þ
ÿ

ÿz!frame_writer.<locals>.write_frame)rI   Ú	bytearrayr2   Ú
memoryview)
r*   Ú	transportr   r   r
   rG   Úbytesr   r   rJ   r   rF   r   r   X   s
   KN)!Ú__doc__Ú
__future__r   r   Úcollectionsr   Ú r   Úbasic_messager   Ú
exceptionsr	   Úfiver
   r   Úplatformr   r   r   Úutilsr   Ú__all__Ú	frozensetÚBasicÚReturnÚDeliverÚGetOkÚ_CONTENT_METHODSr9   r   rG   rN   r   r   r   r   r   Ú<module>   s*    ý

ÿ;þ