
    ^f                    *   d Z ddlm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/
    )annotationsN)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        M/var/www/html/env/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_message5   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>F   s*    BBB1  !BBBr   )r
   items)r   	argumentskwargss      r   prepare_queue_argumentszChannel.prepare_queue_argumentsD   s5    /	DDVDD	BB	0A0ABBBBr   )NNNNN)r   r    r!   r"   r   r)   r5    r   r   r%   r%   0   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   r6   r   r   r8   r8   I   s        ((GGGGr   r8   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@   rA   _Transport__reader)r   rB   r4   s      r   r   zTransport.__init__g   sS    "JJ~66K$:K!',>!?!? "7!%!6 	r   c                    t           j        S N)r;   __version__r   s    r   driver_versionzTransport.driver_versionn   s    r   c                *    |                                 S rE   )r   r   
connections     r   create_channelzTransport.create_channelq   s    !!###r   c                     |j         di |S )Nr6   )drain_events)r   rK   r4   s      r   rN   zTransport.drain_eventst   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_timeoutr6   )rB   default_connection_paramsr2   getattrsetattrrV   NotImplementedErrorNO_SSL_ERRORdictrP   rQ   rR   rS   rT   rU   rW   transport_optionsr8   rN   )r   conninfonamedefault_valueoptsconns         r   establish_connectionzTransport.establish_connectionw   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)rB   rN   closerJ   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 rE   )channelsvaluesrK   osrf   filenoOSError
ValueErrorclear	callbacksrB   rN   )r   rK   r   s      r   _collectzTransport._collect   s    !%.5577 * *%)""**,,----Z(   %%''' &&(((#' s   &A A"!A"c                    |j         S rE   )	connectedrJ   s     r   verify_connectionzTransport.verify_connection   s    ##r   c                d    |                     |                                | j        ||           d S rE   )
add_readerrl   on_readable)r   rK   loops      r   register_with_event_loopz"Transport.register_with_event_loop   s:    !1:t	
 	
 	
 	
 	
r   c                ,    t          | j        g|R i |S rE   )r   rB   )r   argsr4   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   rK   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)rQ   rR   porthostnamerT   )rB   rV   rA   r@   rG   s    r   rX   z#Transport.default_connection_params   s9     .2ko ,T**+##
 
 	
r   N)$r   r    r!   r"   r8   DEFAULT_PORTr@   DEFAULT_SSL_PORTrA   r	   r:   connection_errorsr   socketerrorIOErrorrm   channel_errorsr   driver_typedriver_name
implementsextendr   rH   rL   rN   rd   rg   rq   rt   ry   r   r   propertyrX   r6   r   r   r:   r:   P   sU       ''JL' 	(V\7G,= 	= 
 	%7  KK*11 2  J
       $ $ $1 1 1  .  
  $ $ $
 
 

9 9 9   
 
 X
 
 
r   r:   )r"   
__future__r   rk   r   r   r<   r;   r   r   kombu.utils.amq_managerr   kombu.utils.textr    r	   r
   r   r   r   r\   r   r%   
StdChannelr8   r:   r6   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   