
     h@	                     ~    d 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://

    )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      R/var/www/html/Sam_Eipo/venv/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._get.   s%    u%%)))666r   c                 Z    || j         vrt                      | j         |<   | j         |         S r   r   r   r   s     r   r   zChannel._queue_for1   s,    ##!&DK{5!!r   c                     d S r    )r   argss     r   _queue_bindzChannel._queue_bind6       r   c                     |                      ||          D ]*}|                     |                              |           +d S r   )_lookupr   put)r   exchangemessagerouting_keyr   r   s         r   _put_fanoutzChannel._put_fanout9   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._size@   s     u%%++---r   c                 <    | j                             |d            d S r   )r   pop)r   r   r!   r   s       r   _deletezChannel._deleteC   s    t$$$$$r   c                     |                      |          }|                                }|j                                         |S r   )r   r.   r   clear)r   r   qsizes       r   _purgezChannel._purgeF   s4    OOE""wwyy	r   c                     t                                                       | j                                        D ]}|                                 i | _        d S r   )supercloser   valuesempty)r   r   	__class__s     r   r:   zChannel.closeL   sK    ['')) 	 	EKKMMMMr   c                     d S r   r    r   s     r   after_reply_message_receivedz$Channel.after_reply_message_receivedR   r#   r   r   )__name__
__module____qualname____doc__r   seteventsr   
do_restoresupports_fanoutr   r   r   r   r"   r*   r,   r/   r2   r7   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   )r9   __init__global_statestate)r   clientr   r=   s      r   rN   zTransport.__init__c   s0    **6***&


r   c                     dS )NzN/Ar    )r   s    r   driver_versionzTransport.driver_versiong   s    ur   )r@   rA   rB   rC   r	   r   BrokerStaterO   r   rK   
implementsdriver_typedriver_namerN   rS   rH   rI   s   @r   rK   rK   V   sx        G '7&((L*JKK' ' ' ' '      r   rK   N)
rC   collectionsr   r   r    r   r   r	   rK   r    r   r   <module>rZ      s    0 $ # # # # #              4 4 4 4 4go 4 4 4n    !     r   