o
    -win                     @  sp   d 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 ddlmZ er.dd	lmZ G d
d deZdS )z^Router - handle message router (relay).

Router to manage responses from a queue with relay.

    )annotations)TYPE_CHECKING)wandb_internal_pb2)wandb_server_pb2)Mailbox   )MessageQueueRouter)Queuec                      s6   e Zd ZU ded< d fddZd fddZ  ZS )MessageRelayRouterQueue[pb.Result]_relay_queuerequest_queueQueue[pb.Record]response_queuerelay_queuemailboxr   returnNonec                   s   || _ t j|||d d S )N)r   r   r   )r   super__init__)selfr   r   r   r   	__class__ ]/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/wandb/sdk/interface/router_relay.pyr      s   
zMessageRelayRouter.__init__msgpb.Result | spb.ServerResponsec                   s@   t |tjr	|}n|j}|jjr| j| d S t 	| d S )N)

isinstancepbResultresult_communicatecontrolrelay_idr   putr   _handle_msg_rcv)r   r   	relay_msgr   r   r   r$   &   s   z"MessageRelayRouter._handle_msg_rcv)
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   )__name__
__module____qualname____annotations__r   r$   __classcell__r   r   r   r   r
      s   
 r
   N)__doc__
__future__r   typingr   wandb.protor   r   r   spbwandb.sdk.mailboxr   router_queuer   queuer	   r
   r   r   r   r   <module>   s    