File: //lib64/python3.6/asyncio/__pycache__/base_events.cpython-36.pyc
3
  \�  �               @   s�  d Z ddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ dgZdZd
ZeeefZ e!e	d�Z"d)Z#dd� Z$dd� Z%dd� Z&dd� Z'dd� Z(dd� Z)de	j*ddd�dd�Z+e!e	d ��rRd!d"� Z,nd#d"� Z,d$d%� Z-G d&d'� d'ej.�Z/G d(d� dej0�Z1dS )*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�   )�compat)�
coroutines)�events)�futures)�tasks)�	coroutine)�logger�
BaseEventLoop�d   g      �?�AF_INET6�   i  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/lib64/python3.6/asyncio/base_events.py�_format_handle?   s    
r   c             C   s(   | t jkrdS | t jkrdS t| �S d S )Nz<pipe>z<stdout>)�
subprocess�PIPE�STDOUTr   )�fdr   r   r   �_format_pipeH   s
    
r   c             C   sL   t td�std��n4y| jtjtjd� 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_reuseportQ   s    
r&