U
    d                     @   s<   d Z ddlmZ ddlmZ dgZdd ZG dd dZd	S )
z Amazon SQS queue implementation.    )	transform   )AsyncMessage
AsyncQueuec                 C   s   t | dkr| d S dS )z4Get the first item in a list, or None if list empty.r   r   N)len)rs r   D/tmp/pip-unpacked-wheel-hqfrjlvz/kombu/asynchronous/aws/sqs/queue.py
list_first
   s    r
   c                   @   s  e Zd ZdZddefddZdd Ze Z Z Z	 Z
 Z Z Z Z Z ZZd0dd	Zd1d
dZd2ddZdd Zd3ddZdd Zd4ddZd5ddZd6ddZd7ddZd8ddZdd  Zd9d"d#Zd:d$d%Zd;d&d'Z d<d(d)Z!d=d*d+Z"d>d.d/Z#dS )?r   zAsync SQS Queue.Nc                 C   s   || _ || _|| _d | _d S N)
connectionurlmessage_classvisibility_timeout)selfr   r   r   r   r   r	   __init__   s    zAsyncQueue.__init__c                 O   s
   t  d S r   )NotImplementedError)r   argskwargsr   r   r	   _NA   s    zAsyncQueue._NAAllc                 C   s   | j | ||S r   )r   Zget_queue_attributes)r   
attributescallbackr   r   r	   get_attributes   s
      zAsyncQueue.get_attributesc                 C   s   | j | |||S r   )r   Zset_queue_attribute)r   	attributevaluer   r   r   r	   set_attribute#   s       zAsyncQueue.set_attributeVisibilityTimeoutc                 C   s   |  |t| j||tS r   r   r   _coerce_field_valueint)r   r   _attrr   r   r	   get_timeout(   s        zAsyncQueue.get_timeoutc                 C   s   ||| S r   r   )r   keytyperesponser   r   r	   r   /   s    zAsyncQueue._coerce_field_valuec                 C   s   |  d|t| j|S )Nr   )r   r   _on_timeout_set)r   r   r   r   r   r	   set_timeout2   s      zAsyncQueue.set_timeoutc                 C   s   |r
|| _ | j S r   )r   )r   r   r   r   r	   r&   :   s    zAsyncQueue._on_timeout_setc                 C   s   | j | ||||S r   )r   add_permission)r   labelZaws_account_idaction_namer   r   r   r	   r(   ?   s        zAsyncQueue.add_permissionc                 C   s   | j | ||S r   )r   remove_permission)r   r)   r   r   r   r	   r+   E   s    zAsyncQueue.remove_permissionc                 C   s   | j d||tt|dS )Nr   )wait_time_secondsr   )get_messagesr   r
   )r   r   r,   r   r   r   r	   readH   s     zAsyncQueue.readc                 C   s"   | j j| | |t| j||dS N)r   )r   send_messageZget_body_encodedr   _on_message_sent)r   messageZdelay_secondsr   r   r   r	   writeP   s      zAsyncQueue.writec                 C   s   | j j| ||dS r/   )r   Zsend_message_batchr   messagesr   r   r   r	   write_batchV   s
      zAsyncQueue.write_batchc                 C   s   |j |_ |j|_|S r   )idmd5)r   Zorig_messageZnew_messager   r   r	   r1   [   s    zAsyncQueue._on_message_sentr   c                 C   s   | j j| |||||dS )N)Znumber_messagesr   r   r,   r   )r   Zreceive_message)r   Znum_messagesr   r   r,   r   r   r   r	   r-   `   s     zAsyncQueue.get_messagesc                 C   s   | j | ||S r   )r   delete_message)r   r2   r   r   r   r	   r9   j   s    zAsyncQueue.delete_messagec                 C   s   | j j| ||dS r/   )r   delete_message_batchr4   r   r   r	   r:   m   s
      zAsyncQueue.delete_message_batchc                 C   s   | j j| ||dS r/   )r   change_message_visibility_batchr4   r   r   r	   r;   r   s
      z*AsyncQueue.change_message_visibility_batchc                 C   s   | j j| |dS r/   )r   Zdelete_queue)r   r   r   r   r	   deletew   s    zAsyncQueue.delete
   ApproximateNumberOfMessagesc                 C   s   | j |t| j||tdS r/   r   )r   Z	page_sizeZvtimeoutr   r!   r   r   r	   countz   s        zAsyncQueue.count)r   N)N)Nr   )N)N)N)NNN)NN)N)r   NNNN)N)N)N)N)r=   r=   Nr>   )$__name__
__module____qualname____doc__r   r   r   Z
count_slowdumpZsave_to_fileZsave_to_filenamesaveZ
save_to_s3Zload_from_s3Zload_from_fileZload_from_filenameloadclearr   r   r"   r   r'   r&   r(   r+   r.   r3   r6   r1   r-   r9   r:   r;   r<   r?   r   r   r   r	   r      sT    



 

  


      





  N)rC   Zviner   r2   r   Z_all__r
   r   r   r   r   r	   <module>   s
   