File: //usr/lib/python3/dist-packages/twisted/pair/test/__pycache__/test_tuntap.cpython-38.pyc
U
W[Ϲ � @ s d Z ddlmZmZ ddlZddlZddlZddlmZm Z m
Z
mZmZm
Z
mZ ddlmZ ddlmZ ddlmZ ddlmZ dd lmZmZ dd
lmZmZ zed� W n eefk
r� dZY nX dZdd
lm Z m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z- ddlm.Z. ddlm/Z/ ddl0m1Z1m2Z2m3Z3 ddl$m4Z4m5Z5 ddl&m6Z6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z< ddl=m>Z> ddl?m@Z@ eAZBe ZCedk�rddlDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL ddlMmNZNmOZOmBZBmCZCmPZPmQZQmRZR neZSe!e5�G dd � d eA��ZTe#e5eT� � G d!d"� d"e9eT�ZUG d#d$� d$eA�ZVG d%d&� d&eA�ZWG d'd(� d(e<�ZXG d)d*� d*eA�ZYG d+d,� d,eA�ZZG d-d.� d.eZeYe<�Z[eWe[j\e[j]d/d0�e[_^G d1d2� d2eZeYe<�Z_eWe[j\e[j]d3d0�e__^G d4d5� d5eZeYe<�Z`eVe`j\e`j]�e`_^e!eC�G d6d7� d7eB��ZaG d8d9� d9eA�ZbG d:d;� d;ebeYe<�ZcG d<d=� d=ebeYe<�ZdG d>d?� d?e<�ZeG d@dA� dAeA�ZfG dBdC� dCe<�ZgG dDdE� dEe<�Zhe!e@�G dFdG� dGe6��ZiG dHdI� dIefe<�ZjG dJdK� dKe-�ZkG dLdM� dMefe<�ZlG dNdO� dOeA�ZmG dPdQ� dQeme<eZ�ZnG dRdS� dSeme<eb�ZodS )Tz#
Tests for L{twisted.pair.tuntap}.
� )�division�absolute_importN)�EPERM�EBADF�EINVAL�EAGAIN�EWOULDBLOCK�ENOENT�ENODEV)� randrange)�deque)�cycle)�SIGINT)�
intToBytes�_PY3)�ObjectNotFound�namedAnyzfcntl.ioctlz'Platform is missing fcntl/ioctl support)� Interface�implementer)�verifyObject)�IListeningPort)�DatagramProtocol)�RawUDPProtocol)�
IPProtocol)�EthernetProtocol)�fullyQualifiedName)� iterbytes)�addObserver�removeObserver�textFromEventDict)�IAddress�
IReactorFDSet)�AbstractDatagramProtocol�Factory)�Clock)�SkipTest�SynchronousTestCase)�CannotListenError)�IRawPacketProtocol)�_PI_SIZE�Tunnel�MemoryIOSystem�_IPv4�_H� _ethernet�_ip�_udp)�
_TUNSETIFF� _IFNAMSIZ�_RealSystem�_IInputOutputSystem�TunnelFlags�
TunnelAddress�
TuntapPortc @ s@ e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
d� Zdd
� Z dS )�ReactorFDSeta6
An implementation of L{IReactorFDSet} which only keeps track of which
descriptors have been registered for reading and writing.
This implementation isn't actually capable of determining readability or
writeability and generates no events for the descriptors registered with
it.
@ivar _readers: A L{set} of L{IReadDescriptor} providers which the reactor
is supposedly monitoring for read events.
@ivar _writers: A L{set} of L{IWriteDescriptor} providers which the reactor
is supposedly monitoring for write events.
c C s( t � | _t � | _| jj| _| jj| _d S �N)�set�_readers�_writers�addZ addReaderZ addWriter��self� r@ �?/usr/lib/python3/dist-packages/twisted/pair/test/test_tuntap.py�__init__U s
zReactorFDSet.__init__c C s | j �|� d S r9 )r; �discard)r? �readerr@ r@ rA �removeReader\ s zReactorFDSet.removeReaderc C s | j �|� d S r9 )r<