î
yË Xè  ã               @   sb   d  d l  Z  d  d l m Z Gd d „  d e ƒ Z Gd d „  d e ƒ Z Gd d „  d e ƒ Z d S)	é    N)Úsixc               @   sC   e  Z d  Z d d „  Z d d „  Z d d d „ Z d d	 „  Z d S)
ÚUnreaderc             C   s   t  j ƒ  |  _ d  S)N)r   ÚBytesIOÚbuf)Úself© r   úF/home/ubuntu/projects/ifolica/build/gunicorn/gunicorn/http/unreader.pyÚ__init__   s    zUnreader.__init__c             C   s   t  ƒ  ‚ d  S)N)ÚNotImplementedError)r   r   r   r   Úchunk   s    zUnreader.chunkNc             C   s}  | d  k	 r. t  | t j ƒ r. t d ƒ ‚ n  | d  k	 rb | d k rJ d S| d k  rb d  } qb n  |  j j d t j ƒ | d  k rµ |  j j ƒ  rµ |  j j	 ƒ  } t j
 ƒ  |  _ | S| d  k rÑ |  j ƒ  } | Sxc |  j j ƒ  | k  r6|  j ƒ  } t | ƒ s#|  j j	 ƒ  } t j
 ƒ  |  _ | S|  j j | ƒ qÔ W|  j j	 ƒ  } t j
 ƒ  |  _ |  j j | | d  … ƒ | d  | … S)Nz&size parameter must be an int or long.r   ó    )Ú
isinstancer   Úinteger_typesÚ	TypeErrorr   ÚseekÚosÚSEEK_ENDÚtellÚgetvaluer   r   ÚlenÚwrite)r   ÚsizeÚretÚdr   Údatar   r   r   Úread   s4    zUnreader.readc             C   s*   |  j  j d t j ƒ |  j  j | ƒ d  S)Nr   )r   r   r   r   r   )r   r   r   r   r   Úunread5   s    zUnreader.unread)Ú__name__Ú
__module__Ú__qualname__r	   r   r   r   r   r   r   r   r      s    r   c                   s1   e  Z d  Z d ‡  f d d † Z d d „  Z ‡  S)ÚSocketUnreaderi    c                s)   t  t |  ƒ j ƒ  | |  _ | |  _ d  S)N)Úsuperr    r	   ÚsockÚmxchunk)r   r"   Z	max_chunk)Ú	__class__r   r   r	   ;   s    	zSocketUnreader.__init__c             C   s   |  j  j |  j ƒ S)N)r"   Úrecvr#   )r   r   r   r   r   @   s    zSocketUnreader.chunk)r   r   r   r	   r   r   r   )r$   r   r    :   s   r    c                   s.   e  Z d  Z ‡  f d d †  Z d d „  Z ‡  S)ÚIterUnreaderc                s&   t  t |  ƒ j ƒ  t | ƒ |  _ d  S)N)r!   r&   r	   Úiter)r   Úiterable)r$   r   r   r	   E   s    zIterUnreader.__init__c             C   sG   |  j  s d Sy t j |  j  ƒ SWn t k
 rB d  |  _  d SYn Xd  S)Nr   )r'   r   ÚnextÚStopIteration)r   r   r   r   r   I   s    		zIterUnreader.chunk)r   r   r   r	   r   r   r   )r$   r   r&   D   s   r&   )r   Zgunicornr   Úobjectr   r    r&   r   r   r   r   Ú<module>   s   ,
