관리-도구
편집 파일: base_events.cpython-38.opt-1.pyc
U e5d� � @ s� d Z ddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddlZddlZddl Z ddlZddlZddlZddlZzddlZW n ek r� dZY nX ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd lmZ dd lmZ ddlmZ ddlmZ dd lmZ ddlmZ ddl m!Z! dZ"dZ#dZ$e%e d�Z&dZ'e(� Z)dd� Z*dd� Z+dd� Z,d+dd�Z-d,dd�Z.dd � Z/e%e d!��r�d"d#� Z0nd$d#� Z0G d%d&� d&ej1�Z2G d'd(� d(ej3�Z4G d)d*� d*ej5�Z6dS )-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)� exceptions)�futures)� protocols)�sslproto)� staggered)�tasks)� transports)�trsock)�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/lib64/python3.8/asyncio/base_events.py�_format_handleJ s r c C s( | t jkrdS | t jkrdS t| �S d S )Nz<pipe>z<stdout>)� subprocess�PIPE�STDOUTr )�fdr r r �_format_pipeS s r! c C sL t td�std��n4z| �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"