
     h                         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          Z G d de          Z G d de          ZdS )zSimple messaging interface.    N)deque)Empty)	monotonic   )entity	messaging)maybe_channel)SimpleQueueSimpleBufferc                   r    e Zd ZeZdZd Z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    H/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/kombu/simple.py	__enter__zSimpleBase.__enter__   s        c                 .    |                                   d S r   )close)r   exc_infos     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socketr&   )r   blockr&   
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    r2   r   r   r4   r   )r   ms     r   r'   zSimpleBase.get_nowaitC   s;    JNN$+dm6JNKK 	**,,r   c                 6     | j         j        |f||||d| d S )N)
serializerrouting_keyheaderscompression)r   publish)r   messager7   r9   r:   r8   kwargss          r   putzSimpleBase.putI   sG    g 	()3*5&-*5		( 	(
 !'	( 	( 	( 	( 	(r   c                 4    | j                                         S r   )r   purger   s    r   clearzSimpleBase.clearR   s    }""$$$r   c                 D    | j                             d          \  }}}|S )NT)passive)r    queue_declare)r   _sizes      r   qsizezSimpleBase.qsizeU   s%    Z--d-;;
4r   c                 8    | j                                          d S r   )r   cancelr   s    r   r   zSimpleBase.closeY   s    r   c                 :    | j                             |           d S r   )r!   append)r   message_datar<   s      r   r#   zSimpleBase._receive\   s    7#####r   c                 f    | j         s)| j                            | j                   d| _         d S d S )N)r   T)
_consumingr   consumer   r   s    r   r(   zSimpleBase._consume_   s<     	#M!!!555"DOOO	# 	#r   c                 *    |                                  S )z`len(self) -> self.qsize()`.)rG   r   s    r   __len__zSimpleBase.__len__d   s    zz||r   c                     dS )NTr   r   s    r   __bool__zSimpleBase.__bool__h   s    tr   )F)TN)NNNN)__name__
__module____qualname__r   rN   r   r   r$   r2   r'   r>   rA   rG   r   r#   r(   rQ   rS   __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)r4   )r7   r8   r:   )dict
queue_opts
queue_argsexchange_optsr   
isinstancer   QueueExchangeexchanger8   r   ConsumerProducersuperr$   )r   r   namer   r^   r_   r`   r7   r:   r4   r    rd   r8   r   r   	__class__s                  r   r$   zSimpleQueue.__init__u   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)
rT   rU   rV   __doc__r   r^   r_   r`   r$   __classcell__)ri   s   @r   r
   r
   m   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)rm   delivery_modern   N)rT   rU   rV   rj   r   r^   r`   r   r   r   r   r      s@        **F"!%' 'J %&1$(* *MMMr   r   )rj   r-   collectionsr   r    r   timer    r   r   r*   r	   __all__r   r
   r   r   r   r   <module>ru      s	   ! !                            % % % % % %
)\ \ \ \ \ \ \ \~ +  +  +  +  +*  +  +  +F* * * * *; * * * * *r   