Format: application/x-python-code
1 o
2
3 7'h) � @ s� d dl mZ d dlZd dlZd dlZd dlZd dlZddlmZm Z m
4 Z
5 mZmZm
6 Z
7 mZmZ ddlmZ ddlmZmZmZ G dd � d e�ZG d
8 d� de�ZG dd
9 � d
10 e�ZdS )� )�annotationsN� )�ConnectError�ConnectTimeout�ExceptionMapping� ReadError�ReadTimeout�
11 WriteError�WriteTimeout�map_exceptions)�is_socket_readable� )�
12 SOCKET_OPTION�NetworkBackend�
13 NetworkStreamc @ sj e Zd ZdZdZ d&d'dd
14 �Zd(dd�Zd)d*dd�Zd)d+dd�Zd,dd�Z d&d-d d!�Z
15 d.d$d%�ZdS )/�TLSinTLSStreamz�
16 Because the standard `SSLContext.wrap_socket` method does
17 not work for `SSLSocket` objects, we need this class
18 to implement TLS stream using an underlying `SSLObject`
19 instance in order to support TLS on top of TLS.
20 i @ N�sock�
21 socket.socket�ssl_context�ssl.SSLContext�server_hostname�
22 str | None�timeout�float | Nonec C sN || _ t�� | _t�� | _|j| j| j|d�| _| j �|� | �| jj � d S )N)�incoming�outgoingr )
23 �_sock�ssl� MemoryBIO� _incoming� _outgoing�wrap_bio�ssl_obj�
24 settimeout�_perform_io�do_handshake)�selfr r r r � r'