
    :j#                        d Z ddlmZ ddlmZ ddlZddlZddlmZ ddl	m
Z
mZ  ej        e          Zeeedz  gdf         Z	  G d d	e          Z G d
 d          ZddZdS )z<Helpers and types related to waiting for a command response.    )annotations)CallableN)Protocol   )RequestFailedRequestTimeoutc                      e Zd ZdZddZdS )	AcceptsCallbackFuncz3A function which accepts a callback_function kwarg.callback_functionCallbackType | NonereturnNonec                   d S )N )selfr   s     S/home/user/adhan/venv/lib/python3.11/site-packages/pychromecast/response_handler.py__call__zAcceptsCallbackFunc.__call__   s	     s    N)r   r   r   r   )__name__
__module____qualname____doc__r   r   r   r   r
   r
      s.        ==     r   r
   c                  @    e Zd ZU dZded<   ded<   ddZddZddZdS )WaitResponsezWait for a response.boolmsg_sentdict | Noneresponsetimeoutfloatrequeststrr   r   c                R    t          j                    | _        || _        || _        dS )zInitialize.N)	threadingEvent_event_request_timeout)r   r   r!   s      r   __init__zWaitResponse.__init__&   s#    o''r   c                T    || _         || _        | j                                         dS )z$Called when the request is finished.N)r   r   r&   set)r   r   r   s      r   callbackzWaitResponse.callback,   s(      r   c                    | j                             | j                  }|st          | j        | j                  | j        st          | j                  dS )zWait for the request to finish.N)r&   waitr(   r   r'   r   r   )r   request_completeds     r   wait_responsezWaitResponse.wait_response2   sZ     K,,T];;  	? >>>} 	/...	/ 	/r   N)r   r    r!   r"   r   r   r   r   r   r   r   r   )r   r   )r   r   r   r   __annotations__r)   r,   r0   r   r   r   r   r       sm         NNN          / / / / / /r   r   
on_successr   r   r   CallbackTypec                     d fd}|S )	zHelper to chain callbacks.r   r   r   r   r   r   c                z    | s+t                               d           r | |           d S             d S )NzNot calling on_success %s)r   )_LOGGERdebug)r   r   r   r3   s     r   	_callbackz#chain_on_success.<locals>._callbackA   sZ     	MM5zBBB  6!!(H555F
%6777777r   r1   r   )r3   r   r9   s   `` r   chain_on_successr:   <   s/    
8 8 8 8 8 8 8 r   )r3   r
   r   r   r   r4   )r   
__future__r   collections.abcr   loggingr$   typingr   errorr   r   	getLoggerr   r7   r   dictr4   r
   r   r:   r   r   r   <module>rB      s   B B " " " " " " $ $ $ $ $ $            0 0 0 0 0 0 0 0
'
H
%
%td{+T12    (   / / / / / / / /8     r   