
    &`i                        d Z ddlZddlZddlZddlZddlZddlZddlmc m	c m
Z
 ddlmc m	c mZ ddlmZ ddlmZ ddlmZ  ej        e          Z G d dej                  Z G d d	          Zd
 Z G d dej                  ZdS )zNThis file responds to log stream requests and forwards logs
with its handler.
    N)"global_worker_stdstream_dispatcher)print_worker_logs)CLIENT_SERVER_MAX_THREADSc                   4     e Zd Z fdZdej        fdZ xZS )LogstreamHandlerc                 d    t                                                       || _        || _        d S N)super__init__queuelevel)selfr   r   	__class__s      v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/util/client/server/logservicer.pyr   zLogstreamHandler.__init__   s+    



    recordc                     t          j                    }|                                |_        |j        |_        |j        |_        | j                            |           d S r	   )	ray_client_pb2LogData
getMessagemsglevelnor   namer   put)r   r   logdatas      r   emitzLogstreamHandler.emit   sO     (**'')){
wr   )__name__
__module____qualname__r   logging	LogRecordr   __classcell__r   s   @r   r   r      sV            
 7,                r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )StdStreamHandlerc                 ^    || _         t          t          j                              | _        d S r	   )r   struuiduuid4id)r   r   s     r   r   zStdStreamHandler.__init__$   s"    
djll##r   c                 L   t          j                    }|d         rdnd|_        |d         rdnd|_        t	          j                    5 }t          ||           |                                |_        d d d            n# 1 swxY w Y   | j	        
                    |           d S )Nis_errstderrstdout)r   r   r   r   ioStringIOr   getvaluer   r   r   )r   datar   files       r   handlezStdStreamHandler.handle(   s     (**"8n4"#'>?xxx[]] 	*ddD)))--//GK	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	
ws   	*A??BBc                 D    t          j        | j        | j                   d S r	   )r   add_handlerr*   r6   r   s    r   register_globalz StdStreamHandler.register_global1   s    *6twLLLLLr   c                 8    t          j        | j                   d S r	   )r   remove_handlerr*   r9   s    r   unregister_globalz"StdStreamHandler.unregister_global4   s    *9$'BBBBBr   N)r   r   r   r   r6   r:   r=    r   r   r%   r%   #   sX        $ $ $     M M MC C C C Cr   r%   c                    t          |           }d }t          j        d          }|                                }	 |D ]}|>|                    |           |                    |           |                                 |j        sd }Lt          | |j	                  }|
                                 |                    |           |                    |j	                   n9# t          j        $ r'}t                              d|            Y d }~nd }~ww xY w|>|                    |           |                    |           |                                 |                     d            d S # |>|                    |           |                    |           |                                 |                     d            w xY w)Nrayz8closing log thread grpc error reading request_iterator: )r%   r    	getLoggergetEffectiveLevelsetLevelremoveHandlerr=   enabledr   loglevelr:   
addHandlergrpcRpcErrorloggerdebugr   )	log_queuerequest_iteratorstd_handlercurrent_handlerroot_loggerdefault_levelreqes           r   log_status_change_threadrT   8   s   "9--KO#E**K1133M# 	/ 	/C*$$]333))/:::--///; "&.y#,GGO'')))""?333  ....	/ = Y Y YWTUWWXXXXXXXXY &  ///%%o666))+++d	 &  ///%%o666))+++ds1   B'C# "E3 #D2DE3 DE3 3AG
c                   $     e Zd Z fdZd Z xZS )LogstreamServicerc                     t                                                       d| _        t          j                    | _        d S )Nr   )r
   r   num_clients	threadingLockclient_lock)r   r   s    r   r   zLogstreamServicer.__init__U   s7    $>++r   c              #     K   d}| j         5  t          dz  }| j        dz   |k    rX|                    t          j        j                   t                              d| j         d| d           	 d d d            d S | xj        dz  c_        d}t          	                    d| j                    d d d            n# 1 swxY w Y   t          j                    }t          j        t          ||fd	          }|                                 	 t!          |j        d           }|D ]
}| n|V  n9# t          j        $ r'}	t                              d
|	            Y d }	~	nd }	~	ww xY w|                                 | j         5  |r| xj        dz  c_        d d d            d S # 1 swxY w Y   d S # |                                 | j         5  |r| xj        dz  c_        d d d            w # 1 swxY w Y   w xY w)NF      zLogstream: Num clients z has reached the threshold z. Rejecting new connection.Tz0New logs connection established. Total clients: )targetargsdaemonzClosing log channel: )r[   r   rX   set_coderH   
StatusCodeRESOURCE_EXHAUSTEDrJ   warninginfor   QueuerY   ThreadrT   startitergetrI   rK   join)
r   rM   contextinitialized	thresholdrL   thread
queue_iterr   rS   s
             r   	LogstreamzLogstreamServicer.LogstreamZ   s?      	 	1A5I!#y00  !CDDDLd.> L L%.L L L   	 	 	 	 	 	 	 	 !KKKXdFVXX  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 KMM	!+-.
 
 

 		*imT22J$  >E} 	6 	6 	6LL44455555555	6 KKMMM! * * *$$)$$* * * * * * * * * * * * * * * * * * KKMMM! * * *$$)$$* * * * * * * * * * * * * * * *s~   A$B==4B==CC"D1 0F2 1E' E"F2 "E''F2 F%%F),F)2G9G-!G9-G11G94G15G9)r   r   r   r   rr   r"   r#   s   @r   rV   rV   T   sG        , , , , ,
#* #* #* #* #* #* #*r   rV   )__doc__r1   r    r   rY   r(   rH   !ray.core.generated.ray_client_pb2core	generatedr   &ray.core.generated.ray_client_pb2_grpcray_client_pb2_grpcray._private.ray_loggingr   ray._private.workerr   ray.util.client.commonr   rA   r   rJ   Handlerr   r%   rT   RayletLogStreamerServicerrV   r>   r   r   <module>r~      s}    
			         : : : : : : : : : : : : D D D D D D D D D D D D G G G G G G 1 1 1 1 1 1 < < < < < <		8	$	$         w      C C C C C C C C*  8)* )* )* )* )*+E )* )* )* )* )*r   