
    )j                     0    d dl Z d dlZ G d d          ZdS )    Nc                   \    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
ed
             Zd ZdS )EventEmitterNc           	          i | _         |g }t          |          | _        | j        D ]+}t          | |t	          j        | j        |                     ,d S N)
_listenersset_allowed_eventssetattr	functoolspartialemit)selfallowed_eventsevents      H/DATA/AppData/hermes/venv/lib/python3.11/site-packages/wslink/emitter.py__init__zEventEmitter.__init__   sh    !N">22) 	F 	FED%!249e!D!DEEEE	F 	F    c                     i | _         d S r   )r   r   s    r   clearzEventEmitter.clear   s    r   c                 (     | j         |g|R i | d S r   )r   )r   r   argskwargss       r   __call__zEventEmitter.__call__   s*    	%)$)))&)))))r   c                 J   |                      |           | j                            |          }|d S t          j                    }|r|                                r|j        nt          j        }|D ]0}t          j        |          r | ||i |           ( ||i | 1d S r   )	_validate_eventr   getasyncioget_running_loop
is_runningcreate_taskruniscoroutinefunction)r   r   r   r   	listenersloopcoroutine_runlisteners           r   r   zEventEmitter.emit   s    U###O''..	F'))!%M$//*;*;MD'+ 	 " 	* 	*H*844 *hh7778888$)&))))		* 	*r   c                     |                      |           | j                            |          }|t                      }|| j        |<   |                    |           d S r   )r   r   r   r   addr   r   r'   r$   s       r   add_event_listenerzEventEmitter.add_event_listener)   s^    U###O''..	I%.DOE"hr   c                     |                      |           | j                            |          }|d S ||v r|                    |           d S d S r   )r   r   r   remover*   s       r   remove_event_listenerz"EventEmitter.remove_event_listener3   sc    U###O''..	Fy  X&&&&& ! r   c                 4    |                      |          dk    S Nr   )listeners_count)r   r   s     r   haszEventEmitter.has=   s    ##E**Q..r   c                     |                      |           | j                            |          }|dS t          |          S r0   )r   r   r   len)r   r   r$   s      r   r1   zEventEmitter.listeners_count@   sB    U###O''..	19~~r   c                     | j         S r   )r	   r   s    r   r   zEventEmitter.allowed_eventsI   s    ##r   c                     t          | j                  dk    rd S || j        vrd| d| j         }t          |          d S )Nr   'z-' is not a known event of this EventEmitter: )r4   r   
ValueError)r   r   msgs      r   r   zEventEmitter._validate_eventM   sW    t"##q((F+++_e__$J]__CS//! ,+r   r   )__name__
__module____qualname__r   r   r   r   r+   r.   r2   r1   propertyr   r    r   r   r   r      s        	F 	F 	F 	F  * * ** * *$     ' ' '/ / /   $ $ X$" " " " "r   r   )r   r   r   r>   r   r   <module>r?      sV        N" N" N" N" N" N" N" N" N" N"r   