HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/__pycache__/nb_popen.cpython-310.pyc
o

�N�g��@s�dZddlZddlZddlZddlZddlZddlZddlZddlZej	dkZ
e
r?ddlZddlZddl
mZmZddlmZe�e�ZGdd�dej�ZdS)a
    :codeauthor: Pedro Algarvio (pedro@algarvio.me)


    salt.utils.nb_popen
    ~~~~~~~~~~~~~~~~~~~

    Non blocking subprocess Popen.

    This functionality has been adapted to work on windows following the recipe
    found on:

        http://code.activestate.com/recipes/440554/
�N�win32)�ReadFile�	WriteFile)�
PeekNamedPipecs�eZdZdZdZ�fdd�Zddd�Zddd	�Zddd�Zd
d�Z	dd�Z
er0dd�Zdd�Z
ndd�Zdd�Z
ddd�Zd�fdd�	Z�ZS)�NonBlockingPopenz$salt.utils.nb_popen.STDOUT.PID-{pid}z$salt.utils.nb_popen.STDERR.PID-{pid}cs�|�dd�|_|�dd�|_|�d|j�|_|�d|j�|_|�dd�}|�dd�}t�j|i|��t�	|j�|_
t�|jj
|jd	��|_|tjurT|j
|_|j|_nt�	|j�|_t�|jj
|jd	��|_t�d
|j|duru|�dS|�dS)N�stream_stdsF�max_size_in_memi�Zstdout_logger_nameZstderr_logger_name�logging_command�stderr)�pidz"Running command under pid %s: '%s')�poprr�_stdout_logger_name_�_stderr_logger_name_�get�super�__init__�tempfileZSpooledTemporaryFile�stdout_buff�logging�	getLogger�formatrZ_stdout_logger�
subprocess�STDOUT�stderr_buffZ_stderr_logger�log�info)�self�args�kwargsr	r
��	__class__��G/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/nb_popen.pyr+s:���

�
��zNonBlockingPopen.__init__NcC�|�d|�S)N�stdout��_recv�r�maxsizer!r!r"�recvZ�zNonBlockingPopen.recvcCr#)Nr
r%r'r!r!r"�recv_err]r*zNonBlockingPopen.recv_err�cCs|�|�|�|�|�|�fS�N)�sendr)r+)r�inputr(r!r!r"�	send_recv`szNonBlockingPopen.send_recvcCs(|durd}n|dkr
d}t||�|fS)Ni�)�getattr)r�whichr(r!r!r"�get_conn_maxsizecs
z!NonBlockingPopen.get_conn_maxsizecCst||���t||d�dSr-)r2�close�setattr)rr3r!r!r"�_closejszNonBlockingPopen._closec
Cs�|jsdSzt�|j���}t||�\}}W|Sty%|�d�YStjt	fyI}z|j
ddtjfvrD|�d�WYd}~S�d}~ww)N�stdinr�m)
r8�msvcrt�
get_osfhandle�filenor�
ValueErrorr7�
pywintypes�error�	Exceptionr�errno�	ESHUTDOWN)rr/�x�errCode�written�whyr!r!r"r.ps	���zNonBlockingPopen.sendc

Cs$|�||�\}}|durdSz#t�|���}t|d�\}}}||kr$|}|dkr0t||d�\}}Wn2ty?|�|�YStj	t
fyc}	z|	jddtj
fvr^|�|�WYd}	~	S�d}	~	wwt||�d���|�t|d|�d���|���|jr�tt|��|�|jr�|�|�}|S)Nrr9�_buff�_�_logger)r4r:r;r<rrr=r7r>r?r@rrArBr2�write�debug�rstripr�sys�universal_newlines�_translate_newlines)
rr3r(�connrC�readZnAvailZnMessagerDrFr!r!r"r&�s4���
zNonBlockingPopen._recvc
Cs�|jsdSt�g|jggd�dsdSzt�|j��|�}W|Sty?}z|jdtjkr:|�	d�WYd}~S�d}~ww)Nrr1r8)
r8�select�osrJr<�OSErrorrrAZEPIPEr7)rr/rErFr!r!r"r.�s���cCsH|�||�\}}|durdSddl}|�||j�}|js'|�||j|tjB�zot�|gggd�dsCW|jsA|�||j|�dSdS|�|�}|s\|�	|�W|js[|�||j|�SS|j
rd|�|�}t||�d���
|�t|d|�d���|���|jr�tt|��
|�|W|js�|�||j|�SS|js�|�||j|�ww)Nrr,rGrHrI)r4�fcntl�F_GETFL�closed�F_SETFLrS�
O_NONBLOCKrRrQr7rNrOr2rJrKrLrrM)rr3r(rPrU�flagsZbuffr!r!r"r&�s>�
�
��
���{�G�z�?cCs�d}|��durI|jdurd}|��|jdurd}|��|d7}|dkr<d}|��\}}|r5t�|�|r<t�|�t	�
|�|��dusdSdS)Nrr1�d)�pollr$r)r
r+�communicaterrKr?�time�sleep)r�intervalZsilent_iterationsZ
stdoutdataZ
stderrdatar!r!r"�poll_and_read_until_finish�s$




�z+NonBlockingPopen.poll_and_read_until_finishcsLt��|�|j��|j�d�|j��|j�d�|j��|j��fS)Nr)rr^r�flush�seekrrQ)rr/rr!r"r^�s

zNonBlockingPopen.communicater-)r,N)r[)�__name__�
__module__�__qualname__r
rrr)r+r0r4r7�	mswindowsr.r&rbr^�
__classcell__r!r!rr"r%s 
/



 r)�__doc__rArrSrRrrMrr_�platformrhr:r>Z	win32filerrZ	win32piperrrer�Popenrr!r!r!r"�<module>s"