o
    ?Zc@	                     @   sT   d Z ddlmZ ddlmZ ddlmZmZ G dd dejZG d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                       s   e Zd ZdZeeZi ZdZdZ	dd Z
dd Zdd	d
Zdd Zdd ZdddZdd Zdd Zdd Zdd Z fddZdd Z  ZS )ChannelzIn-memory Channel.FTc                 K   s
   || j v S N)queuesselfqueuekwargs r   L/var/www/chikooza/env/lib/python3.10/site-packages/kombu/transport/memory.py
_has_queue'   s   
zChannel._has_queuec                 K   s   || j vrt | j |< d S d S r   r	   r   r
   r   r   r   
_new_queue*   s   
zChannel._new_queueNc                 C   s   |  |jddS )NF)block)
_queue_forget)r   r   timeoutr   r   r   _get.      zChannel._getc                 C   s    || j vrt | j |< | j | S r   r   r   r   r   r   r   r   1   s   

zChannel._queue_forc                 G      d S r   r   )r   argsr   r   r   _queue_bind6      zChannel._queue_bindc                 K   s&   |  ||D ]
}| || qd S r   )_lookupr   put)r   exchangemessagerouting_keyr   r   r   r   r   _put_fanout9   s   zChannel._put_fanoutc                 K   s   |  || d S r   )r   r   )r   r   r!   r   r   r   r   _put=   s   zChannel._putc                 C   s   |  | S r   )r   qsizer   r   r   r   _size@   s   zChannel._sizec                 O   s   | j |d  d S r   )r	   pop)r   r   r   r   r   r   r   _deleteC   r   zChannel._deletec                 C   s    |  |}| }|j  |S r   )r   r%   r   clear)r   r   qsizer   r   r   _purgeF   s   

zChannel._purgec                    s,   t    | j D ]}|  q
i | _d S r   )supercloser	   valuesemptyr   	__class__r   r   r.   L   s   


zChannel.closec                 C   r   r   r   r   r   r   r   after_reply_message_receivedR   r   z$Channel.after_reply_message_receivedr   )__name__
__module____qualname____doc__r   seteventsr	   
do_restoresupports_fanoutr   r   r   r   r   r#   r$   r&   r(   r,   r.   r3   __classcell__r   r   r1   r   r      s$    

r   c                       sD   e Zd ZdZeZe Zej	j
Z
dZdZ fddZdd Z  ZS )	TransportzIn-memory Transport.memoryc                    s    t  j|fi | | j| _d S r   )r-   __init__global_statestate)r   clientr   r1   r   r   r?   c   s   zTransport.__init__c                 C   s   dS )NzN/Ar   )r   r   r   r   driver_versiong   r   zTransport.driver_version)r4   r5   r6   r7   r   r   BrokerStater@   r   r=   
implementsdriver_typedriver_namer?   rC   r<   r   r   r1   r   r=   V   s    r=   N)
r7   collectionsr   r   r    r   r   r   r=   r   r   r   r   <module>   s    7