o
    niW%                     @   s   d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ d dlmZ ddlmZmZ ddlmZ erFd d	lmZ dd
lmZ G dd dZG dd dejZG dd dejZG dd dejZG dd dejZG dd dZdS )    N)TYPE_CHECKINGAnyCallableDictOptional)wandb_server_pb2)SettingsStatic   )
SockClientSockClientClosedError   )	StreamMux)Event)InterfaceRelayc                   @   sl   e Zd ZU eeef ed< ejed< dddZ	dede
e fdd	Zd
eddfddZd
eddfddZdS )
ClientDict_client_dict_lockreturnNc                 C   s   i | _ t | _d S N)r   	threadingLockr   self r   [/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/sdk/service/server_sock.py__init__   s   zClientDict.__init__	client_idc                 C   s8   | j  | j|}W d    |S 1 sw   Y  |S r   )r   r   get)r   r   clientr   r   r   
get_client   s   
zClientDict.get_clientr   c                 C   s8   | j  || j|j< W d    d S 1 sw   Y  d S r   r   r   _sockidr   r   r   r   r   
add_client    s   "zClientDict.add_clientc                 C   s6   | j  | j|j= W d    d S 1 sw   Y  d S r   r    r"   r   r   r   
del_client$   s   "zClientDict.del_clientr   N)__name__
__module____qualname__r   strr
   __annotations__r   r   r   r   r   r#   r$   r   r   r   r   r      s   
 

r   c                   @   sB   e Zd ZU eed< ded< dedddddd	fd
dZdddZd	S )SockServerInterfaceReaderThread_socket_clientr   _stoppedclientsifacer   stoppedr   Nc                 C   s(   || _ || _tj|  d| _|| _d S )NSockSrvIntRdThr)_iface_clientsr   Threadr   namer-   )r   r.   r/   r0   r   r   r   r   -   s
   
z(SockServerInterfaceReaderThread.__init__c                 C   s   | j jsJ | j sZz
| j jjdd}W n tjy   Y q ty(   Y d S  ty1   Y d S w |j	j
}|s:J | j|}|sDJ t }|j| || | j rd S d S )Nr   )timeout)r2   relay_qr-   is_setr   queueEmptyOSError
ValueErrorcontrolrelay_idr3   r   spbServerResponseresult_communicateCopyFromsend_server_response)r   resultsockidsock_clientsrespr   r   r   run6   s&   

z#SockServerInterfaceReaderThread.runr%   )r&   r'   r(   r
   r*   r   r   rH   r   r   r   r   r+   )   s   
 
	r+   c                   @   s   e Zd ZU eed< eed< ded< eed< dejdeded	d
fddZd!ddZ	d!ddZ
d"ddZd"ddZd"ddZd"ddZd"ddZd"ddZd"dd Zd
S )#SockServerReadThread_sock_client_muxr   r-   r3   connmuxr.   r   Nc                 C   sB   || _ tj|  d| _t }|| || _| | _	|| _
d S )NSockSrvRdThr)rK   r   r4   r   r5   r
   
set_socketrJ   _get_stopped_eventr-   r3   )r   rL   rM   r.   rF   r   r   r   r   R   s   


zSockServerReadThread.__init__c                 C   s   | j  s@z| j }W n
 ty   Y d S w |sJ d|d}d| }t| |d }|s5J d| || | j  rd S d S )Nz(read_server_request should never timeoutserver_request_typeserver_zunknown handle: )r-   r8   rJ   read_server_requestr   
WhichOneofgetattr)r   sreq	sreq_typeshandler_strshandlerr   r   r   rH   ^   s   

zSockServerReadThread.runc                 C   s4   z	| j tj W n	 ty   Y nw | j   d S r   )rJ   shutdownsocket	SHUT_RDWRr;   closer   r   r   r   stopo   s   zSockServerReadThread.stoprV   spb.ServerRequestc                 C   sb   |j }|jj}t|j}| jj||d | j|j}| j	
| j t| j	|| jd}|  d S )Nsettings)r.   r/   r0   )inform_init_info	stream_idr   ra   rK   
add_stream
get_stream	interfacer3   r#   rJ   r+   r-   start)r   rV   requestrd   ra   r/   iface_reader_threadr   r   r   server_inform_initw   s   
z'SockServerReadThread.server_inform_initc                 C   s8   |j }|jj}t|j}| jj||d | j| d S )Nr`   )inform_startrc   rd   r   ra   rK   update_streamstart_stream)r   rV   ri   rd   ra   r   r   r   server_inform_start   s
   
z(SockServerReadThread.server_inform_startc                 C   sn   |j }|jj}| j| j t }|j	| j
j| jj tj|d}| j| | j
|j}|s5J d S )N)inform_attach_response)inform_attachrc   rd   r3   r#   rJ   r?   ServerInformAttachResponsera   rB   rK   _streams	_settings_protor@   rC   rf   rg   )r   rV   ri   rd   rp   responser/   r   r   r   server_inform_attach   s   z)SockServerReadThread.server_inform_attachc                 C   B   |j }| jj|j_|jj}| j|j	}|j
sJ |j
| d S r   )record_communicaterJ   r!   r=   r>   rc   rd   rK   rf   rg   record_qputr   rV   recordrd   r/   r   r   r   server_record_communicate      
z.SockServerReadThread.server_record_communicatec                 C   rx   r   )record_publishrJ   r!   r=   r>   rc   rd   rK   rf   rg   rz   r{   r|   r   r   r   server_record_publish   r   z*SockServerReadThread.server_record_publishc                 C   s   |j }|jj}| j| d S r   )inform_finishrc   rd   rK   drop_stream)r   rV   ri   rd   r   r   r   server_inform_finish   s   z)SockServerReadThread.server_inform_finishc                 C   s   |j }|j}| j| d S r   )inform_teardown	exit_coderK   teardown)r   rV   ri   r   r   r   r   server_inform_teardown   s   z+SockServerReadThread.server_inform_teardownr%   )rV   r_   r   N)r&   r'   r(   r
   r*   r   r   r[   r   rH   r^   rk   ro   rw   r~   r   r   r   r   r   r   r   rI   L   s.   
 







	
	rI   c                   @   sR   e Zd ZU ejed< eed< ded< eed< dejdedd	fd
dZdddZd	S )SockAcceptThread_sockrK   r   r-   r3   sockrM   r   Nc                 C   s4   || _ || _| | _tj|  d| _t | _	d S )NSockAcceptThr)
r   rK   rP   r-   r   r4   r   r5   r   r3   )r   r   rM   r   r   r   r      s   
zSockAcceptThread.__init__c                 C   s   g }| j  s9z	| j \}}W n ty   Y n  ty!   Y nw t|| j| jd}|	  |
| | j  r|D ]}|  q;d S )N)rL   rM   r.   )r-   r8   r   acceptConnectionAbortedErrorr;   rI   rK   r3   rh   appendr^   )r   read_threadsrL   addrsrrtr   r   r   rH      s    



zSockAcceptThread.runr%   )	r&   r'   r(   r[   r*   r   r   r   rH   r   r   r   r   r      s   
 
r   c                   @   s    e Zd Zd	ddZd
ddZdS )DebugThreadrM   r   r   Nc                 C   s   t j|  d| _d| _d S )NTDebugThr)r   r4   r   daemonr5   )r   rM   r   r   r   r      s   
zDebugThread.__init__c                 C   s,   	 t d t D ]
}td|j  q
q)NT   zDEBUG: )timesleepr   	enumerateprintr5   )r   threadr   r   r   rH      s
   
zDebugThread.run)rM   r   r   Nr%   )r&   r'   r(   r   rH   r   r   r   r   r      s    
r   c                   @   sz   e Zd ZU eed< eed< eed< ejed< dedededd	fd
dZ	dddZ
edefddZdddZdddZd	S )SocketServerrK   _address_portr   rM   addressportr   Nc                 C   s(   || _ || _|| _ttjtj| _d S r   )rK   r   r   r[   AF_INETSOCK_STREAMr   )r   rM   r   r   r   r   r   r      s   zSocketServer.__init__c                 C   s(   | j | j| jf | j  d | _d S )Nr   )r   bindr   r   getsocknamer   r   r   r   _bind   s   zSocketServer._bindc                 C   s   | j S r   )r   r   r   r   r   r      s   zSocketServer.portc                 C   s4   |    | jd t| j| jd| _| j  d S )N   )r   rM   )r   r   listenr   rK   _threadrh   r   r   r   r   rh      s   zSocketServer.startc                 C   s>   | j rz	| j tj W n	 ty   Y nw | j   d S d S r   )r   rZ   r[   r\   r;   r]   r   r   r   r   r^     s   zSocketServer.stopr%   )r&   r'   r(   r   r*   r)   intr[   r   r   r   propertyr   rh   r^   r   r   r   r   r      s   
 


	r   )r9   r[   r   r   typingr   r   r   r   r   wandb.protor   r?   "wandb.sdk.internal.settings_staticr   lib.sock_clientr
   r   streamsr   r   interface.interface_relayr   r   r4   r+   rI   r   r   r   r   r   r   r   <module>   s$    #m!