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

Router to manage responses.

    )annotationsN)abstractmethod)TYPE_CHECKING)wandb_internal_pb2)wandb_server_pb2)mailbox)Queuewandbc                   @  s   e Zd ZdZdS )MessageRouterClosedErrorzRouter has been closed.N)__name__
__module____qualname____doc__ r   r   W/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/wandb/sdk/interface/router.pyr
      s    r
   c                   @  sl   e Zd ZU ded< ded< ded< ddddZedddZedddZd ddZd ddZ	d!ddZ
dS )"MessageRouterzQueue[pb.Record]_request_queuezQueue[pb.Result]_response_queuemailbox.Mailbox | None_mailboxNr   returnNonec                 C  sH   || _ t | _t | _tj| jd| _d| j_	d| j_
| j  d S )N)targetMsgRouterThrT)r   	threadingLock_lockEvent_join_eventThreadmessage_loop_threadnamedaemonstart)selfr   r   r   r   __init__"   s   

zMessageRouter.__init__%pb.Result | spb.ServerResponse | Nonec                 C     t NNotImplementedErrorr%   r   r   r   _read_message,      zMessageRouter._read_messagerecord	pb.Recordc                 C  r(   r)   r*   )r%   r/   r   r   r   _send_message0   r.   zMessageRouter._send_messagec              
   C  s   zL| j  s@z|  }W n& ty   td Y n& ty2 } ztjd|d W Y d }~nd }~ww |s6q| | | j  rW | jrK| j	  d S d S | jrV| j	  w w )NzEOFError seen in message_loopzmessage_loop has been closed)exc_info)
r   is_setr-   EOFErrorloggerwarningr
   _handle_msg_rcvr   close)r%   msger   r   r   r    4   s,   




zMessageRouter.message_loopc                 C  s   | j   | j  d S r)   )r   setr!   joinr,   r   r   r   r<   I   s   
zMessageRouter.joinr9   pb.Result | spb.ServerResponsec                 C  sf   | j sd S t|tjr|jjr| j tj|jj|d d S t|tjr/|j	r1| j | d S d S d S )N)
request_idresult_communicate)
r   
isinstancepbResultcontrolmailbox_slotdeliverspbServerResponser>   )r%   r9   r   r   r   r7   M   s   zMessageRouter._handle_msg_rcvr)   )r   r   r   r   )r   r'   )r/   r0   r   r   )r   r   )r9   r=   r   r   )r   r   r   __annotations__r&   r   r-   r1   r    r<   r7   r   r   r   r   r      s   
 


r   )r   
__future__r   loggingr   abcr   typingr   wandb.protor   rA   r   rF   	wandb.sdkr   queuer   	getLoggerr5   	Exceptionr
   r   r   r   r   r   <module>   s    
