a
    /e                     @   s@   d dl Z d dlZd dlZd dlZeeZG dd dejZdS )    Nc                       sT   e Zd Zdd fddZedddZedd	 Zd
d Zdd Z	dd Z
  ZS )ReactorChrome)driverc                    s>   t    || _t | _t | _t	 | _
d| _i | _d S )NT)super__init__r   asyncionew_event_looploop	threadingLocklockEventeventdaemonhandlers)selfr   	__class__ Z/var/www/html/efn/efnconsultor/selenium/selenium-4.34.2/undetected_chromedriver/reactor.pyr      s    



zReactor.__init__)callbackc                 C   s8   | j  || j| < W d   n1 s*0    Y  dS )a  

        Parameters
        ----------
        event_name: str
            example "Network.responseReceived"

        callback: callable
            callable which accepts 1 parameter: the message object dictionary

        Returns
        -------

        N)r   r   lower)r   method_namer   r   r   r   add_event_handler   s    zReactor.add_event_handlerc                 C   s   | j   S )N)r   is_setr   r   r   r   running+   s    zReactor.runningc              
   C   sV   z t | j | j|   W n0 tyP } ztd| W Y d }~n
d }~0 0 d S )NzReactor.run() => %s)r   set_event_loopr	   run_until_completelisten	Exceptionloggerwarning)r   er   r   r   run/   s
    zReactor.runc                    s   | j d t| jdd rNt| jjdd rN| jjj rNt| jjpBdI d H  nW d    q|W d    q 1 sp0    Y  q d S )Nserviceprocessg      ?)	r   getattrr   r%   r&   pollr   sleep_delayr   r   r   r   _wait_service_started6   s    zReactor._wait_service_startedc                    s`  | j r\|  I d H  tdI d H  z| j | jd}W d    n1 sP0    Y  |D ]}z|d}t	|}|d}|d}d| j
v r| jd | j
d |I d H  n.| | j
v r| jd | j
|  |I d H  W q^ ty } z|d W Y d }~q^d }~0 0 q^W q  tyX } z(dt|v r8ntd| W Y d }~q d }~0 0 q d S )N   performancemessagemethod*zinvalid session idzexception ignored :)r   r+   r   r)   r   r   get_loggetjsonloadsr   r	   run_in_executorr   r    strloggingdebug)r   Zlog_entriesentryZobj_serializedobjr.   r/   r#   r   r   r   r   B   s4    *




"zReactor.listen)__name__
__module____qualname__r   callabler   propertyr   r$   r+   r   __classcell__r   r   r   r   r      s   
r   )	r   r3   r7   r
   	getLoggerr;   r!   Threadr   r   r   r   r   <module>   s
   
