File: //lib/python3.7/asyncio/__pycache__/base_events.cpython-37.pyc
B
U��e� � @ s� d Z ddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZyddlZW n ek
r� dZY nX ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd lmZ dd
lmZ ddlmZ ddlmZ d
ZdZdZ e!e"e#fZ$e%e d�Z&dZ'dd� Z(dd� Z)dd� Z*dd� Z+dd� Z,e%e d��rpdd� Z-ndd� Z-G d d!� d!ej.�Z/G d"d#� d#ej0�Z1G d$d%� d%ej2�Z3dS )&a� Base implementation of event loop.
The event loop can be broken up into a multiplexer (the part
responsible for notifying us of I/O events) and the event loop proper,
which wraps a multiplexer with functionality for scheduling callbacks,
immediately or at a given time in the future.
Whenever a public API takes a callback, subsequent positional
arguments will be passed to the callback if/when it is called. This
avoids the proliferation of trivial lambdas implementing closures.
Keyword arguments for the callback are not supported; this is a
conscious design decision, leaving the door open for keyword arguments
to modify the meaning of the API call itself.
� N� )� constants)�
coroutines)�events)�futures)� protocols)�sslproto)�tasks)�
transports)�logger)�
BaseEventLoop�d g �?�AF_INET6i�Q c C s0 | j }tt|dd �tj�r$t|j�S t| �S d S )N�__self__)Z _callback�
isinstance�getattrr �Task�reprr �str)�handle�cb� r �)/usr/lib/python3.7/asyncio/base_events.py�_format_handleF s
r c C s( | t jkrdS | t jkrdS t| �S d S )Nz<pipe>z<stdout>)�
subprocess�PIPE�STDOUTr )�fdr r r �_format_pipeO s
r c C sL t td�std��n4y| �tjtjd� W n tk
rF td��Y nX d S )N�SO_REUSEPORTz)reuse_port not supported by socket moduler zTreuse_port not supported by socket module, SO_REUSEPORT defined but not implemented.)�hasattr�socket�
ValueError�
setsockopt�
SOL_SOCKETr �OSError)�sockr r r �_set_reuseportX s
r'