File: //lib64/python3.6/asyncio/__pycache__/selector_events.cpython-36.opt-1.pyc
3
  \��  �            
   @   s<  d Z dgZddlZddlZddlZddlZddlZddlZyddlZW n e	k
r^   dZY nX ddl
mZ ddl
mZ ddl
m
Z
 ddl
mZ dd	l
mZ dd
l
mZ ddl
mZ ddl
mZ dd
lmZ ddlmZ dd� ZG dd� dej�ZG dd� dejej�ZG dd� de�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)�compat)�	constants)�events)�futures)�	selectors)�
transports)�sslproto)�	coroutine)�loggerc             C   s6   y| j |�}W n tk
r"   dS X t|j|@ �S d S )NF)�get_key�KeyError�boolr   )�selector�fdZevent�key� r   �//usr/lib64/python3.6/asyncio/selector_events.py�_test_selector_event    s
    r   c                   sr  e Zd ZdZdO� fdd�	ZdPddd�dd�ZdQddddd	�d
d�Zddddd	�dd
�ZdRdd�Z� fdd�Z	dd� Z
dd� Zdd� Zdd� Z
dd� Zdd� ZdSdd �ZdTd!d"�ZedUd#d$��Zd%d&� Zd'd(� Zd)d*� Zd+d,� Zd-d.� Zd/d0� Zd1d2� Zd3d4� Zd5d6� Zd7d8� Zd9d:� Zd;d<� Zd=d>� Z ed?d@� �Z!dAdB� Z"dCdD� Z#dEdF� Z$dGdH� Z%dIdJ� Z&dKdL� Z'dMdN� Z(�  Z)S )Vr   zJSelector event loop.
    See events.EventLoop for API specification.
    Nc                sF   t � j�  |d krtj� }tjd|jj� || _| j	�  t
j� | _d S )NzUsing selector: %s)
�super�__init__r	   ZDefaultSelectorr
   �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"