o
    —¨Êh¶  ã                   @  sª   d Z ddlmZ ddl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 er:ddlmZ dZG dd„ dƒZG dd„ deƒZG dd„ deƒZdS )zSimple messaging interface.é    )ÚannotationsN)Údeque)ÚEmpty)Ú	monotonic)ÚTYPE_CHECKINGé   )ÚentityÚ	messaging)Úmaybe_channel)ÚTracebackType)ÚSimpleQueueÚSimpleBufferc                   @  sŒ   e Zd ZeZdZdd„ Zd&dd„Zd'dd„Zd(dd„Zdd„ Z			d)dd„Z
dd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ ZeZdS )*Ú
SimpleBaseFc                 C  s   | S ©N© ©Úselfr   r   ú>/var/www/html/env/lib/python3.10/site-packages/kombu/simple.pyÚ	__enter__   ó   zSimpleBase.__enter__Úexc_typeútype[BaseException] | NoneÚexc_valúBaseException | NoneÚexc_tbúTracebackType | NoneÚreturnÚNonec                 C  s   |   ¡  d S r   )Úclose)r   r   r   r   r   r   r   Ú__exit__   s   zSimpleBase.__exit__c                 C  sD   t |ƒ| _|| _|| _|| _| jjd | _tƒ | _| j 	| j
¡ d S )Nr   )r
   ÚchannelÚproducerÚconsumerÚno_ackÚqueuesÚqueuer   ÚbufferÚregister_callbackÚ_receive)r   r    r!   r"   r#   r   r   r   Ú__init__#   s   
zSimpleBase.__init__TNc                 C  s”   |s|   ¡ S |  ¡  tƒ }|}	 | jr| j ¡ S |d ur$|dkr$|  ¡ ‚z| jjjj	|d� W n t
jy;   |  ¡ ‚w |d urItƒ | }|| }q)NTg        )Útimeout)Ú
get_nowaitÚ_consumer   r&   Úpopleftr   r    Ú
connectionÚclientÚdrain_eventsÚsocketr*   )r   Úblockr*   Ú
time_startÚ	remainingÚelapsedr   r   r   Úget,   s&   
ÿ
èzSimpleBase.getc                 C  s&   | j j| j| jjd�}|s|  ¡ ‚|S )N)r#   Úaccept)r%   r6   r#   r"   r7   r   )r   Úmr   r   r   r+   N   s   zSimpleBase.get_nowaitc                 K  s"   | j j|f||||dœ|¤Ž d S )N)Ú
serializerÚrouting_keyÚheadersÚcompression)r!   Úpublish)r   Úmessager9   r;   r<   r:   Úkwargsr   r   r   ÚputT   s   
ü
ûzSimpleBase.putc                 C  s
   | j  ¡ S r   )r"   Úpurger   r   r   r   Úclear]   s   
zSimpleBase.clearc                 C  s   | j jdd�\}}}|S )NT)Úpassive)r%   Úqueue_declare)r   Ú_Úsizer   r   r   Úqsize`   s   zSimpleBase.qsizec                 C  s   | j  ¡  d S r   )r"   Úcancelr   r   r   r   r   d   s   zSimpleBase.closec                 C  s   | j  |¡ d S r   )r&   Úappend)r   Úmessage_datar>   r   r   r   r(   g   s   zSimpleBase._receivec                 C  s$   | j s| jj| jd� d| _ d S d S )N)r#   T)Ú
_consumingr"   Úconsumer#   r   r   r   r   r,   j   s   
þzSimpleBase._consumec                 C  s   |   ¡ S )z`len(self) -> self.qsize()`.)rG   r   r   r   r   Ú__len__o   s   zSimpleBase.__len__c                 C  s   dS )NTr   r   r   r   r   Ú__bool__s   r   zSimpleBase.__bool__)r   r   r   r   r   r   r   r   )F)TN)NNNN)Ú__name__Ú
__module__Ú__qualname__r   rK   r   r   r)   r6   r+   r@   rB   rG   r   r(   r,   rM   rN   Ú__nonzero__r   r   r   r   r      s&    


	"
ÿ	r   c                      s<   e Zd ZdZdZi Zi ZddiZ			d‡ fdd„	Z‡  Z	S )	r   z!Simple API for persistent queues.FÚtypeÚdirectNc
                   sØ   |}
t | jfi |p
i ¤Ž}t | jfi |pi ¤Ž}t | jfi |p i ¤Ž}|d u r*| j}t|
tjƒsItj|fi |¤Ž}tj|||fd|i|¤Ž}
|}n|
j	}|
j
}tj||
|	d�}tj|||||d�}tƒ  ||||¡ d S )NÚqueue_arguments)r7   )r9   r:   r<   )ÚdictÚ
queue_optsÚ
queue_argsÚexchange_optsr#   Ú
isinstancer   ÚQueueÚExchangeÚexchanger:   r	   ÚConsumerÚProducerÚsuperr)   )r   r    Únamer#   rW   rX   rY   r9   r<   r7   r%   r]   r:   r"   r!   ©Ú	__class__r   r   r)   €   s2   ÿþý
ÿzSimpleQueue.__init__)NNNNNNN)
rO   rP   rQ   Ú__doc__r#   rW   rX   rY   r)   Ú__classcell__r   r   rb   r   r   x   s    þr   c                   @  s*   e Zd ZdZdZdddœZddddœZdS )r   z Simple API for ephemeral queues.TF)ÚdurableÚauto_deleteÚ	transient)rf   Údelivery_moderg   N)rO   rP   rQ   rd   r#   rW   rY   r   r   r   r   r   ›   s    ÿ
þr   )rd   Ú
__future__r   r1   Úcollectionsr   r%   r   Útimer   Útypingr   Ú r   r	   r.   r
   Útypesr   Ú__all__r   r   r   r   r   r   r   Ú<module>   s    d#