
    Yf                        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	                      Z eeee           G 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                       e Zd ZdS )Win32PipeAddressN)__name__
__module____qualname__     N/var/www/html/env/lib/python3.11/site-packages/twisted/internet/_win32stdio.pyr   r      s        Dr   r   c                   v    e Zd ZdZdZddZd Zd Zd ZdZ	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )
StandardIOFNc                 f   |ddl m} t          ddd          D ]!}t          j        |t
          j                   "t          j        	                    | |           || _
        t          j        t          j                  }t          j        t          j                  }t          j        || j        | j                  | _        t          j        || 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hstdouts         r   r"   zStandardIO.__init__'   s    ?0000001a^^ 	/ 	/EN5"+...."++D':::
&x'@AA'(BCC!3D%t'>
 

 #5gt?WXX!!$*---!!$+...
!!$'''''r   c                 :    | j                             |           d S N)r#   r)   r1   datas     r   r)   zStandardIO.dataReceivedD   s    
%%%%%r   c                 B   t                               d          5 }t          j        | j                  r| j                                         d d d            n# 1 swxY w Y   |                                  |j        s| j        s| 	                                 d S d S d S )Nzread connection lost)
_logfailuresHandledr   
providedByr#   r*   checkConnLost	succeededdisconnectingloseConnectionr1   ops     r   r*   zStandardIO.readConnectionLostG   s    !!"899 	0R%0<< 0
--///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	| 	"D$6 	"!!!!!	" 	" 	" 	"   3AA!Ac                 B   t                               d          5 }t          j        | j                  r| j                                         d d d            n# 1 swxY w Y   |                                  |j        s| j        s| 	                                 d S d S d S )Nzwrite connection lost)
r:   r;   r   r<   r#   r-   r=   r>   r?   r@   rA   s     r   r-   zStandardIO.writeConnectionLostO   s    !!"9:: 	1b%0<< 1
..000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	| 	"D$6 	"!!!!!	" 	" 	" 	"rC   r   c                     | xj         dz  c_         | j         dk    rAd| _        d| _        | j                            t          t          j                             d S d S )Nr   r   T)	connsLostr?   disconnectedr#   connectionLostr   r   CONNECTION_DONEr1   s    r   r=   zStandardIO.checkConnLostY   s^    !>Q!%D $DJ%%gd.B&C&CDDDDD r   c                 :    | j                             |           d S r6   )r.   writer7   s     r   rL   zStandardIO.writeb   s    $r   c                 `    | j                             d                    |                     d S )Nr   )r.   rL   join)r1   seqs     r   writeSequencezStandardIO.writeSequencee   s(    #((3--(((((r   c                 x    d| _         | j                                         | j                                         d S )NT)r?   r+   closer.   rJ   s    r   r@   zStandardIO.loseConnectionh   s8    !
r   c                     t                      S r6   r   rJ   s    r   getPeerzStandardIO.getPeerm       !!!r   c                     t                      S r6   rT   rJ   s    r   getHostzStandardIO.getHostp   rV   r   c                 8    | j                             ||          S r6   )r.   registerProducer)r1   producer	streamings      r   rZ   zStandardIO.registerProduceru   s    {++Hi@@@r   c                 4    | j                                         S r6   )r.   unregisterProducerrJ   s    r   r^   zStandardIO.unregisterProducerx   s    {--///r   c                 8    | j                                          d S r6   )r+   stopProducingrJ   s    r   r`   zStandardIO.stopProducing   s    
  """""r   c                 8    | j                                          d S r6   )r+   pauseProducingrJ   s    r   rb   zStandardIO.pauseProducing   s    
!!#####r   c                 8    | j                                          d S r6   )r+   resumeProducingrJ   s    r   rd   zStandardIO.resumeProducing   s    
""$$$$$r   r6   )r   r   r   r?   rG   r"   r)   r*   r-   rF   r=   rL   rP   r@   rU   rX   rZ   r^   r`   rb   rd   r   r   r   r   r   "   s       ML( ( ( (:& & &" " "" " " IE E E     ) ) )  
" " "" " "
A A A0 0 0# # #
$ $ $% % % % %r   r   )__doc__r   r   zope.interfacer   r$   r   r   r   twisted.internet.interfacesr   r   r   r	   r
   twisted.loggerr   twisted.python.failurer   r:   r   r!   r   r   r   r   <module>rj      sh   
  				 & & & & & &  / / / / / / / /              " ! ! ! ! ! * * * * * *vxx X	 	 	 	 	 	 	 	 ZM22e% e% e% e% e%+ e% e% 32e% e% e%r   