File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/__pycache__/nb_popen.cpython-310.pyc
o
�N�g� � @ s� d Z ddlZddlZddlZddlZddlZddlZddlZddlZej dkZ
e
r?ddlZddlZddl
mZmZ ddlmZ e�e�ZG dd� 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)�
PeekNamedPipec s� e Zd ZdZdZ� fdd�Zddd�Zddd �Zddd�Zd
d� Z dd� Z
er0dd� Zdd� Z
ndd� Zdd� Z
ddd�Zd� fdd� Z� ZS )�NonBlockingPopenz$salt.utils.nb_popen.STDOUT.PID-{pid}z$salt.utils.nb_popen.STDERR.PID-{pid}c s� |� dd�| _|� dd�| _|� d| j�| _|� d| j�| _|� dd �}|�dd �}t� j|i |�� t� | j�| _
t�| jj
| jd ��| _|tju rT| j
| _| j| _nt� | j�| _t�| jj
| jd ��| _t�d
| j|d u ru|� d S |� d S )N�stream_stdsF�max_size_in_memi � Zstdout_logger_nameZstderr_logger_name�logging_command�stderr)�pidz"Running command under pid %s: '%s')�popr r �_stdout_logger_name_�_stderr_logger_name_�get�super�__init__�tempfileZSpooledTemporaryFile�stdout_buff�logging� getLogger�formatr Z_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__Nc C � | � d|�S )N�stdout��_recv�r �maxsizer! r! r"