File: //usr/local/CyberCP/lib64/python3.10/site-packages/docker/utils/__pycache__/socket.cpython-310.pyc
o
�h� � @ s� d dl Z d dlZd dlZd dlZd dlZzddlmZ W n
ey) e d�ZY nw dZ
dZG dd� de�Z
dZdd d
�Zdd� Zd
d� Zdd� Zdd� Zdd� Zddd�Zdd� ZdS )� N� )�NpipeSocket� c @ s e Zd ZdS )�SocketErrorN)�__name__�
__module__�__qualname__� r r �F/usr/local/CyberCP/lib/python3.10/site-packages/docker/utils/socket.pyr s r �m � c
C s t jt jt jf}t| t�s-ttd�st�| gg g � nt�� }|� | tj
tjB � |�� z t| d�r9| �|�W S t| t
j�rE| �|�W S t�| �� |�W S tyf } z
|j |vr[� W Y d}~dS d}~w ty� } zt| t�ot|j�dko|jd tk}|r�W Y d}~dS � d}~ww )z+
Reads at most n bytes from socket
�poll�recvNr � )�errno�EINTR�EDEADLK�EWOULDBLOCK�
isinstancer �hasattr�selectr
�register�POLLIN�POLLPRIr �pysocket�SocketIO�read�os�fileno�OSError� Exception�len�args�NPIPE_ENDED)�socket�n�recoverable_errorsr
�e�
is_pipe_endedr r r
r s:
��
����r c C sF d}t |�|k r!t| |t |� �}|std��||7 }t |�|k s|S )z]
Reads exactly n bytes from socket
Raises SocketError if there isn't enough data
� zUnexpected EOF)r! r r )r$ r% �data� next_datar r r
�read_exactly>