
     hb                        d Z ddlZddlZddl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	Zd
ZdZdZ G d dej                  Z G d dej        ej                  Z G d dej                  Z G d dej                  ZdS )zT`librabbitmq`_ transport.

.. _`librabbitmq`: https://pypi.org/project/librabbitmq/
    N)ChannelErrorConnectionError)get_manager)version_string_as_tuple   )base)to_rabbitmq_queue_argumentsz
    librabbitmq version too old to detect RabbitMQ version information
    so make sure you are using librabbitmq 1.5 when using rabbitmq > 3.3
i(  i'  zAssl not supported by librabbitmq, please use pyamqp:// or stunnelc                   "     e Zd ZdZ fdZ xZS )MessagezAMQP Message (librabbitmq).c                     t                                          |||||                    d          |                    d          |                    d          |                    d                     d S )Ndelivery_tagcontent_typecontent_encodingheaders)channelbodydelivery_info
propertiesr   r   r   r   )super__init__get)selfr   propsinfor   	__class__s        W/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/kombu/transport/librabbitmq.pyr   zMessage.__init__"   sw    .11>22"YY'9::IIi(( 	 	* 	* 	* 	* 	*    )__name__
__module____qualname____doc__r   __classcell__)r   s   @r   r   r      s>        %%	* 	* 	* 	* 	* 	* 	* 	* 	*r   r   c                   *    e Zd ZdZeZ	 	 	 ddZd ZdS )ChannelzAMQP Channel (librabbitmq).Nc                 V    ||ni }|                     |||d           |||d<   ||fS )z%Encapsulate data into a AMQP message.N)r   r   r   priority)update)r   r   r&   r   r   r   r   s          r   prepare_messagezChannel.prepare_message3   sY     $.#9ZZr
</?&-/ / 	0 	0 	0 %-Jz"Zr   c                 X    t          |fi |}d |                                D             S )Nc                 @    i | ]\  }}|                     d           |S )utf8)encode).0kvs      r   
<dictcomp>z3Channel.prepare_queue_arguments.<locals>.<dictcomp>D   s*    BBB1  !BBBr   )r	   items)r   	argumentskwargss      r   prepare_queue_argumentszChannel.prepare_queue_argumentsB   s5    /	DDVDD	BB	0A0ABBBBr   )NNNNN)r   r   r    r!   r   r(   r4    r   r   r$   r$   .   sP        %%G-1<@15       C C C C Cr   r$   c                       e Zd ZdZeZeZdS )
ConnectionzAMQP Connection (librabbitmq).N)r   r   r    r!   r$   r   r5   r   r   r7   r7   G   s        ((GGGGr   r7   c                      e Zd ZdZeZeZeZe	j
        j        eej        eefz   Ze	j
        j        efz   ZdZdZe	j
        j                            dd          Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Z d Z!e"d             Z#dS )	TransportzAMQP Transport (librabbitmq).amqplibrabbitmqTF)asynchronous
heartbeatsc                     || _         |                    d          p| j        | _        |                    d          p| j        | _        d | _        d S )Ndefault_portdefault_ssl_port)clientr   r?   r@   _Transport__reader)r   rA   r3   s      r   r   zTransport.__init__e   sS    "JJ~66K$:K!',>!?!? "7!%!6 	r   c                     t           j        S N)r:   __version__r   s    r   driver_versionzTransport.driver_versionl   s    r   c                 *    |                                 S rD   )r   r   
connections     r   create_channelzTransport.create_channelo   s    !!###r   c                      |j         di |S )Nr5   )drain_events)r   rJ   r3   s      r   rM   zTransport.drain_eventsr   s    &z&00000r   c                    | j         }| j                                        D ]'\  }}t          ||d          st	          |||           (|j        rt          t                    t          |j	        |j
        |j        |j        |j        |j        |j        |j        dfi |j        pi } | j        di |}| j         |_         |j        | j         _        |S )z(Establish connection to the AMQP broker.N)hostuseridpasswordvirtual_hostlogin_methodinsistsslconnect_timeoutr5   )rA   default_connection_paramsr1   getattrsetattrrU   NotImplementedErrorNO_SSL_ERRORdictrO   rP   rQ   rR   rS   rT   rV   transport_optionsr7   rM   )r   conninfonamedefault_valueoptsconns         r   establish_connectionzTransport.establish_connectionu   s    ;#'#A#G#G#I#I 	7 	7D-8T400 7$666< 	4%l333Mo )$1$1o<'7	
 	
 	/ 	/ '-2	/ 	/ t&&&&k#'#4 r   c                 F    d| j         _        |                                 dS )z!Close the AMQP broker connection.N)rA   rM   closerI   s     r   close_connectionzTransport.close_connection   s$    #' r   c                 X   ||j                                         D ]	}d |_        
	 t          j        |                                           n# t          t          f$ r Y nw xY w|j                                          |j	                                         d | j
        _        d | _
        d S rD   )channelsvaluesrJ   osre   filenoOSError
ValueErrorclear	callbacksrA   rM   )r   rJ   r   s      r   _collectzTransport._collect   s    !%.5577 * *%)""**,,----Z(   %%''' &&(((#' s   &A A"!A"c                     |j         S rD   )	connectedrI   s     r   verify_connectionzTransport.verify_connection   s    ##r   c                 d    |                     |                                | j        ||           d S rD   )
add_readerrk   on_readable)r   rJ   loops      r   register_with_event_loopz"Transport.register_with_event_loop   s:    !1:t	
 	
 	
 	
 	
r   c                 ,    t          | j        g|R i |S rD   )r   rA   )r   argsr3   s      r   r   zTransport.get_manager   s"    4;8888888r   c                     	 |j         }|                    d          dk    rt          |d                   dk     S n6# t          $ r) t	          j        t          t                               Y nw xY wdS )NproductRabbitMQversion)   r   T)server_propertiesr   r   AttributeErrorwarningswarnUserWarning	W_VERSION)r   rJ   r   s      r   qos_semantics_matches_specz$Transport.qos_semantics_matches_spec   s    	J0E yy##z11.uY/?@@6II 2  	2 	2 	2M+i0011111	2
 ts   < 0A/.A/c                 B    dd| j         j        r| j        n| j        dddS )Nguest	localhostPLAIN)rP   rQ   porthostnamerS   )rA   rU   r@   r?   rF   s    r   rW   z#Transport.default_connection_params   s9     .2ko ,T**+##
 
 	
r   N)$r   r   r    r!   r7   DEFAULT_PORTr?   DEFAULT_SSL_PORTr@   r   r9   connection_errorsr   socketerrorIOErrorrl   channel_errorsr   driver_typedriver_name
implementsextendr   rG   rK   rM   rc   rf   rp   rs   rx   r   r   propertyrW   r5   r   r   r9   r9   N   sU       ''JL' 	(V\7G,= 	= 
 	%7  KK*11 2  J
       $ $ $1 1 1  .  
  $ $ $
 
 

9 9 9   
 
 X
 
 
r   r9   )r!   rj   r   r   r;   r:   r   r   kombu.utils.amq_managerr   kombu.utils.textr    r   r	   r   r   r   r[   r   r$   
StdChannelr7   r9   r5   r   r   <module>r      s   
 
			       5 5 5 5 5 5 5 5 / / / / / / 4 4 4 4 4 4       - - - - - -	  
* * * * *dl * * *C C C C CdlDO C C C2       n
 n
 n
 n
 n
 n
 n
 n
 n
 n
r   