o
    ni[                     @   s   d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	 ddl
mZ ddlmZ er8dd	lmZ dd
lmZ edZG dd deZG dd deZG dd dZdS )zKRouter - handle message router (base class).

Router to manage responses.

    N)abstractmethod)TYPE_CHECKINGDictOptional   )mailbox   )MessageFuture)Queue)wandb_internal_pb2wandbc                   @   s   e Zd ZdZdS )MessageRouterClosedErrorzRouter has been closed.N)__name__
__module____qualname____doc__ r   r   X/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/sdk/interface/router.pyr      s    r   c                       s:   e Zd Zd	 fddZd
dee ded fddZ  ZS )MessageFutureObjectreturnNc                    s   t    d S N)super__init__self	__class__r   r   r      s   zMessageFutureObject.__init__timeout	pb.Resultc                 C   s    | j |}|r| jr| jS d S r   )_object_readywait_object)r   r   is_setr   r   r   get!   s   
zMessageFutureObject.getr   Nr   )r   r   r   r   r   intr#   __classcell__r   r   r   r   r      s    $r   c                   @   s   e Zd ZU eeef ed< ded< ded< eej	 ed< ddeej	 d	dfd
dZ
ed	ed fddZedddZd ddZ	ddddee d	efddZd ddZd!ddZdS )"MessageRouter_pending_reqszQueue[pb.Record]_request_queuezQueue[pb.Result]_response_queue_mailboxNr   r   c                 C   sN   || _ i | _t | _t | _tj| jd| _	d| j	_
d| j	_| j	  d S )N)targetMsgRouterThrT)r+   r(   	threadingLock_lockEvent_join_eventThreadmessage_loop_threadnamedaemonstart)r   r   r   r   r   r   .   s   

zMessageRouter.__init__r   c                 C      t r   NotImplementedErrorr   r   r   r   _read_message9      zMessageRouter._read_messagerecord	pb.Recordc                 C   r9   r   r:   )r   r>   r   r   r   _send_message=   r=   zMessageRouter._send_messagec                 C   st   | j  s8z|  }W n ty   td Y d S  ty(   td Y d S w |s,q | | | j  rd S d S )NzEOFError seen in message_loopzmessage_loop has been closed)r2   r"   r<   EOFErrorloggerwarningr   _handle_msg_rcv)r   msgr   r   r   r4   A   s   



zMessageRouter.message_loopreclocalc                 C   sf   d|j _|r
||j _t j|_t }| j || j|j< W d    n1 s'w   Y  | 	| |S )NT)
controlreq_resprG   uuiduuid4hexr   r0   r(   r@   )r   rF   rG   futurer   r   r   send_and_receiveQ   s   
zMessageRouter.send_and_receivec                 C   s   | j   | j  d S r   )r2   setr5   joinr   r   r   r   rP   `   s   
zMessageRouter.joinrE   c                 C   s   | j r|jjr| j | d S | j | j|jd }W d    n1 s%w   Y  |d u r=|jdkr;t	d|j| d S |
| d S )N z+No listener found for msg with uuid %s (%s))r+   rH   mailbox_slotdeliverr0   r(   poprJ   rB   rC   _set_object)r   rE   rM   r   r   r   rD   d   s   
zMessageRouter._handle_msg_rcvr   )r>   r?   r   Nr$   )rE   r   r   N)r   r   r   r   strr   __annotations__r   r   Mailboxr   r   r<   r@   r4   boolr	   rN   rP   rD   r   r   r   r   r'   (   s*   
 


r'   )r   loggingr.   rJ   abcr   typingr   r   r   libr   message_futurer	   queuer
   wandb.protor   pb	getLoggerrB   	Exceptionr   r   r'   r   r   r   r   <module>   s    
