
    ^f                        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          Z G d de          Z G d de          ZdS )zSimple messaging interface.    )annotationsN)deque)Empty)	monotonic)TYPE_CHECKING   )entity	messaging)maybe_channel)TracebackType)SimpleQueueSimpleBufferc                  t    e Zd ZeZdZd ZddZddZddZd Z		 	 ddZ
d Zd Zd Zd Zd Zd Zd ZeZdS )
SimpleBaseFc                    | S N selfs    >/var/www/html/env/lib/python3.11/site-packages/kombu/simple.py	__enter__zSimpleBase.__enter__   s        exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | NonereturnNonec                .    |                                   d S r   )close)r   r   r   r   s       r   __exit__zSimpleBase.__exit__   s     	

r   c                    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(   s        r   __init__zSimpleBase.__init__#   s`    $W--  ])!,
gg''66666r   TNc                   |s|                                  S |                                  t                      }|}	 | j        r| j                                        S ||dk    r|                                 	 | j        j        j        	                    |           n'# t          j        $ r |                                 w xY w|t                      |z
  }||z
  })NTg        )timeout)
get_nowait_consumer   r+   popleftr   r%   
connectionclientdrain_eventssocketr0   )r   blockr0   
time_start	remainingelapseds         r   getzSimpleBase.get,   s     	%??$$$[[
		.{ -{**,,,$c)9)9jjll"# '.;;I;NNNN> # # #jjll"# $#++
2#g-	1	.s   9%B $Cc                    | j                             | j        | j        j                  }|s|                                 |S )N)r(   accept)r*   r<   r(   r'   r>   r   )r   ms     r   r1   zSimpleBase.get_nowaitN   s;    JNN$+dm6JNKK 	**,,r   c                6     | j         j        |f||||d| d S )N)
serializerrouting_keyheaderscompression)r&   publish)r   messagerA   rC   rD   rB   kwargss          r   putzSimpleBase.putT   sG    g 	()3*5&-*5		( 	(
 !'	( 	( 	( 	( 	(r   c                4    | j                                         S r   )r'   purger   s    r   clearzSimpleBase.clear]   s    }""$$$r   c                D    | j                             d          \  }}}|S )NT)passive)r*   queue_declare)r   _sizes      r   qsizezSimpleBase.qsize`   s%    Z--d-;;
4r   c                8    | j                                          d S r   )r'   cancelr   s    r   r"   zSimpleBase.closed   s    r   c                :    | j                             |           d S r   )r+   append)r   message_datarF   s      r   r-   zSimpleBase._receiveg   s    7#####r   c                f    | j         s)| j                            | j                   d| _         d S d S )N)r(   T)
_consumingr'   consumer(   r   s    r   r2   zSimpleBase._consumej   s<     	#M!!!555"DOOO	# 	#r   c                *    |                                  S )z`len(self) -> self.qsize()`.)rQ   r   s    r   __len__zSimpleBase.__len__o   s    zz||r   c                    dS )NTr   r   s    r   __bool__zSimpleBase.__bool__s   s    tr   )r   r   r   r   r   r   r   r    )F)TN)NNNN)__name__
__module____qualname__r   rX   r   r#   r.   r<   r1   rH   rK   rQ   r"   r-   r2   r[   r]   __nonzero__r   r   r   r   r      s        EJ     7 7 7 7 .  .  .  .D   GK( ( ( (% % %    $ $ $# # #
    KKKr   r   c                  >     e Zd ZdZdZi Zi ZddiZ	 	 	 d fd	Z xZ	S )r   z!Simple API for persistent queues.FtypedirectNc
                   |}
t          | j        fi |pi }t          | j        fi |pi }t          | j        fi |pi }|| j        }t          |
t          j                  s+t          j        |fi |}t          j        |||fd|i|}
|}n|
j	        }|
j
        }t          j        ||
|	          }t          j        |||||          }t                                          ||||           d S )Nqueue_arguments)r>   )rA   rB   rD   )dict
queue_opts
queue_argsexchange_optsr(   
isinstancer	   QueueExchangeexchangerB   r
   ConsumerProducersuperr.   )r   r%   namer(   rh   ri   rj   rA   rD   r>   r*   rn   rB   r'   r&   	__class__s                  r   r.   zSimpleQueue.__init__   sF    $/>>Z-=2>>
$/>>Z-=2>>
T/GG=3FBGG>[F%.. 	,t==}==HLx / /1;/#-/ /E KK~H+K%guVDDD%gx1;2=2=? ? ? 	(!6	+ 	+ 	+ 	+ 	+r   )NNNNNNN)
r^   r_   r`   __doc__r(   rh   ri   rj   r.   __classcell__)rs   s   @r   r   r   x   se        ++FJJX&M>BAE*.+ + + + + + + + + +r   r   c                  ,    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)rw   delivery_moderx   N)r^   r_   r`   rt   r(   rh   rj   r   r   r   r   r      s@        **F"!%' 'J %&1$(* *MMMr   r   )rt   
__future__r   r7   collectionsr   r*   r   timer   typingr    r	   r
   r4   r   typesr   __all__r   r   r   r   r   r   <module>r      sG   ! ! " " " " " "                                        % % % % % % $######
)a a a a a a a aH +  +  +  +  +*  +  +  +F* * * * *; * * * * *r   