File: //lib/python3/dist-packages/twisted/internet/iocpreactor/__pycache__/udp.cpython-38.pyc
U
��W[�6 � @ s d Z ddlZddlZddlZddlZddlZddlmZ ddlm Z m
Z
mZmZ ddl
mZmZ ddlmZmZ ddlmZ ddlmZ dd lmZ dd
lmZ ddlmZmZ eeejejej�G dd
� d
ej ��Z!G dd� d�Z"eej#�G dd� de"e!��Z$dS )z
UDP support for IOCP reactor
� N)�implementer)�defer�address�error�
interfaces)�isIPAddress�
isIPv6Address)�log�failure)�ERROR_IO_PENDING)�ERROR_CONNECTION_REFUSED)�ERROR_PORT_UNREACHABLE)�IReadWriteHandle)�iocpsupport�abstractc @ s� e Zd ZdZejZejZdZ dZ
d4dd�Zdd � Zd
d� Z
dd
� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zd5dd�Zdd� Zd d!� Zd"d#� Zd$d%� Zd&d'� Zd6d(d)�Zd*d+� Zd,d-� Zd.d/� Zd0d1� Z d2d3� Z!dS )7�Portz�
UDP port, listening for packets.
@ivar addressFamily: L{socket.AF_INET} or L{socket.AF_INET6}, depending on
whether this port is listening on an IPv4 address or an IPv6 address.
FN� � c C sx || _ || _|| _|| _| �� d| _| �� tj� | |� t
�
| j| j�}t
�|�� �}t|�| _tt�d��| _dS )z>
Initialize with a numeric port to listen on.
N�i)�port�protocolZreadBufferSize� interface� setLogStr�_connectedAddr�_setAddressFamilyr �
FileHandle�__init__�socket�
addressFamily�
socketType�_iocpZ
maxAddrLen�fileno� bytearray�
addressBuffer�structZcalcsize�addressLengthBuffer)�selfr �protor �
maxPacketSize�reactor�sktZaddrLen� r+ �B/usr/lib/python3/dist-packages/twisted/internet/iocpreactor/udp.pyr * s
z
Port.__init__c C s@ t | j�rtj| _n(t| j�r(tj| _n| jr<t�| jd��dS )z8
Resolve address family for the socket.
znot an IPv4 or IPv6 addressN) r r r �AF_INET6r r �AF_INETr �InvalidAddressError�r&