
    h                         S r SSKrSSKrSSKJr  SSKrSSKJrJr  SSK	J
r
JrJrJrJr  SSKJr  SSKJr  \" 5       r\" \
5       " S S	5      5       r\" \\\5       " S
 S\R*                  5      5       rg)zM
Windows-specific implementation of the L{twisted.internet.stdio} interface.
    N)implementer)_pollingfilemain)IAddress	IConsumerIHalfCloseableProtocolIPushProducer
ITransport)Logger)Failurec                       \ rS rSrSrg)Win32PipeAddress    N)__name__
__module____qualname____firstlineno____static_attributes__r       c/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/twisted/internet/_win32stdio.pyr   r      s    r   r   c                   ~    \ rS rSrSrSrSS jrS rS rS r	Sr
S	 rS
 rS rS rS rS rS rS rS rS rS rSrg)
StandardIO"   FNc                    Uc  SSK Jn  [        SSS5       H(  n[        R                  " U[
        R                  5        M*     [        R                  R                  X5        Xl
        [        R                  " [        R                  5      n[        R                  " [        R                  5      n[        R                  " X@R                   U R"                  5      U l        [        R&                  " XPR(                  5      U l        U R-                  U R$                  5        U R-                  U R*                  5        U R                  R/                  U 5        g)zk
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&   StandardIO.__init__'   s     ?01a^ENN5"++. $ 	""++D:
&&x'@'@A''(B(BC!33%%t'>'>

 #55g?W?WX!!$**-!!$++.

!!$'r   c                 :    U R                   R                  U5        g N)r'   r-   r5   datas     r   r-   StandardIO.dataReceivedD   s    

%r   c                 h   [         R                  S5       n[        R                  " U R                  5      (       a  U R                  R                  5         S S S 5        U R                  5         WR                  (       d#  U R                  (       d  U R                  5         g g g ! , (       d  f       NS= f)Nzread connection lost)
_logfailuresHandledr   
providedByr'   r.   checkConnLost	succeededdisconnectingloseConnectionr5   ops     r   r.   StandardIO.readConnectionLostG   sv    !!"89R%00<<

--/ : 	||D$6$6! %7|	 :9   A B##
B1c                 h   [         R                  S5       n[        R                  " U R                  5      (       a  U R                  R                  5         S S S 5        U R                  5         WR                  (       d#  U R                  (       d  U R                  5         g g g ! , (       d  f       NS= f)Nzwrite connection lost)
r@   rA   r   rB   r'   r1   rC   rD   rE   rF   rG   s     r   r1   StandardIO.writeConnectionLostO   sv    !!"9:b%00<<

..0 ; 	||D$6$6! %7|	 ;:rJ   r   c                     U =R                   S-  sl         U R                   S:  aA  SU l        SU l        U R                  R	                  [        [        R                  5      5        g g )Nr   r   T)	connsLostrE   disconnectedr'   connectionLostr   r   CONNECTION_DONEr5   s    r   rC   StandardIO.checkConnLostY   sN    !>>Q!%D $DJJ%%gd.B.B&CD r   c                 :    U R                   R                  U5        g r;   )r2   writer<   s     r   rU   StandardIO.writeb   s    $r   c                 X    U R                   R                  SR                  U5      5        g )Nr   )r2   rU   join)r5   seqs     r   writeSequenceStandardIO.writeSequencee   s    #((3-(r   c                 z    SU l         U R                  R                  5         U R                  R                  5         g )NT)rE   r/   closer2   rR   s    r   rF   StandardIO.loseConnectionh   s*    !

r   c                     [        5       $ r;   r   rR   s    r   getPeerStandardIO.getPeerm       !!r   c                     [        5       $ r;   r`   rR   s    r   getHostStandardIO.getHostp   rc   r   c                 8    U R                   R                  X5      $ r;   )r2   registerProducer)r5   producer	streamings      r   rh   StandardIO.registerProduceru   s    {{++H@@r   c                 6    U R                   R                  5       $ r;   )r2   unregisterProducerrR   s    r   rm   StandardIO.unregisterProducerx   s    {{--//r   c                 8    U R                   R                  5         g r;   )r/   stopProducingrR   s    r   rp   StandardIO.stopProducing   s    

  "r   c                 8    U R                   R                  5         g r;   )r/   pauseProducingrR   s    r   rs   StandardIO.pauseProducing   s    

!!#r   c                 8    U R                   R                  5         g r;   )r/   resumeProducingrR   s    r   rv   StandardIO.resumeProducing   s    

""$r   )rO   rE   r'   r/   r2   r;   )r   r   r   r   rE   rO   r&   r-   r.   r1   rN   rC   rU   rZ   rF   ra   re   rh   rm   rp   rs   rv   r   r   r   r   r   r   "   s`    ML(:&"" IE )
""
A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>r}      s   
  	 &  /  " *x X	 	 	 ZM2e%++ e% 3e%r   