HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: //usr/local/lib/python3.9/site-packages/kombu/transport/__pycache__/pyamqp.cpython-39.pyc
a

X>hG�@s�dZddlmZddlZddlmZddlmZddlm	Z	ddl	m
Z
d	Zd
ZGdd�de	j
�Z
Gd
d�deje	j�ZGdd�dej�ZGdd�de	j�ZGdd�de�ZdS)a�pyamqp transport module for Kombu.

Pure-Python amqp transport using py-amqp library.

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

Connection String
=================
Connection string can have the following formats:

.. code-block::

    amqp://[USER:PASSWORD@]BROKER_ADDRESS[:PORT][/VIRTUALHOST]
    [USER:PASSWORD@]BROKER_ADDRESS[:PORT][/VIRTUALHOST]
    amqp://

For TLS encryption use:

.. code-block::

    amqps://[USER:PASSWORD@]BROKER_ADDRESS[:PORT][/VIRTUALHOST]

Transport Options
=================
Transport Options are passed to constructor of underlying py-amqp
:class:`~kombu.connection.Connection` class.

Using TLS
=========
Transport over TLS can be enabled by ``ssl`` parameter of
:class:`~kombu.Connection` class. By setting ``ssl=True``, TLS transport is
used::

    conn = Connect('amqp://', ssl=True)

This is equivalent to ``amqps://`` transport URI::

    conn = Connect('amqps://')

For adding additional parameters to underlying TLS, ``ssl`` parameter should
be set with dict instead of True::

    conn = Connect('amqp://broker.example.com', ssl={
            'keyfile': '/path/to/keyfile'
            'certfile': '/path/to/certfile',
            'ca_certs': '/path/to/ca_certfile'
        }
    )

All parameters are passed to ``ssl`` parameter of
:class:`amqp.connection.Connection` class.

SSL option ``server_hostname`` can be set to ``None`` which is causing using
hostname from broker URL. This is useful when failover is used to fill
``server_hostname`` with currently used broker::

    conn = Connect('amqp://broker1.example.com;broker2.example.com', ssl={
            'server_hostname': None
        }
    )
�)�annotationsN)�get_manager)�version_string_as_tuple�)�base��to_rabbitmq_queue_argumentsi(i'cs"eZdZdZd�fdd�	Z�ZS)�Messagez
AMQP Message.NcsL|j}t�jf|j||j|�d�|�d�|j|j|�d�p<id�|��dS)N�content_type�content_encoding�application_headers)�body�channel�delivery_tagr
r�
delivery_info�
properties�headers)r�super�__init__r
r�getr)�self�msgr�kwargs�props��	__class__��@/usr/local/lib/python3.9/site-packages/kombu/transport/pyamqp.pyrXs�	�zMessage.__init__)N��__name__�
__module__�__qualname__�__doc__r�
__classcell__rrrrr	Usr	c@s<eZdZdZeZdddddejfdd�Zdd�Zdd�ZdS)	�Channelz
AMQP Channel.NcCs||f||||d�|pi��S)z<Prepare message so that it can be sent using this transport.)�priorityr
rrr)rr
r%r
rrrZ_Messagerrr�prepare_messageks���zChannel.prepare_messagecKst|fi|��S�Nr)r�	argumentsrrrr�prepare_queue_argumentsxszChannel.prepare_queue_argumentscCs|j||d�S)z4Convert encoded message body back to a Python value.�r)r	)rZraw_messagerrr�message_to_python{szChannel.message_to_python)	rr r!r"r	�amqpr&r)r+rrrrr$fs�

r$c@seZdZdZeZdS)�
ConnectionzAMQP Connection.N)rr r!r"r$rrrrr-�sr-c@s�eZdZdZeZeZeZe	jj
Z
e	jjZe	jjZe	jj
Z
dZdZejjjddd�Zd$dd�Zd	d
�Zdd�Zd
d�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd%dd�Zdd�Ze d d!��Z!d"d#�Z"dS)&�	TransportzAMQP Transport.zpy-amqpr,T)ZasynchronousZ
heartbeatsNcKs"||_|p|j|_|p|j|_dSr')�client�default_port�default_ssl_port)rr/r0r1rrrrr�szTransport.__init__cCstjSr')r,�__version__�rrrr�driver_version�szTransport.driver_versioncCs|��Sr'r*�r�
connectionrrr�create_channel�szTransport.create_channelcKs|jfi|��Sr')�drain_events)rr6rrrrr8�szTransport.drain_eventscCs|dur|��dSr')Zcollectr5rrr�_collect�szTransport._collectcCs�|j}|j��D] \}}t||d�st|||�q|jdkrBd|_t|jt�rrd|jvrr|jddurr|j|jd<t|j	|j
|j|j|j
|j|j|j|jd�	fi|jp�i��}|jfi|��}|j|_|��|S)z(Establish connection to the AMQP broker.N�	localhostz	127.0.0.1�server_hostname)	�host�userid�password�login_method�virtual_host�insist�ssl�connect_timeout�	heartbeat)r/�default_connection_params�items�getattr�setattr�hostname�
isinstancerB�dictr<r=r>r?r@rArCrDZtransport_optionsr-�connect)rZconninfo�name�
default_value�opts�connrrr�establish_connection�s:
���
�zTransport.establish_connectioncCs|jSr')�	connectedr5rrr�verify_connection�szTransport.verify_connectioncCsd|_|��dS)z!Close the AMQP broker connection.N)r/�closer5rrr�close_connection�szTransport.close_connectioncCs|jSr')rDr5rrr�get_heartbeat_interval�sz Transport.get_heartbeat_intervalcCs d|j_|�|j|j||�dS�NT)�	transportZraise_on_initial_eintr�
add_reader�sockZon_readable)rr6�looprrr�register_with_event_loop�sz"Transport.register_with_event_loop�cCs|j|d�S)N)�rate)Zheartbeat_tick)rr6r^rrr�heartbeat_check�szTransport.heartbeat_checkcCs(|j}|�d�dkr$t|d�dkSdS)N�productZRabbitMQ�version)�rbT)Zserver_propertiesrr)rr6rrrr�qos_semantics_matches_spec�sz$Transport.qos_semantics_matches_speccCs dd|jjr|jn|jddd�S)NZguestr:ZPLAIN)r=r>�portrIr?)r/rBr1r0r3rrrrE�s�z#Transport.default_connection_paramscOst|jg|�Ri|��Sr')rr/�r�argsrrrrr�szTransport.get_manager)NN)r])#rr r!r"r-�DEFAULT_PORTr0�DEFAULT_SSL_PORTr1r,Zconnection_errorsZchannel_errorsZrecoverable_connection_errorsZrecoverable_channel_errorsZdriver_nameZdriver_typerr.Z
implements�extendrr4r7r8r9rQrSrUrVr\r_rc�propertyrErrrrrr.�s>���



r.cs eZdZdZ�fdd�Z�ZS)�SSLTransportzAMQP SSL Transport.cs&t�j|i|��|jjs"d|j_dSrW)rrr/rBrerrrr�szSSLTransport.__init__rrrrrrk�srk)r"�
__future__rr,Zkombu.utils.amq_managerrZkombu.utils.textr�rrrgrhr	r$Z
StdChannelr-r.rkrrrr�<module>sFo