File: //lib64/python3.9/asyncio/__pycache__/selector_events.cpython-39.pyc
a
    �DOgL�  �                   @   s$  d Z dZddlZddlZddlZddlZddlZddlZddlZzddl	Z	W n e
yb   dZ	Y n0 ddlmZ ddlm
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ dd
lmZ dd� ZG dd� dej�ZG dd� dejej�ZG dd� de�ZG dd� de�ZdS )z�Event loop using a selector and related classes.
A selector is a "notify-when-ready" multiplexer.  For a subclass which
also includes support for signal handling, see the unix_events sub-module.
)�BaseSelectorEventLoop�    N�   )�base_events)�	constants)�events)�futures)�	protocols)�sslproto)�
transports)�trsock)�loggerc                 C   s6   z| � |�}W n ty"   Y dS 0 t|j|@ �S d S �NF)�get_key�KeyError�boolr   )�selector�fd�event�key� r   �//usr/lib64/python3.9/asyncio/selector_events.py�_test_selector_event    s
    r   c                       s�  e Zd ZdZdS� fdd�	ZdTddd�dd�ZdUddddejd	�d
d�ZdVdd
�Z	� fdd�Z
dd� Zdd� Zdd� Z
dd� Zdd� Zdddejfdd�Zdddejfdd�Zddejfdd �Zd!d"� Zd#d$� Zd%d&� Zd'd(� Zd)d*� Zd+d,� Zd-d.� Zd/d0� Zd1d2� Zd3d4� ZdWd5d6�Zd7d8� Zd9d:� Zd;d<� Z d=d>� Z!d?d@� Z"dAdB� Z#dCdD� Z$dXdEdF�Z%dGdH� Z&dIdJ� Z'dKdL� Z(dMdN� Z)dOdP� Z*dQdR� Z+�  Z,S )Yr   zJSelector event loop.
    See events.EventLoop for API specification.
    Nc                    sF   t � ��  |d u rt�� }t�d|jj� || _| �	�  t
�� | _d S )NzUsing selector: %s)
�super�__init__�	selectors�DefaultSelectorr   �debug�	__class__�__name__�	_selector�_make_self_pipe�weakref�WeakValueDictionary�_transports)�selfr   �r   r   r   r   1   s    
zBaseSelectorEventLoop.__init__��extra�serverc                C   s   t | |||||�S �N)�_SelectorSocketTransport)r$   �sock�protocol�waiterr'