File: //lib/python3/dist-packages/twisted/test/__pycache__/test_tcp.cpython-38.pyc
U
s�@g � @ s� d Z ddlmZmZ ddlZddlZddlZddlmZ ddl m
Z
ddlmZ ddl
mZmZ ddlmZmZmZmZ dd lmZ dd
lmZ ddlmZmZ ddlmZ dd
lmZ ddlm Z ddl!m"Z" dcdd�Z#G dd� dej$�Z%G dd� dej&�Z'G dd� de(�Z)G dd� de)ej&�Z*G dd� de)ej+�Z,G dd� dej-�Z.G dd� dej-�Z/G d d!� d!ej0�Z1G d"d#� d#e,�Z2G d$d%� d%ej-�Z3G d&d'� d'ej-�Z4G d(d)� d)ej+�Z5G d*d+� d+ej-�Z6G d,d-� d-ej$�Z7G d.d/� d/ej$�Z8G d0d1� d1ej+�Z9G d2d3� d3ej-�Z:G d4d5� d5ej$�Z;G d6d7� d7ej$�Z<G d8d9� d9ej$�Z=G d:d;� d;e=�Z>G d<d=� d=�Z?G d>d?� d?ej-e?�Z@G d@dA� dAejA�ZBG dBdC� dCejC�ZDG dDdE� dEej-�ZEG dFdG� dGej$�ZFG dHdI� dIej$�ZGG dJdK� dKej+�ZHG dLdM� dMejA�ZIG dNdO� dOejC�ZJG dPdQ� dQej-�ZKe
e�G dRdS� dSe"��ZLG dTdU� dUej&�ZMG dVdW� dWej-�ZNG dXdY� dYej-�ZOG dZd[� d[ej-�ZPG d\d]� d]ej-�ZQG d^d_� d_ej-�ZRG d`da� daej-�ZSzddlTZTW n eUk
�r� Y nX eT�VeTjW�d db ZXeXe@_YdS )dz.
Tests for implementations of L{IReactorTCP}.
� )�division�absolute_importN��wraps)�implementer)�unittest)�msg�err)�protocol�reactor�defer�
interfaces)�error)�IPv4Address)�IHalfCloseableProtocol�
IPullProducer)�policies)�_PY3)�platform)�AccumulatingProtocolc s\ ddl m} t�� ���fdd�}|�|�� � fdd�}��|� � �|�}|��j� �S )z�
Poor excuse for an event notification helper. This polls a condition and
calls back a Deferred when it is seen to be true.
Do not use this function.
r )�taskc s �� } | r� � | � d S �N��callback��res)�d� predicate� �7/usr/lib/python3/dist-packages/twisted/test/test_tcp.py�check% s zloopUntil.<locals>.checkc s � � � | S r )�stop)�result)�callr r r! * s zloopUntil.<locals>.stop) �twisted.internetr r �DeferredZLoopingCall�addCallback�startZ
addErrbackZerrback)r Zintervalr r r! �d2r )r# r r r � loopUntil s
r) c @ s e Zd Zdd� Zdd� ZdS )�ClosingProtocolc C s t d� | j�� d S )N�ClosingProtocol.connectionMade�r � transport�loseConnection��selfr r r �connectionMade6 s r+ c C s t d� |�tj� d S )N�ClosingProtocol.connectionLost)r �trapr �ConnectionDone�r0 �reasonr r r �connectionLost: s r2 N��__name__�
__module__�__qualname__r1 r7 r r r r r* 4 s r* c @ s$ e Zd ZdZdZdd� Zdd� ZdS )�ClosingFactoryz/
Factory that closes port immediately.
Nc C s | j �� | _t� S r )�port�
stopListening�
_cleanerUpperr* )r0 Zconnr r r �
buildProtocolG s zClosingFactory.buildProtocolc C s | j dkr| j�� S | j S )zL
Clean-up for tests to wait for the port to stop listening.
N)r? r= r>