Ë
    >Øïiç  ã                   ó†   — d Z ddlZddlmZ ddlmZmZ ddlmZ  ej                  e
«      Z G d„ dej                  «      Zy)z"Use pika with the Tornado IOLoop

é    N)Úioloop)Únbio_interfaceÚselector_ioloop_adapter)Úbase_connectionc                   óF   ‡ — e Zd ZdZ	 	 	 	 	 	 dˆ fd„	Ze	 	 dd„«       Zˆ xZS )ÚTornadoConnectionz6The TornadoConnection runs on the Tornado IOLoop.
    c                 óÜ   •— t        |t        j                  «      r|}n5t        j                  |xs t
        j                  j                  «       «      }t        t        | �+  ||||||¬«       y)a   Create a new instance of the TornadoConnection class, connecting
        to RabbitMQ automatically.

        :param pika.connection.Parameters|None parameters: The connection
            parameters
        :param callable|None on_open_callback: The method to call when the
            connection is open
        :param callable|None on_open_error_callback: Called if the connection
            can't be established or connection establishment is interrupted by
            `Connection.close()`:
            on_open_error_callback(Connection, exception)
        :param callable|None on_close_callback: Called when a previously fully
            open connection is closed:
            `on_close_callback(Connection, exception)`, where `exception` is
            either an instance of `exceptions.ConnectionClosed` if closed by
            user or broker or exception of another type that describes the
            cause of connection failure
        :param ioloop.IOLoop|nbio_interface.AbstractIOServices|None custom_ioloop:
            Override using the global IOLoop in Tornado
        :param bool internal_connection_workflow: True for autonomous connection
            establishment which is default; False for externally-managed
            connection workflow via the `create_connection()` factory

        )Úinternal_connection_workflowN)Ú
isinstancer   ÚAbstractIOServicesr   ÚSelectorIOServicesAdapterr   ÚIOLoopÚinstanceÚsuperr   Ú__init__)	ÚselfÚ
parametersÚon_open_callbackÚon_open_error_callbackÚon_close_callbackÚcustom_ioloopr
   ÚnbioÚ	__class__s	           €úZ/var/www/html/aiagents/fe/lib/python3.12/site-packages/pika/adapters/tornado_connection.pyr   zTornadoConnection.__init__   sg   ø€ ô> �m¤^×%FÑ%FÔGØ ‰Dä+×EÑEØÒ9¤§¡×!7Ñ!7Ó!9ó;ˆDäÔ Ñ/ØØØ"ØØØ)Eð 	0õ 	Gó    c                 ó¨   ‡ ‡— t        j                  |xs t        j                  j	                  «       «      Šˆ ˆfd„}‰ j                  ||‰||¬«      S )z`Implement
        :py:classmethod::`pika.adapters.BaseConnection.create_connection()`.

        c                 ó4   •— | €t        d«      ‚ ‰| ‰d¬«      S )zConnection factory.zIExpected pika.connection.Parameters instance, but got None in params arg.F)r   r   r
   )Ú
ValueError)ÚparamsÚclsr   s    €€r   Úconnection_factoryz?TornadoConnection.create_connection.<locals>.connection_factoryK   s3   ø€ àˆ~Ü ð "Ió Jð JáØ!Ø"Ø-2ô4ð 4r   )Úconnection_configsr!   r   ÚworkflowÚon_done)r   r   r   r   r   Ú_start_connection_workflow)r    r"   r$   r   r#   r!   r   s   `     @r   Úcreate_connectionz#TornadoConnection.create_connection>   sX   ù€ ô '×@Ñ@ØÒ5œVŸ]™]×3Ñ3Ó5ó7ˆõ	4ð ×-Ñ-Ø1Ø1ØØØð .ó ð 	r   )NNNNNT)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úclassmethodr&   Ú__classcell__)r   s   @r   r   r      s?   ø„ ñð !Ø"&Ø(,Ø#'Ø#Ø.2õ*GðX ð )-Ø#'ò	ó ôr   r   )r*   ÚloggingÚtornador   Úpika.adapters.utilsr   r   Úpika.adaptersr   Ú	getLoggerr'   ÚLOGGERÚBaseConnectionr   © r   r   ú<module>r5      s>   ðñó å ç GÝ )à	ˆ×	Ñ	˜8Ó	$€ôL˜×6Ñ6õ Lr   