
    sj                     (    d dl Z d dlZ G d d      Zy)    Nc                   T    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y)EventEmitterNc           	          i | _         |g }t        |      | _        | j                  D ]-  }t        | |t	        j
                  | j                  |             / y N)
_listenersset_allowed_eventssetattr	functoolspartialemit)selfallowed_eventsevents      ;/DATA/.local/lib/python3.12/site-packages/wslink/emitter.py__init__zEventEmitter.__init__   sN    !N">2))ED%!2!2499e!DE *    c                     i | _         y r   )r   r   s    r   clearzEventEmitter.clear   s	    r   c                 0     | j                   |g|i | y r   )r   )r   r   argskwargss       r   __call__zEventEmitter.__call__   s    		%)$)&)r   c                 L   | j                  |       | j                  j                  |      }|y t        j                         }|r|j                         r|j                  nt        j                  }|D ].  }t        j                  |      r | ||i |       ' ||i | 0 y 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#OO''.	'')!%$//*;D'++ 	 "H**84h778$)&)	 "r   c                     | j                  |       | j                  j                  |      }|t               }|| j                  |<   |j	                  |       y r   )r   r   r   r   addr   r   r'   r$   s       r   add_event_listenerzEventEmitter.add_event_listener)   sK    U#OO''.	I%.DOOE"hr   c                     | j                  |       | j                  j                  |      }|y ||v r|j                  |       y y r   )r   r   r   remover*   s       r   remove_event_listenerz"EventEmitter.remove_event_listener3   sH    U#OO''.	y X& !r   c                 *    | j                  |      dkD  S Nr   )listeners_count)r   r   s     r   haszEventEmitter.has=   s    ##E*Q..r   c                 v    | j                  |       | j                  j                  |      }|yt        |      S r0   )r   r   r   len)r   r   r$   s      r   r1   zEventEmitter.listeners_count@   s7    U#OO''.	9~r   c                     | j                   S r   )r	   r   s    r   r   zEventEmitter.allowed_eventsI   s    ###r   c                     t        | j                        dk(  ry || j                  vrd| d| j                   }t        |      y )Nr   'z-' is not a known event of this EventEmitter: )r4   r   
ValueError)r   r   msgs      r   r   zEventEmitter._validate_eventM   sO    t""#q(+++eWI$J]J]I^_CS/! ,r   r   )__name__
__module____qualname__r   r   r   r   r+   r.   r2   r1   propertyr   r    r   r   r   r      sD    	F**$ '/ $ $"r   r   )r   r   r   r>   r   r   <module>r?      s     N" N"r   