B
    fd	                 @   sT   d dl Z d dlZd dlmZ ddlmZmZ ddlmZ e	e
ZG dd dZdS )	    N)Optional   )TCPTCPAbridged   )
DataCenterc               @   sX   e Zd ZdZdeeeeedddZdd Zdd	 Z	e
d
ddZee
 dddZdS )
Connection   F)dc_id	test_modeipv6proxymediac             C   s8   || _ || _|| _|| _|| _t||||| _d | _d S )N)r
   r   r   r   r   r   addressprotocol)selfr
   r   r   r   r    r   B/tmp/pip-unpacked-wheel-rcokkf2l/pyrogram/connection/connection.py__init__    s    zConnection.__init__c                s   xt tjD ]}t| j| j| _y"td | j	| j
I d H  W nN tk
r } z0td| | j I d H  tdI d H  W d d }~X Y qX td| jrdnd| j| jrdnd| jrd	nd
 P qW td td S )NzConnecting...z+Unable to connect due to network issues: %sr   zConnected! %s DC%s%s - IPv%sZTestZ
Productionz (media) 64z"Connection failed! Trying again...)ranger   MAX_CONNECTION_ATTEMPTSr   r   r   r   loginfoconnectr   OSErrorwarningcloseasynciosleepr   r
   r   ConnectionError)r   ier   r   r   r   *   s"    
"
zConnection.connectc                s   | j  I d H  td d S )NZDisconnected)r   r   r   r   )r   r   r   r   r   @   s    zConnection.close)datac                s   | j |I d H  d S )N)r   send)r   r%   r   r   r   r&   D   s    zConnection.send)returnc                s   | j  I d H S )N)r   recv)r   r   r   r   r(   G   s    zConnection.recvN)F)__name__
__module____qualname__r   intbooldictr   r   r   bytesr&   r   r(   r   r   r   r   r      s   
r   )r    loggingtypingr   	transportr   r   Zsession.internalsr   	getLoggerr)   r   r   r   r   r   r   <module>   s   
