
    6i                     r    d dl Z d dlZd dlZd dlmZmZmZ d dlmZ d dl	m
Z
  G d dej                        Zy)    N)OptionalDictAny)AsyncClient)get_loopc                        e Zd Z	 	 	 	 	 	 	 	 	 ddee   dee   deeeef      dededeeeef      dee   deej                     d	ef fd
Z
d Zd ZdefdZd Zd Zd Zd Z xZS )ThreadedApiManagerapi_key
api_secretrequests_paramstldtestnetsession_paramshttps_proxy_loopverbosec
           	      F   t         
|           |
t               n|| _        d| _        d| _        i | _        t        j                  t              | _
        |	| _        ||||||||	d| _        |	r3t        j                  d      j                  t        j                         yy)aK  Initialise the ThreadedApiManager

        :param api_key: Binance API key
        :param api_secret: Binance API secret
        :param requests_params: optional - Dictionary of requests params
        :param tld: optional - Top level domain, default is 'com'
        :param testnet: optional - Use testnet endpoint
        :param session_params: optional - Session params for aiohttp
        :param https_proxy: optional - Proxy URL
        :param _loop: optional - Event loop
        :param verbose: Enable verbose logging for WebSocket connections
        :type verbose: bool
        NT)r
   r   r   r   r   r   r   r   z
binance.ws)super__init__r   r   _client_running_socket_runninglogging	getLogger__name___logr   _client_paramssetLevelDEBUG)selfr
   r   r   r   r   r   r   r   r   	__class__s             X/var/www/app/trading-bot/venv/lib/python3.12/site-packages/binance/ws/threaded_stream.pyr   zThreadedApiManager.__init__   s    2 	>Cm
QV
.2"02%%h/	$.,&	
 l+44W]]C     c                    K   y wN r    s    r"   _before_socket_listener_startz0ThreadedApiManager._before_socket_listener_start9   s     s   c                 T  K   	 t        j                  dd| j                  i| j                   d {   | _        | j                          d {    | j                  r*t        j                  d       d {    | j                  r*| j                  r*t        j                  d       d {    | j                  r*| j                  j                  d       y 7 7 # t        $ r8}| j                  j                  d|        | j                          Y d }~d }~ww xY w7 7 ww)NloopzFailed to create client: g?zSocket listener stoppedr&   )r   creater   r   r   r(   	Exceptionr   errorstopr   asynciosleepr   info)r    es     r"   socket_listenerz"ThreadedApiManager.socket_listener;   s     	!,!3!3![![tGZGZ![[DL44666 mm--$$$ mm""--$$$ ""		01 \6 	IIOO7s;<IIKK	 %$sz   D(.C  CC  CC  $D(8D$9D(
$D(.D&/D( D(C  C   	D!).DD(D!!D(&D(pathc                 j  K   |4 d {   }| j                   |   ry	 t        j                  |j                         d       d {   }|s?t        j                  |      rt        j                   ||             n ||       | j                   |   ryd d d       d {    | j                   |= y 7 7 p# t        j                  $ r 	 Y t
        $ rC}| j                  j                  d|        d|j                  j                  | d}Y d }~d }~ww xY w7 z# 1 d {  7  sw Y   xY ww)N   zError receiving message: r-   )r2   typem)r   r/   wait_forrecvTimeoutErrorr,   r   r-   r!   r   iscoroutinefunctioncreate_task)r    socketr4   callbacksmsgr2   s          r"   start_listenerz!ThreadedApiManager.start_listenerH   s     	" 	"Q&&t, ' 0 01 ==C ..x8''6SM% &&t,	" 	"(   &)	" >++   IIOO&?s$CD$ ! 4 4 !sC	" 	" 	" 	"s   D3B4D3D'B8B6B8
ADD3!D"D36B88DDD9DDDDD3D0$D'%D0,D3c                 V    | j                   j                  | j                                y r%   )r   run_until_completer3   r'   s    r"   runzThreadedApiManager.run_   s    

%%d&:&:&<=r#   c                 @    || j                   v rd| j                   |<   y y )NF)r   )r    socket_names     r"   stop_socketzThreadedApiManager.stop_socketb   s%    $...05D  - /r#   c                 n   K   | j                   sy | j                   j                          d {    y 7 wr%   )r   close_connectionr'   s    r"   stop_clientzThreadedApiManager.stop_clientf   s&     ||ll++---s   +535c                    | j                   j                  d       | j                  sy d| _        | j                  rg| j                  r[| j                  j                         sA	 t        j                  | j                         | j                        }|j                  d       | j                  j                         D ]  }d| j                  |<    y # t        $ r(}| j                   j                  d|        Y d }~[d }~ww xY w)NzStopping ThreadedApiManagerF   )timeoutzError stopping client: )r   debugr   r   r   	is_closedr/   run_coroutine_threadsaferK   resultr,   r-   r   keys)r    futurer2   rG   s       r"   r.   zThreadedApiManager.stopk   s    		56}}<<DJJtzz/C/C/E? 99$$&

 a(  //446 	6K05D  -	6  ?		"9! =>>?s   #A C 	DC>>D)	NNNcomFNNNF)r   
__module____qualname__r   strr   r   boolr/   AbstractEventLoopr   r(   r3   rB   rE   rH   rK   r.   __classcell__)r!   s   @r"   r	   r	   
   s     "&$(4837%)59,D#,D SM,D "$sCx.1	,D
 ,D ,D !c3h0,D c],D 112,D ,D\ 72' '.>6.
6r#   r	   )r/   r   	threadingtypingr   r   r   binance.async_clientr   binance.helpersr   Threadr	   r&   r#   r"   <module>ra      s.       & & , $p6)) p6r#   