
    &`iQ                         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m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 erddlmZ  ej        e          Zde_         G d d          ZdS )	zaThis file implements a threaded stream controller to return logs back from
the ray clientserver.
    N)TYPE_CHECKING)log_once)WorkerFc                       e Zd ZdddefdZdej        fdZddZd	e	j
        defd
ZdedefdZdedefdZdefdZddZddZdS )LogstreamClientclient_workerr   metadatac                     || _         || _        t          j                    | _        |                                 | _        | j                                         d| _        dS )zInitializes a thread-safe log stream over a Ray Client gRPC channel.

        Args:
            client_worker: The Ray Client worker that manages this client
            metadata: metadata to pass to gRPC requests
        N)	r   	_metadataqueueQueuerequest_queue_start_logthread
log_threadstartlast_req)selfr   r	   s      n/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/util/client/logsclient.py__init__zLogstreamClient.__init__   sS     +!"[]]//11    returnc                 :    t          j        | j        dd          S )N T)targetargsdaemon)	threadingThread	_log_mainr   s    r   r   z LogstreamClient._start_logthread*   s    t~BtLLLLr   Nc                    d}| j         j        sU|r>t          j                    | _        | j        r| j                            | j                   t          j        | j         j	                  }	 |
                    t          | j        j        d           | j                  }n$# t          $ r t          j        d           Y w xY w	 |D ]O}|j        dk     r!|                     |j        |j                   |                     |j        |j                   Pd S # t*          j        $ r'}|                     |          }|sY d }~d S Y d }~nd }~ww xY w| j         j        Sd S d S )NF)r	         ?r   levelmsg)r   _in_shutdownr   r   r   r   putray_client_pb2_grpcRayletLogStreamerStubchannel	Logstreamitergetr   
ValueErrortimesleepr$   	stdstreamr%   loggrpcRpcError_process_rpc_error)r   reconnectingstub
log_streamrecordes         r   r   zLogstreamClient._log_main-   s   $1 	 :%*[]]"= :&**4=999&<T=O=WXXD
!^^+/66 ,  

    
 
3	( A AF|a''V\vzJJJHH6<VZH@@@@=   #66q99# FFFFF    1 $1 	 	 	 	 	s+   /4B$ $CC	AD E,EEr:   c                 l   | j                             |          rYt          d          rt                              d           t                              d           t          j        d           dS t                              d           | j         j        st          	                    d           dS )	z
        Processes RPC errors that occur while reading from data stream.
        Returns True if the error can be recovered from, False otherwise.
        lost_reconnect_logszLog channel is reconnecting. Logs produced while the connection was down can be found on the head node of the cluster in `ray_client_server_[port].out`zLog channel dropped, retrying.r"   TzShutting down log channel.zUnexpected exception:F)
r   _can_reconnectr   loggerwarningdebugr/   r0   r&   	exception)r   r:   s     r   r5   z"LogstreamClient._process_rpc_errorL   s    
 ,,Q// 
	-.. 5   LL9:::JsOOO41222!. 	64555ur   r$   r%   c                 >    t                               ||           dS )zLog the message from the log stream.
        By default, calls logger.log but this can be overridden.

        Args:
            level: The loglevel of the received log message
            msg: The content of the message
        r#   N)r>   r2   )r   r$   r%   s      r   r2   zLogstreamClient.loga   s      	

C
(((((r   c                 f    |dk    rt           j        nt           j        }t          ||d           dS )zLog the stdout/stderr entry from the log stream.
        By default, calls print but this can be overridden.

        Args:
            level: The loglevel of the received log message
            msg: The content of the message
         )fileendN)sysstderrstdoutprint)r   r$   r%   
print_files       r   r1   zLogstreamClient.stdstreamk   s4     $)B;;SZZCJ
c
++++++r   c                     t                               |           t          j                    }d|_        ||_        | j                            |           || _        d S )NT)	r>   setLevelray_client_pb2LogSettingsRequestenabledloglevelr   r'   r   )r   r$   reqs      r   set_logstream_levelz#LogstreamClient.set_logstream_levelv   sR    /11s###r   c                 ~    | j                             d            | j        | j                                         d S d S )N)r   r'   r   joinr    s    r   closezLogstreamClient.close~   sC    t$$$?&O  """"" '&r   c                 |    t          j                    }d|_        | j                            |           || _        d S )NF)rO   rP   rQ   r   r'   r   )r   rS   s     r   disable_logszLogstreamClient.disable_logs   s9    /11s###r   )r   N)__name__
__module____qualname__listr   r   r   r   r   r3   r4   boolr5   intstrr2   r1   rT   rW   rY   r   r   r   r   r      s       h $    M)"2 M M M M   >DM d    *) )3 ) ) ) )	,s 	, 	, 	, 	, 	,    # # # #
     r   r   )__doc__loggingr   rH   r   r/   typingr   r3   !ray.core.generated.ray_client_pb2core	generatedrO   &ray.core.generated.ray_client_pb2_grpcr(   ray.util.debugr   ray.util.client.workerr   	getLoggerrZ   r>   	propagater   r   r   r   <module>rl      s(      



                   : : : : : : : : : : : : D D D D D D D D D D D D # # # # # # .------		8	$	$  l l l l l l l l l lr   