o
    >h{                     @   s   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 dejZed	krkeejd
   eeejd d e	ed< ddlmZ e Zee e  eej dS dS )z
Main program for the child process run by
L{twisted.test.test_stdio.StandardInputOutputTests.test_buggyWriteConnectionLost}
to test that IHalfCloseableProtocol.writeConnectionLost works for stdio
transports.
    N)implementer)protocolstdio)IHalfCloseableProtocolIReactorCore
ITransport)logreflectc                   @   sT   e Zd ZU dZdZdZeed< dddZdd	d
Z	dde
ddfddZdddZdS )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.
    	   F	transportreturnNc                 C   s   | j d dS )z=
        Signal the parent process that we're ready.
           xN)r   writeself r   /var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/twisted/test/stdio_test_halfclose_buggy_write.pyconnectionMade"   s   z HalfCloseProtocol.connectionMadec                 C   s   dS )zv
        This is the desired event.  Once it has happened, stop the reactor so
        the process will exit.
        Nr   r   r   r   r   readConnectionLost(   s    z$HalfCloseProtocol.readConnectionLostreasonc                 C   s   | j rd| _t  dS )z
        This may only be invoked after C{readConnectionLost}.  If it happens
        otherwise, mark it as an error and shut down.
        r   N)wasWriteConnectionLostexitCodereactorstop)r   r   r   r   r   connectionLost.   s   z HalfCloseProtocol.connectionLostc                 C   s   d| _ td)NTzsomething went wrong)r   
ValueErrorr   r   r   r   writeConnectionLost7   s   z%HalfCloseProtocol.writeConnectionLost)r   N)N)__name__
__module____qualname____doc__r   r   r   __annotations__r   r   objectr   r   r   r   r   r   r
      s   
 

	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   r   <module>   s$   %
