a
    mzf	                     @   s`   d Z ddlZddlZdZG dd dejZG dd dejZG dd	 d	eZd
ej	fddZ
dS )zSocket file object.    Ni @  c                   @   s    e Zd ZdZdd Zdd ZdS )BufferedWriterz-Faux file object attached to a socket object.c                 C   s`   |    t|trtd| j, | j| |   t|W  d   S 1 sR0    Y  dS )zWrite bytes to buffer.z can't write str to binary streamN)	_checkClosed
isinstancestr	TypeErrorZ_write_lock
_write_bufextend_flush_unlockedlen)selfb r   >/var/www/media/lib/python3.9/site-packages/cheroot/makefile.pywrite   s    
zBufferedWriter.writec              
   C   sf   |  d | jrbz| jt| j}W n, tjyR } z|j}W Y d }~n
d }~0 0 | jd |= q
d S )Nzflush of closed file)r   r   rawr   bytesioBlockingIOErrorcharacters_written)r   ner   r   r   r	      s    
zBufferedWriter._flush_unlockedN)__name__
__module____qualname____doc__r   r	   r   r   r   r   r      s   r   c                       s<   e Zd ZdZdejf fdd	Z fddZdd Z  Z	S )	StreamReaderzSocket stream reader.rc                    s    t  t||| d| _dS )z Initialize socket stream reader.r   N)super__init__socketSocketIO
bytes_readr   sockmodebufsize	__class__r   r   r   *   s    zStreamReader.__init__c                    s(   t  j|i |}|  jt|7  _|S )zCapture bytes read.)r   readr!   r
   )r   argskwargsvalr&   r   r   r(   /   s    zStreamReader.readc                 C   s   t | j| jkS )z.Return true if there is buffered data to read.)r
   Z	_read_bufZ	_read_pos)r   r   r   r   has_data5   s    zStreamReader.has_data)
r   r   r   r   r   DEFAULT_BUFFER_SIZEr   r(   r,   __classcell__r   r   r&   r   r   '   s   r   c                       s4   e Zd ZdZdejf fdd	Z fddZ  ZS )StreamWriterzSocket stream writer.wc                    s    t  t||| d| _dS )z Initialize socket stream writer.r   N)r   r   r   r    bytes_writtenr"   r&   r   r   r   =   s    zStreamWriter.__init__c                    s0   t  j|g|R i |}|  jt|7  _|S )zCapture bytes written.)r   r   r1   r
   )r   r+   r)   r*   resr&   r   r   r   B   s    zStreamWriter.write)	r   r   r   r   r   r-   r   r   r.   r   r   r&   r   r/   :   s   r/   r   c                 C   s   d|v rt nt}|| ||S )z(File object attached to a socket object.r   )r   r/   )r#   r$   r%   clsr   r   r   MakeFileI   s    r4   )r   r   Z_pyior   ZSOCK_WRITE_BLOCKSIZEr   BufferedReaderr   r/   r-   r4   r   r   r   r   <module>   s   