File: //lib/python3/dist-packages/twisted/internet/__pycache__/_win32stdio.cpython-38.pyc
U
W[� � @ s� d Z ddlmZmZ ddlZddlZddlZddlmZ ddl m
Z
mZmZm
Z
mZ ddlmZmZ ddlmZ ee�G dd � d e��Zeeee
�G d
d� dej��ZdS )zM
Windows-specific implementation of the L{twisted.internet.stdio} interface.
� )�absolute_import�divisionN)�implementer)�IHalfCloseableProtocol�
ITransport� IConsumer�
IPushProducer�IAddress)�_pollingfile�main)�Failurec @ s e Zd ZdS )�Win32PipeAddressN)�__name__�
__module__�__qualname__� r r �>/usr/lib/python3/dist-packages/twisted/internet/_win32stdio.pyr
s r
c @ s� e Zd ZdZdZd"dd�Zdd� Zdd� Zd d
� ZdZ dd
� Z
dd� Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Zdd� Zd d!� ZdS )#�
StandardIOFNc C s� |dkrddl m} tddd�D ]}t�|tj� q tj� | |� || _
t�tj
�}t�tj�}t�|| j| j�| _t�|| j�| _| �| j� | �| j� | j
�| � dS )z�
Start talking to standard IO with the given protocol.
Also, put it stdin/stdout/stderr into binary mode.
Nr )�reactor� � )�twisted.internetr �range�msvcrtZsetmode�osZO_BINARYr
�
_PollingTimer�__init__�proto�win32apiZGetStdHandleZSTD_INPUT_HANDLEZSTD_OUTPUT_HANDLEZ_PollableReadPipe�dataReceived�readConnectionLost�stdinZ_PollableWritePipe�writeConnectionLost�stdoutZ_addPollableResourceZmakeConnection)�selfr r ZstdfdZhstdinZhstdoutr r r r s( � �zStandardIO.__init__c C s | j �|� d S �N)r r �r$ �datar r r r >