File: //usr/lib/python3/dist-packages/twisted/internet/iocpreactor/__pycache__/tcp.cpython-38.pyc
U
��W[�N � @ s� d Z ddlZddlZddlZddlZddlmZmZ ddlm Z m
Z
mZmZm
Z
ddlmZ ddlmZmZ ddlmZmZmZmZmZmZmZ ddlmZmZmZ dd l m!Z!m"Z" dd
l#m$Z%m&Z& ddl'm(Z( ddl)m*Z* dd
l)m+Z+ ddl)m,Z, ddl)m-Z- ddl)m.Z. zddl/m0Z1 W n e2k
�r6 dZ1Y nX e-ej3e.ej4iZ5ee(e j6e j7�G dd� de&j8ee��Z9e1dk �r�ee9e j:� G dd� deee9�Z;G dd� de9�Z<G dd� de�Zee j=�G dd� dee��Z>dS )z
TCP support for IOCP reactor
� N)�implementer�classImplements)�
interfaces�error�address�main�defer)�Protocol)� _LogOwner�
isIPv6Address)�
_SocketCloser� Connector�_AbortingMixin�_BaseBaseClient�_BaseTCPClient�_resolveIPv6�_getsockname)�log�failure�reflect)�_PY3�nativeString)�iocpsupport�abstract)�IReadWriteHandle)�ERROR_IO_PENDING)�SO_UPDATE_CONNECT_CONTEXT)�SO_UPDATE_ACCEPT_CONTEXT)�ERROR_CONNECTION_REFUSED)�ERROR_NETWORK_UNREACHABLE)�startTLSc @ s� e Zd ZdZdZd+dd�Zdd� Zdd � Zd
d� Zdd
� Z dd� Z
dd� Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� Zedk r�d,dd �Zd!d"� Zd#d$� Zd-d%d&�Zd'd(� Zd)d*� ZdS ).�
Connectionz�
@ivar TLS: C{False} to indicate the connection is in normal TCP mode,
C{True} to indicate that TLS has been started and that operations must
be routed through the L{TLSMemoryBIOProtocol} instance.
FNc C s&