
    Vh)                        U d Z ddlZddlmZ ddlmZmZ ddlmZm	Z	m
Z
 ddlmZmZ  ee       G d dej                               Zed	k(  r ej"                  ej$                  d
         j'                           ej(                   eej$                  d   d             e	ed<   ddlmZ  e       Z ej2                  e        ej4                           ej6                  ej8                         yy)z
Main program for the child process run by
L{twisted.test.test_stdio.StandardInputOutputTests.test_readConnectionLost} to
test that IHalfCloseableProtocol.readConnectionLost works for stdio transports.
    N)implementer)protocolstdio)IHalfCloseableProtocolIReactorCore
ITransport)logreflectc                   J    e Zd ZU dZdZeed<   d
dZd
dZdde	ddfdZ
d
d	Zy)HalfCloseProtocolz
    A protocol to hook up to stdio and observe its transport being
    half-closed.  If all goes as expected, C{exitCode} will be set to C{0};
    otherwise it will be set to C{1} to indicate failure.
    N	transportreturnc                 :    | j                   j                  d       y)z=
        Signal the parent process that we're ready.
           xN)r   writeselfs    W/home/dcms/DCMS/lib/python3.12/site-packages/twisted/test/stdio_test_halfclose_buggy.pyconnectionMadez HalfCloseProtocol.connectionMade    s     	T"    c                     t        d      )zv
        This is the desired event.  Once it has happened, stop the reactor so
        the process will exit.
        zsomething went wrong)
ValueErrorr   s    r   readConnectionLostz$HalfCloseProtocol.readConnectionLost&   s    
 /00r   reasonc                 :    d| _         t        j                          y)z
        This may only be invoked after C{readConnectionLost}.  If it happens
        otherwise, mark it as an error and shut down.
        r   N)exitCodereactorstop)r   r   s     r   connectionLostz HalfCloseProtocol.connectionLost-   s    
 r   c                      y N r   s    r   writeConnectionLostz%HalfCloseProtocol.writeConnectionLost5   s    r   )r   Nr!   )__name__
__module____qualname____doc__r   r   __annotations__r   r   objectr   r#   r"   r   r   r   r      s6     H#1V t r   r   __main__      wr   )r   )r'   syszope.interfacer   twisted.internetr   r   twisted.internet.interfacesr   r   r   twisted.pythonr	   r
   Protocolr   r$   namedAnyargvinstallstartLoggingopenr(   r   halfCloseProtocol
StandardIOrunexitr   r"   r   r   <module>r=      s   
  & , X X ' #$!)) ! %!H zGSXXa[!))+CT#((1+s+,()+E&'GKKMCHH''( r   