
    T>qjv                     R    d Z ddlZddlmZ ddlmZ  G d dej                        Zy)zEvent-driven socket connection.    N)Event)getLoopc                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)
Connectiona<  
    Event-driven socket connection.

    Events:
        * ``hasData`` (data: bytes):
          Emits the received socket data.
        * ``disconnected`` (msg: str):
          Is emitted on socket disconnect, with an error message in case
          of error, or an empty string in case of a normal disconnect.
    c                 d    t        d      | _        t        d      | _        | j                          y )NhasDatadisconnected)r   r   r	   resetselfs    S/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/ib_insync/connection.py__init__zConnection.__init__   s$    Y'!.1

    c                 .    d | _         d| _        d| _        y )Nr   )	transportnumBytesSent
numMsgSentr   s    r   r
   zConnection.reset   s    r   c                     K    j                   r$ j                           j                   d {     j                          t	               }|j                   fd||       d {   \   _         }y 7 E7 w)Nc                       S N r   s   r   <lambda>z)Connection.connectAsync.<locals>.<lambda>(   s    D r   )r   
disconnectr	   r
   r   create_connection)r   hostportloop_s   `    r   connectAsynczConnection.connectAsync    se     >>OO####

y"&"8"8$#& & $&s!   ,A9A57A9'A7(A97A9c                     | j                   r5| j                   j                          | j                   j                          y y r   )r   	write_eofcloser   s    r   r   zConnection.disconnect*   s.    >>NN$$&NN  " r   c                     | j                   d uS r   )r   r   s    r   isConnectedzConnection.isConnected/   s    ~~T))r   c                     | j                   rO| j                   j                  |       | xj                  t        |      z  c_        | xj                  dz  c_        y y )N   )r   writer   lenr   )r   msgs     r   sendMsgzConnection.sendMsg2   sC    >>NN  %S)OOq O r   c                 f    d | _         |rt        |      nd}| j                  j                  |       y )N )r   strr	   emit)r   excr)   s      r   connection_lostzConnection.connection_lost8   s*    c#h2s#r   c                 :    | j                   j                  |       y r   )r   r.   )r   datas     r   data_receivedzConnection.data_received=   s    $r   N)__name__
__module____qualname____doc__r   r
   r   r   r$   r*   r0   r3   r   r   r   r   r   
   s/    	

&#
*!$
 r   r   )r7   asyncioeventkitr   ib_insync.utilr   Protocolr   r   r   r   <module>r<      s#    %   "4 !! 4 r   