o
    ?Zc                     @   s   d 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	m
Z
 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.    N)deque)Empty)	monotonic   )entity	messaging)maybe_channel)SimpleQueueSimpleBufferc                   @   s   e Zd ZeZdZdd Z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   B/var/www/chikooza/env/lib/python3.10/site-packages/kombu/simple.py	__enter__      zSimpleBase.__enter__c                 G   s   |    d S r   )close)r   exc_infor   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   r,   r   r   r-   r   )r   mr   r   r   r!   C   s   zSimpleBase.get_nowaitc                 K   s"   | j j|f||||d| d S )N)
serializerrouting_keyheaderscompression)r   publish)r   messager/   r1   r2   r0   kwargsr   r   r   putI   s   

zSimpleBase.putc                 C   s
   | j  S r   )r   purger   r   r   r   clearR   s   
zSimpleBase.clearc                 C   s   | j jdd\}}}|S )NT)passive)r   queue_declare)r   _sizer   r   r   qsizeU   s   zSimpleBase.qsizec                 C   s   | j   d S r   )r   cancelr   r   r   r   r   Y   s   zSimpleBase.closec                 C   s   | j | d S r   )r   append)r   message_datar4   r   r   r   r   \   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"   _   s   
zSimpleBase._consumec                 C   s   |   S )z`len(self) -> self.qsize()`.)r=   r   r   r   r   __len__d   s   zSimpleBase.__len__c                 C   s   dS )NTr   r   r   r   r   __bool__h   r   zSimpleBase.__bool__)F)TN)NNNN)__name__
__module____qualname__r   rA   r   r   r   r,   r!   r6   r8   r=   r   r   r"   rC   rD   __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)r-   )r/   r0   r2   )dict
queue_opts
queue_argsexchange_optsr   
isinstancer   QueueExchangeexchanger0   r   ConsumerProducersuperr   )r   r   namer   rM   rN   rO   r/   r2   r-   r   rS   r0   r   r   	__class__r   r   r   u   s2   
zSimpleQueue.__init__)NNNNNNN)
rE   rF   rG   __doc__r   rM   rN   rO   r   __classcell__r   r   rX   r   r	   m   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)r\   delivery_moder]   N)rE   rF   rG   rZ   r   rM   rO   r   r   r   r   r
      s    
r
   )rZ   r'   collectionsr   r   r   timer    r   r   r$   r   __all__r   r	   r
   r   r   r   r   <module>   s    _#