o
    >h                     @   s   d Z ddlZddlZddlmZ ddlZddlmZmZ ddl	m
Z
mZmZmZmZ ddlmZ ddlmZ e Zee
G dd	 d	ZeeeeG d
d dejZdS )zM
Windows-specific implementation of the L{twisted.internet.stdio} interface.
    N)implementer)_pollingfilemain)IAddress	IConsumerIHalfCloseableProtocolIPushProducer
ITransport)Logger)Failurec                   @   s   e Zd ZdS )Win32PipeAddressN)__name__
__module____qualname__ r   r   |/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/twisted/internet/_win32stdio.pyr      s    r   c                   @   s   e Zd ZdZdZd"ddZdd Zdd Zd	d
 ZdZ	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! ZdS )#
StandardIOFNc                 C   s   |du r
ddl m} tdddD ]	}t|tj qtj	| | || _
ttj}ttj}t|| j| j| _t|| j| _| | j | | j | j
|  dS )z
        Start talking to standard IO with the given protocol.

        Also, put it stdin/stdout/stderr into binary mode.
        Nr   )reactor      )twisted.internetr   rangemsvcrtsetmodeosO_BINARYr   _PollingTimer__init__protowin32apiGetStdHandleSTD_INPUT_HANDLESTD_OUTPUT_HANDLE_PollableReadPipedataReceivedreadConnectionLoststdin_PollableWritePipewriteConnectionLoststdout_addPollableResourcemakeConnection)selfr   r   stdfdhstdinhstdoutr   r   r   r   '   s   
zStandardIO.__init__c                 C      | j | d S N)r   r$   r,   datar   r   r   r$   D      zStandardIO.dataReceivedc                 C   h   t d}t| jr| j  W d    n1 sw   Y  |   |js0| js2| 	  d S d S d S )Nzread connection lost)
_logfailuresHandledr   
providedByr   r%   checkConnLost	succeededdisconnectingloseConnectionr,   opr   r   r   r%   G      
zStandardIO.readConnectionLostc                 C   r5   )Nzwrite connection lost)
r6   r7   r   r8   r   r(   r9   r:   r;   r<   r=   r   r   r   r(   O   r?   zStandardIO.writeConnectionLostr   c                 C   s>   |  j d7  _ | j dkrd| _d| _| jttj d S d S )Nr   r   T)	connsLostr;   disconnectedr   connectionLostr   r   CONNECTION_DONEr,   r   r   r   r9   Y   s   
zStandardIO.checkConnLostc                 C   r0   r1   )r)   writer2   r   r   r   rE   b   r4   zStandardIO.writec                 C   s   | j d| d S )N    )r)   rE   join)r,   seqr   r   r   writeSequencee   s   zStandardIO.writeSequencec                 C   s   d| _ | j  | j  d S )NT)r;   r&   closer)   rD   r   r   r   r<   h   s   
zStandardIO.loseConnectionc                 C      t  S r1   r   rD   r   r   r   getPeerm      zStandardIO.getPeerc                 C   rK   r1   rL   rD   r   r   r   getHostp   rN   zStandardIO.getHostc                 C   s   | j ||S r1   )r)   registerProducer)r,   producer	streamingr   r   r   rP   u      zStandardIO.registerProducerc                 C   s
   | j  S r1   )r)   unregisterProducerrD   r   r   r   rT   x   s   
zStandardIO.unregisterProducerc                 C      | j   d S r1   )r&   stopProducingrD   r   r   r   rV      rS   zStandardIO.stopProducingc                 C   rU   r1   )r&   pauseProducingrD   r   r   r   rW      rS   zStandardIO.pauseProducingc                 C   rU   r1   )r&   resumeProducingrD   r   r   r   rX      rS   zStandardIO.resumeProducingr1   )r   r   r   r;   rA   r   r$   r%   r(   r@   r9   rE   rI   r<   rM   rO   rP   rT   rV   rW   rX   r   r   r   r   r   "   s&    
	r   )__doc__r   r   zope.interfacer   r   r   r   r   twisted.internet.interfacesr   r   r   r   r	   twisted.loggerr
   twisted.python.failurer   r6   r   r   r   r   r   r   r   <module>   s   
