
    ^fd	                        d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	  G d de	j
                  Z
 G d	 d
e	j                  ZdS )a  In-memory transport module for Kombu.

Simple transport using memory for storing messages.
Messages can be passed only between threads.

Features
========
* Type: Virtual
* Supports Direct: Yes
* Supports Topic: Yes
* Supports Fanout: No
* Supports Priority: No
* Supports TTL: Yes

Connection String
=================
Connection string is in the following format:

.. code-block::

    memory://

    )annotations)defaultdict)Queue   )basevirtualc                       e Zd ZdZ ee          Zi ZdZdZ	d Z
d ZddZd Zd	 Zdd
Zd Zd Zd Zd Z fdZd Z xZS )ChannelzIn-memory Channel.FTc                    || j         v S N)queuesselfqueuekwargss      H/var/www/html/env/lib/python3.11/site-packages/kombu/transport/memory.py
_has_queuezChannel._has_queue)   s    ##    c                H    || j         vrt                      | j         |<   d S d S r   r   r   r   s      r   
_new_queuezChannel._new_queue,   s-    ##!&DK $#r   Nc                T    |                      |                              d          S )NF)block)
_queue_forget)r   r   timeouts      r   _getzChannel._get0   s%    u%%)))666r   c                Z    || j         vrt                      | j         |<   | j         |         S r   r   r   r   s     r   r   zChannel._queue_for3   s,    ##!&DK{5!!r   c                    d S r    )r   argss     r   _queue_bindzChannel._queue_bind8       r   c                    |                      ||          D ]*}|                     |                              |           +d S r   )_lookupr   put)r   exchangemessagerouting_keyr   r   s         r   _put_fanoutzChannel._put_fanout;   sL    \\(K88 	0 	0EOOE""&&w////	0 	0r   c                V    |                      |                              |           d S r   )r   r'   )r   r   r)   r   s       r   _putzChannel._put?   s(    ""7+++++r   c                P    |                      |                                          S r   )r   qsizer   s     r   _sizezChannel._sizeB   s     u%%++---r   c                <    | j                             |d            d S r   )r   pop)r   r   r"   r   s       r   _deletezChannel._deleteE   s    t$$$$$r   c                    |                      |          }|                                }|j                                         |S r   )r   r/   r   clear)r   r   qsizes       r   _purgezChannel._purgeH   s4    OOE""wwyy	r   c                    t                                                       | j                                        D ]}|                                 i | _        d S r   )supercloser   valuesempty)r   r   	__class__s     r   r;   zChannel.closeN   sK    ['')) 	 	EKKMMMMr   c                    d S r   r!   r   s     r   after_reply_message_receivedz$Channel.after_reply_message_receivedT   r$   r   r   )__name__
__module____qualname____doc__r   seteventsr   
do_restoresupports_fanoutr   r   r   r   r#   r+   r-   r0   r3   r8   r;   r@   __classcell__r>   s   @r   r
   r
   !   s       [FFJO$ $ $) ) )7 7 7 7" " "
  0 0 0 0, , ,. . .% % %            r   r
   c                  j     e Zd ZdZeZ ej                    Zej	        j
        Z
dZdZ fdZd Z xZS )	TransportzIn-memory Transport.memoryc                T     t                      j        |fi | | j        | _        d S r   )r:   __init__global_statestate)r   clientr   r>   s      r   rO   zTransport.__init__e   s0    **6***&


r   c                    dS )NzN/Ar!   )r   s    r   driver_versionzTransport.driver_versioni   s    ur   )rA   rB   rC   rD   r
   r   BrokerStaterP   r   rL   
implementsdriver_typedriver_namerO   rT   rI   rJ   s   @r   rL   rL   X   sx        G '7&((L*JKK' ' ' ' '      r   rL   N)rD   
__future__r   collectionsr   r   r    r   r   r
   rL   r!   r   r   <module>r\      s    0 # " " " " " # # # # # #              4 4 4 4 4go 4 4 4n    !     r   