o
    >h                     @   s   d Z ddlZddlmZ ddlmZmZ ddlmZ ddl	m
Z
mZ eeG dd dejZed	krbeejd
   e
eejd 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_readConnectionLost} to
test that IHalfCloseableProtocol.readConnectionLost works for stdio transports.
    N)implementer)protocolstdio)IHalfCloseableProtocol)logreflectc                   @   s4   e Zd ZdZdZdd Zdd Zdd Z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.
    Nc                 C   s   | j d dS )z=
        Signal the parent process that we're ready.
           xN)	transportwriteself r   /var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/twisted/test/stdio_test_halfclose.pyconnectionMade   s   z HalfCloseProtocol.connectionMadec                 C   s   d| _ t  dS )zv
        This is the desired event.  Once it has happened, stop the reactor so
        the process will exit.
        r   N)exitCodereactorstopr   r   r   r   readConnectionLost%   s   z$HalfCloseProtocol.readConnectionLostc                 C   s(   | j du rd| _ t|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.
        N   z!Unexpected call to connectionLost)r   r   errr   r   )r   reasonr   r   r   connectionLost-   s   
z HalfCloseProtocol.connectionLostc                 C   s   d S )Nr   r   r   r   r   writeConnectionLost7   s   z%HalfCloseProtocol.writeConnectionLost)	__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r   r      s    
r   __main__r      wb)r   )r   syszope.interfacer   twisted.internetr   r   twisted.internet.interfacesr   twisted.pythonr   r   Protocolr   r   namedAnyargvinstallstartLoggingopenr   halfCloseProtocol
StandardIOrunexitr   r   r   r   r   <module>   s"   &
