
    ^fG                       d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	m
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 n# e$ r dxZZY nw xY wd ej        D             Z G d dej                  Z G d dej                  ZdS )a+  SoftLayer Message Queue transport module for kombu.

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

Connection String
=================
 *Unreviewed*

Transport Options
=================
 *Unreviewed*
    )annotationsN)Empty)bytes_to_strsafe_str)dumpsloads)cached_property   )virtual)
get_client)ResponseErrorc                6    i | ]}|d vt          |          dS )__   )ord).0cs     F/var/www/html/env/lib/python3.11/site-packages/kombu/transport/SLMQ.py
<dictcomp>r   )   s,       CFFD    c                  
    e Zd ZdZdZdZdZi Z e            Z	 fdZ
 fdZ fdZefdZd	 Z fd
Zd Zd Z fdZd Zd Zd Zed             Zed             Zed             Zed             Zed             Z xZS )ChannelzSLMQ Channel.i  zkombu%(vhost)sNc                    t           t          d           t                      j        |i | | j                                        }|D ]}|| j        |<   d S )Nz7SLMQ transport requires the softlayer_messaging library)r   ImportErrorsuper__init__slmqqueues_queue_cache)selfargskwargsr   queue	__class__s        r   r   zChannel.__init__7   sx    I   	$)&)))!!## 	- 	-E',De$$	- 	-r   c                x    |r| j                             |            t                      j        ||g|R i |S N)_noack_queuesaddr   basic_consume)r    r#   no_ackr!   r"   r$   s        r   r)   zChannel.basic_consumeA   s[     	*""5)))$uww$UF 6&*6 6 6.46 6 	6r   c                    || j         v r'| j        |         }| j                            |           t	                                          |          S r&   )
_consumers_tag_to_queuer'   discardr   basic_cancel)r    consumer_tagr#   r$   s      r   r/   zChannel.basic_cancelG   sL    4?**&|4E&&u---ww##L111r   c                `    t          t          |                                        |          S )z4Format AMQP queue name into a valid SLQS queue name.)strr   	translate)r    nametables      r   entity_namezChannel.entity_nameM   s$    8D>>"",,U333r   c                *   |                      | j        |z             }	 | j        |         S # t          $ r\ 	 | j                            || j                   n# t          $ r Y nw xY w| j                            |          x}| j        |<   |cY S w xY w)zEnsure a queue exists in SLQS.)visibility_timeout)	r6   queue_name_prefixr   KeyErrorr   create_queuer8   r   r#   )r    r#   r"   qs       r   
_new_queuezChannel._new_queueQ   s      !7%!?@@		$U++ 	 	 		&&d.E ' G G G G    +/9??5+A+AAA!%(HHH	s2   , 
B!AB
A&#B%A&&)BBc                   |                      |          }| j                            |d           | j                            |                              d           t                                          |           dS )zDelete queue by name.NT)force)r6   r   popr   r#   deleter   _delete)r    r#   r!   r"   
queue_namer$   s        r   rB   zChannel._delete_   sp    %%e,,
j$///	
##***666
#####r   c                t    |                      |          }|                    t          |                     dS )zPut message onto queue.N)r=   pushr   )r    r#   messager"   r<   s        r   _putzChannel._putf   s1    OOE""	uW~~r   c                   |                      |          }|                    d          }|d         r|d         d         }t          t          |d                             }|| j        v r.|                    |d                                                    n/|d         d                             |d         |j        d           |S t                      )	z/Try to retrieve a single message off ``queue``.r
   itemsr   bodyid
propertiesdelivery_info)slmq_message_idslmq_queue_name)
r=   r@   r   r   r'   rF   rA   updater4   r   )r    r#   r<   rsmpayloads         r   _getzChannel._getk   s    OOE""UU1XXg; 	7AAL63344G***		!D'""))++++%o6=='(w16?K ?K L L LNggr   c                    | j                             |          j        }	 |d         }|                     ||d                    n# t          $ r Y nw xY wt                                          |           d S )NrO   rN   )qosgetrM   delete_messager:   r   	basic_ack)r    delivery_tagrM   r#   r$   s       r   rY   zChannel.basic_ackz   s    \22@	I!"34E }5F'GHHHH  	 	 	D	 	,'''''s   A 
AAc                \    |                      |                                          d         S )z)Return the number of messages in a queue.message_count)r=   detail)r    r#   s     r   _sizezChannel._size   s%    u%%,,..??r   c                    |                      |          }d}|                    d          }|d         rI|d         D ]#}|                     ||d                    |dz  }$|                    d          }|d         I|S )z'Delete all current messages in a queue.r   
   rI   rK   r
   )r=   r@   rX   )r    r#   r<   nresultsrR   s         r   _purgezChannel._purge   s    OOE""%%))g 	 W%  ##E1T7333QeeBiiG	 g 	 
 r   c                    | j                             |                     |                    }|                    |                                          S r&   )r   r#   r6   rF   rA   )r    r#   
message_idr<   s       r   rX   zChannel.delete_message   sA    IOOD,,U3344yy$$++---r   c                   | j         Z| j        }t          j                            d|j                  }t          j                            d|j                  }t          j                            d|j                  }t          j                            d|j                  }t          j                            d|j	                  }t          t          j                            d| j                            d                    pd          }d	                    |rd
nd||rd| nd          }t          ||          | _         | j                             ||           | j         S )NSLMQ_ACCOUNTSL_USERNAME
SL_API_KEY	SLMQ_HOST	SLMQ_PORTSLMQ_SECUREsecureTz	{}://{}{}httpshttp: )endpoint)_slmqconninfoosenvironrW   virtual_hostuseridpasswordhostnameportbooltransport_optionsformatr   authenticate)	r    rt   accountuserapi_keyhostr{   rm   rr   s	            r   r   zChannel.slmq   s6   :}Hjnn^X5JKKG:>>-AADjnn\83DEEG:>>+x/@AAD:>>+x}==D"*..t599(CCE E MHL F #))!-vt"*
D


 H
 $Gh???DJJ##D'222zr   c                    | j         j        S r&   )
connectionclientr    s    r   rt   zChannel.conninfo   s    %%r   c                $    | j         j        j        S r&   )r   r   r}   r   s    r   r}   zChannel.transport_options   s    %77r   c                D    | j                             d          p| j        S )Nr8   )r}   rW   default_visibility_timeoutr   s    r   r8   zChannel.visibility_timeout   s'    &**+?@@ 0/	1r   c                8    | j                             dd          S )Nr9   rq   )r}   rW   r   s    r   r9   zChannel.queue_name_prefix   s    %))*=rBBBr   )__name__
__module____qualname____doc__r   domain_formatrs   r   setr'   r   r)   r/   CHARS_REPLACE_TABLEr6   r=   rB   rG   rT   rY   r^   rc   rX   propertyr   rt   r}   r	   r8   r9   __classcell__)r$   s   @r   r   r   .   s       !%$MELCEEM- - - - -6 6 6 6 62 2 2 2 2 ': 4 4 4 4  $ $ $ $ $  
  ( ( ( ( (@ @ @
 
 
. . .   X( & & X& 8 8 X8 1 1 _1 C C _C C C C Cr   r   c                  J    e Zd ZdZeZdZdZej        j	        e
ej        fz   Z	dS )	TransportzSLMQ Transport.r
   N)r   r   r   r   r   polling_intervaldefault_portr   r   connection_errorsr   socketerror r   r   r   r      sE        GL+6</
 	
 r   r   )r   
__future__r   ru   r   stringr#   r   kombu.utils.encodingr   r   kombu.utils.jsonr   r   kombu.utils.objectsr	   rq   r   softlayer_messagingr   softlayer_messaging.errorsr   r   punctuationr   r   r   r   r   r   <module>r      s   ( # " " " " " 				         7 7 7 7 7 7 7 7 ) ) ) ) ) ) ) ) / / / / / /      &......8888888 & & &!%%J&  ,   
NC NC NC NC NCgo NC NC NCb    !     s   A 	AA