
                         f    d Z ddlmZ ddlmZ ddlZddlZddlmZ  G d dej                        Zy)z,A threadsafe pool of httplib2.Http handlers.    )absolute_import)print_functionN)rangec                   *    e Zd ZdZddZd Zd Zd Zy)Httpz.A threadsafe pool of httplib2.Http transports.c                     t        j                  t        j                               | _        t	        |      D cg c]	  } |        c}| _        y c c}w N)	threading	ConditionLock
_conditionr   _transports)selftransport_factorysize_s       >lib/third_party/containerregistry/transport/transport_pool_.py__init__zHttp.__init__   s=    )))..*:;DO5:4[A[)+[ADAs   Ac                     | j                   5  	 | j                  r#| j                  j                         cd d d        S | j                   j                          J# 1 sw Y   y xY wr	   )r   r   popwait)r   s    r   _get_transportzHttp._get_transport!   sM    	!!%%' 
 	  
s   'AAA"c                     | j                   5  | j                  j                  |       | j                   j                  d       d d d        y # 1 sw Y   y xY w)N   )n)r   r   appendnotify)r   	transports     r   _return_transportzHttp._return_transport+   s>    	
i( ooq!	 
s   8AAc                     | j                         }	  |j                  |i || j                  |       S # | j                  |       w xY w)zThis awaits a transport and delegates the request call.

    Args:
      *args: arguments to request.
      **kwargs: named arguments to request.

    Returns:
      tuple of response and content.
    )r   requestr   )r   argskwargsr   s       r   r!   zHttp.request2   sI     ##%I(Y//
Y'dY's	   5 AN)   )__name__
__module____qualname____doc__r   r   r   r!        r   r   r      s    6B"(r*   r   )	r(   
__future__r   r   r
   httplib2	six.movesr   r   r)   r*   r   <module>r.      s)    3 & %   &(8== &(r*   