U
    ¨l©gK  ã                   @   s@   d dl Z d dlZd dlmZ dd„ Zdd„ Zdd„ Zd	d
„ ZdS )é    N)ÚNetworkErrorc              
   C   sˆ   |}t ƒ }|dkr€z|  |¡}W n0 tjk
rP } ztd| ƒ‚W 5 d }~X Y nX t|ƒ}|dkrltdƒ‚q
| |¡ ||8 }q
t|ƒS )Nr   zFailed to read from socket: %szFailed to read from socket)Ú	bytearrayZrecvÚsocketÚerrorr   ÚlenÚextendÚbytes)ÚfdÚtotalZremainÚdataÚnewÚeÚn© r   úb/opt/seafile-pro-server-build/seafile-server/seafile/lib/python3.8/site-packages/pysearpc/utils.pyÚrecvall   s    


r   c              
   C   s|   t |ƒ}d}||k rxz|  ||d … ¡}W n0 tjk
rZ } ztd| ƒ‚W 5 d }~X Y nX |dkrntdƒ‚q||7 }qd S )Nr   zFailed to write to socket: %szFailed to write to socket)r   Úsendr   r   r   )r	   r   r
   Úoffsetr   r   r   r   r   Úsendall   s    
r   c                   C   s
   t jdkS )NÚnt)ÚosÚnamer   r   r   r   Úis_win32&   s    r   c                 C   s6   t ƒ s2dd l}| | |j¡}| | |j||jB ¡ d S )Nr   )r   ÚfcntlZF_GETFDZF_SETFDZ
FD_CLOEXEC)r	   r   Z	old_flagsr   r   r   Úmake_socket_closeonexec)   s    r   )r   r   Zpysearpc.errorsr   r   r   r   r   r   r   r   r   Ú<module>   s   