
     h                        d Z ddlZddlmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ 	 ddlZdd	lmZ dd
lmZ n# e$ r	 dxZxZZY nw xY wdZdZdZ ee          Z G d dej                  Z G d dej                  ZeC ej        dd            ej         ej        d           G d d                                  Zedk    r ed            ej                     5 Z! ed"                    ej#        j$        ej#        j%                              ej&                    5 Z' ed"                    ej#        j$                             e!(                    e          Z)e'(                    de)           ddd           n# 1 swxY w Y   e!*                                 ddd           dS # 1 swxY w Y   dS dS )a  Pyro transport module for kombu.

Pyro transport, and Kombu Broker daemon.

Requires the :mod:`Pyro4` library to be installed.

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

Connection String
=================

To use the Pyro transport with Kombu, use an url of the form:

.. code-block::

    pyro://localhost/kombu.broker

The hostname is where the transport will be looking for a Pyro name server,
which is used in turn to locate the kombu.broker Pyro service.
This broker can be launched by simply executing this transport module directly,
with the command: ``python -m kombu.transport.pyro``

Transport Options
=================
    N)EmptyQueue)reraise)
get_logger)cached_property   )virtual)NamingError)SerializerBasei#  z5Unable to locate pyro nameserver on host {0.hostname}zKUnable to lookup '{0.virtual_host}' in pyro nameserver on host {0.hostname}c                   v     e Zd ZdZ fdZd Zd Zd ZddZd Z	d	 Z
d
 Zd Zd Zd Zed             Z xZS )ChannelzPyro Channel.c                     t                                                       | j        r| j                                         d S d S N)supercloseshared_queues_pyroRelease)self	__class__s    P/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/kombu/transport/pyro.pyr   zChannel.closeA   sD     	.++-----	. 	.    c                 4    | j                                         S r   )r   get_queue_namesr   s    r   queueszChannel.queuesF   s    !11333r   c                 j    ||                                  vr| j                            |           d S d S r   r   r   	new_queuer   queuekwargss      r   
_new_queuezChannel._new_queueI   s:    %%((///// &%r   c                 6    | j                             |          S r   )r   	has_queuer   s      r   
_has_queuezChannel._has_queueM   s    !++E222r   Nc                 `    |                      |          }| j                            |          S r   )
_queue_forr   get)r   r    timeouts      r   _getzChannel._getP   s*    &&!%%e,,,r   c                 f    ||                                  vr| j                            |           |S r   r   r   r    s     r   r'   zChannel._queue_forT   s1    %%((///r   c                 f    |                      |          }| j                            ||           d S r   )r'   r   put)r   r    messager!   s       r   _putzChannel._putY   s2    &&ug.....r   c                 6    | j                             |          S r   )r   sizer,   s     r   _sizezChannel._size]   s    !&&u---r   c                 :    | j                             |           d S r   )r   delete)r   r    argsr!   s       r   _deletezChannel._delete`   s    !!%(((((r   c                 6    | j                             |          S r   )r   purger,   s     r   _purgezChannel._purgec   s    !''...r   c                     d S r    r,   s     r   after_reply_message_receivedz$Channel.after_reply_message_receivedf   s    r   c                     | j         j        S r   )
connectionr   r   s    r   r   zChannel.shared_queuesi   s    ,,r   r   )__name__
__module____qualname____doc__r   r   r"   r%   r*   r'   r0   r3   r7   r:   r=   r   r   __classcell__r   s   @r   r   r   >   s        . . . . .
4 4 40 0 03 3 3- - - -  
/ / /. . .) ) )/ / /   - - _- - - - -r   r   c                   r     e Zd ZdZeZ ej                    ZeZ	dxZ
Z fdZd Zd Zed             Z xZS )	TransportzPyro Transport.pyroc                 T     t                      j        |fi | | j        | _        d S r   )r   __init__global_statestate)r   clientr!   r   s      r   rJ   zTransport.__init__{   s0    **6***&


r   c           	      p   t                               d           | j        }	 t          j        |j        | j                  }nb# t          $ rU t          t          t          t          
                    |                    t          j                    d                    Y nw xY w	 |                    |j                  }t          j        |          S # t          $ rV t          t          t          t           
                    |                    t          j                    d                    Y d S w xY w)Nz0trying Pyro nameserver to find the broker daemon)hostport   )loggerdebugrM   rH   locateNShostnamedefault_portr
   r   E_NAMESERVERformatsysexc_infolookupvirtual_hostProxyE_LOOKUP)r   conninfo
nameserveruris       r   _openzTransport._open   s.   GHHH;	'H,=,0,=? ? ?JJ 	' 	' 	'K\-@-@-J-J!K!KLNN1%' ' ' ' '	'	'##H$9::C:c??" 	' 	' 	'KX__X-F-F!G!GLNN1%' ' ' ' ' '	's%    A AB#"B#'-C AD54D5c                     t           j        S r   )rH   __version__r   s    r   driver_versionzTransport.driver_version   s    r   c                 *    |                                  S r   )rb   r   s    r   r   zTransport.shared_queues   s    zz||r   )r@   rA   rB   rC   r   r	   BrokerStaterK   DEFAULT_PORTrV   driver_typedriver_namerJ   rb   re   r   r   rD   rE   s   @r   rG   rG   n   s        G '7&((LL &&K+' ' ' ' '' ' '"        _    r   rG   zqueue.Emptyc                     t                      S r   )r   )clsdatas     r   <lambda>rn      s
    EGG r   single)instance_modec                   H    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )KombuBrokerzmKombu Broker used by the Pyro transport.

        You have to run this as a separate (Pyro) service.
        c                     i | _         d S r   r   r   s    r   rJ   zKombuBroker.__init__   s    DKKKr   c                 *    t          | j                  S r   )listr   r   s    r   r   zKombuBroker.get_queue_names   s    $$$r   c                 H    || j         v rd S t                      | j         |<   d S r   )r   r   r,   s     r   r   zKombuBroker.new_queue   s*    ##!&DKr   c                     || j         v S r   rt   r,   s     r   r$   zKombuBroker.has_queue   s    DK''r   c                 D    | j         |                             d          S )NF)block)r   r(   r,   s     r   r(   zKombuBroker.get   s     ;u%)))666r   c                 F    | j         |                             |           d S r   )r   r.   )r   r    r/   s      r   r.   zKombuBroker.put   s#    K""7+++++r   c                 @    | j         |                                         S r   )r   qsizer,   s     r   r2   zKombuBroker.size   s    ;u%++---r   c                     | j         |= d S r   rt   r,   s     r   r5   zKombuBroker.delete   s    E"""r   c                 n    	 	 | j         |                             d           n# t          $ r Y d S w xY w5)NTF)blocking)r   r(   r   r,   s     r   r9   zKombuBroker.purge   sT    K&**E*::::   EEs   !% 
33N)r@   rA   rB   rC   rJ   r   r   r$   r(   r.   r2   r5   r9   r<   r   r   rr   rr      s        	 	
	 	 		% 	% 	%	) 	) 	)
	( 	( 	(	7 	7 	7	, 	, 	,	. 	. 	.	# 	# 	#	 	 	 	 	r   rr   __main__z,Launching Broker for Kombu's Pyro transport.z'(Expecting a Pyro name server at {}:{})zAYou can connect with Kombu using the url 'pyro://{}/kombu.broker'zkombu.broker)+rC   rY   r    r   r   kombu.exceptionsr   	kombu.logr   kombu.utils.objectsr    r	   Pyro4rH   Pyro4.errorsr
   
Pyro4.utilr   ImportErrorrh   rW   r^   r@   rR   r   rG   register_dict_to_classexposebehaviorrr   printDaemondaemonrX   configNS_HOSTNS_PORTrT   nsregisterra   requestLoopr<   r   r   <module>r      sl   D 


         $ $ $ $ $ $             / / / / / /      /(((((())))))) / / /*..D.;/  
H		-- -- -- -- --go -- -- --`' ' ' ' '! ' ' 'T )N)-*C*CE E E 
[T]***% % % % % % % +* [%T z	E
8999	 &7vdk)4;+>??	A 	A 	AT]__ 	-E --3VDK4G-H-HJ J J//+..CKK,,,		- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
 	                  sG   9 AA&AF5)AF	=F5	F	F5F	F55F9<F9