File: //usr/lib/python3/dist-packages/twisted/internet/test/__pycache__/test_fdset.cpython-38.pyc
U
��W[�4 � @ s� d Z eZddlZddlZddlZddlmZ ddlm Z ddl
mZ ddlm
Z
mZ ddlmZ ddlmZ dd lmZmZ d
d� ZG dd
� d
e�Zee�G dd� de��Ze� �e�� � dS )z0
Tests for implementations of L{IReactorFDSet}.
� N)�implementer)�platform)�SkipTest)�
IReactorFDSet�IReadDescriptor)�FileDescriptor)�ReactorBuilder)�EINPROGRESS�EWOULDBLOCKc
C s� t � � } | �d� | �d� z�t � � }zn|�d� z|�d| �� d f� W n8 t jk
r� } z|jd t t
fkrt� W 5 d }~X Y nX | �� \}}W n |�� � Y nX W 5 | �� X ||fS )N)� 127.0.0.1r � Fr r )�socketZbindZlisten�closeZsetblockingZconnectZgetsockname�error�argsr r
Zaccept)ZserverSocket�client�e�serverZaddr� r �B/usr/lib/python3/dist-packages/twisted/internet/test/test_fdset.py�
socketpair s$
r c @ s� e Zd ZdZegZdd� Zdd� Zdd� Zdd � Z d
d� Z
dd
� Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Ze�� r�de_dd� ZdS ) �ReactorFDSetTestsBuilderz>
Builder defining tests relating to L{IReactorFDSet}.
c C s* t � \}}| �|j� | �|j� ||fS )zL
Return the two sockets which make up a new TCP connection.
)r Z
addCleanupr )�selfr r r r r �_connectedPair6 s
z'ReactorFDSetTestsBuilder._connectedPairc C s. | � � }| �� \}}t|�}|j|_|||fS �N)�buildReactorr r �fileno)r �reactorr r �fdr r r �_simpleSetup@ s
z%ReactorFDSetTestsBuilder._simpleSetupc sD | � � \�� }� �fdd�}|� _��� � |�d� | ��� dS )z�
C{reactor.addReader()} accepts an L{IReadDescriptor} provider and calls
its C{doRead} method when there may be data available on its C{fileno}.
c s �� � � ��� d S r )�removeReader�stopr �r r r r �
removeAndStopR s
z>ReactorFDSetTestsBuilder.test_addReader.<locals>.removeAndStop� xN)r �doRead� addReader�sendall�
runReactor�r r r# r r"