File: //lib64/python3.6/site-packages/tornado/__pycache__/curl_httpclient.cpython-36.opt-1.pyc
3
��f9^ � @ s d Z ddlZddlZddlZddlZddlZddlZddlmZ ddl m
Z
ddl mZ ddlm
Z
mZ ddlmZmZmZmZmZ ddlmZ dd lmZmZmZmZ ddlZejr�dd
lmZmZmZ ej d�Z!G dd
� d
e�Z"G dd� de�Z#e$dk�rej%e"� e� dS )z5Non-blocking HTTP client implementation using pycurl.� N)�BytesIO)�httputil)�ioloop)�utf8�
native_str)�HTTPRequest�HTTPResponse� HTTPError�AsyncHTTPClient�main)�app_log)�Dict�Any�Callable�Union)�Deque�Tuple�Optionalztornado.curl_httpclientc sR e Zd Zd.eeeef dd�� fdd�
Zdd�� fdd�Ze e
egdf dd �d
d�Zeeee
dd�d
d�Zedd�dd�Zeedd�dd�Zdd�dd�Zdd�dd�Zdd�dd�Zdd�dd�Zd/ejeedd�dd�Zedd �d!d"�Zejd�d#d$�Zeje eejdd%�d&d'�Zeje
egdf e
dd(�d)d*�Zeedd+�d,d-�Z� Z S )0�CurlAsyncHTTPClient�
N)�max_clients�defaults�returnc s� t t� �j|d� tj� � _� jjtj� j� � jjtj � j
� � fdd�t|�D �� _� jd d � � _
tj� � _i � _d � _tj� jd�� _� jj� tj� }� jj|� � jj|� d S )N)r c s g | ]}� j � �qS � )�_curl_create)�.0�i)�selfr �'/usr/lib64/python3.6/curl_httpclient.py�
<listcomp>8 s z2CurlAsyncHTTPClient.initialize.<locals>.<listcomp>i� )�superr �
initialize�pycurlZ CurlMulti�_multi�setoptZM_TIMERFUNCTION�_set_timeoutZM_SOCKETFUNCTION�_handle_socket�range�_curls�
_free_list�collections�deque� _requests�_fds�_timeoutr ZPeriodicCallback�_handle_force_timeout�_force_timeout_callback�start�Curl�
add_handle�
remove_handle)r r r Zdummy_curl_handle)� __class__)r r r! 1 s
zCurlAsyncHTTPClient.initialize)r c sb | j j� | jd k r"| jj| j� x| jD ]}|j� q*W | jj� tt | �j� d | _ d | _d S )N)
r0 �stopr. �io_loop�remove_timeoutr( �closer# r r )r �curl)r5 r r r9 R s
zCurlAsyncHTTPClient.close)�request�callbackr c C s. | j j||| jj� f� | j� | jd� d S )Nr )r, �appendr7 �time�_process_queuer% )r r; r<