
    &`i                         d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	c m
Z d dlmZmZ d dlmZ d dlmZmZmZ  ej        e          Zej        Z G d d          ZdS )	    N)ListOptional)Version)build_addressis_localhost)get_or_create_event_loop)aiohttpaiohttp_corshdrsc                   f    e Zd ZdededdfdZ	 dded	edej        j	        fd
Z
deddfdZddZdS )HttpServerAgentiplisten_portreturnNc                 Z    || _         || _        d | _        d | _        d | _        d | _        d S N)r   r   	http_host	http_porthttp_sessionrunner)selfr   r   s      s/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/dashboard/http_server_agent.py__init__zHttpServerAgent.__init__   s2    &        皙?max_retries
base_delayc                 Z  K   d}t          |dz             D ]}	 t          j                            | j        | j        | j                  }|                                 d{V  t          | j                  sEt          j                            | j        d| j                  }|                                 d{V  |dk    r&t          
                    d| j         d| d           |c S # t          $ r}|}||k     rn|d|z  z  t          j        dd	          z   }t                              d
| j         d|dz    d|dz    d|dd| 
           t          j        |           d{V  n/t                              d| j         d|dz    d           Y d}~ nY d}~d}~ww xY w|)aK  Start the TCP site with retry logic and exponential backoff.

        Args:
            max_retries: Maximum number of retry attempts
            base_delay: Base delay in seconds for exponential backoff

        Returns:
            The started site object

        Raises:
            OSError: If all retry attempts fail
        N   z	127.0.0.1r   z#Successfully started agent on port z after z retry attempts   r   zFailed to bind to port z
 (attempt /z). Retrying in z.2fz
s. Error: zAgent port #z failed to bind after z
 attempts.)ranger	   webTCPSiter   r   r   startr   loggerinfoOSErrorrandomuniformwarningasynciosleep	exception)	r   r   r   last_exceptionattemptsite
local_siteedelays	            r   _start_site_with_retryz&HttpServerAgent._start_site_with_retry   sv      -1[1_-- %	 %	G${**KG$ 
 jjll"""""""#DG,, -!(!4!4#(" "J
 %**,,,,,,,,,Q;;KK:d>N : :!(: : :      !"[((&!W*5q#8N8NNENNT$2B T TgXYk T T&?T T;@ST TPQT T   "-..........$$7t'7 7 7&?7 7 7   EEEEE /....$ s   CC..
F(8BF##F(modulesc           
        K   t          t          j                  t          d          k     r't          j        t	                                | _        nt          j                    | _        |D ]!}t          j                            |           "t          j	        
                                }|                    t                                                     t          j        |dt          j        dddd          i          }t#          |j                                                  D ]}|                    |           t          j	                            |          | _        | j                                         d {V  |                                  d {V }|j        j        d	                                         ^| _        | _        }t8                              d
t=          | j        | j                             d |j                                        D             }|D ]}	t8                              |	           t8                              dt?          |                     d S )Nz4.0.0)loop)routes*T)zContent-TypezX-Header)allow_credentialsexpose_headersallow_methodsallow_headers)defaultsr   z Dashboard agent http address: %sc                 <    g | ]}|j         t          j        k    |S  )methodr   	METH_HEAD).0rs     r   
<listcomp>z)HttpServerAgent.start.<locals>.<listcomp>   s&    TTTQT^9S9Sq9S9S9Sr   zRegistered %s routes.) r   r	   __version__ClientSessionr   r   dashboard_optional_utilsDashboardAgentRouteTablebindr$   Application
add_routesr:   bound_routesr
   setupResourceOptionslistrouteradd	AppRunnerr   r6   _serversocketsgetsocknamer   r   r'   r(   r   len)
r   r7   cappcorsrouter2   _dump_routesrF   s
             r   r&   zHttpServerAgent.startU   sL      7&''''*:*::: ' 5;S;U;U V V VD ' 5 7 7D  	F 	FA$=BB1EEEEk%%''f1133444 !\1&*#&"%">	  

 

 

 #*++--.. 	 	EHHUOOOOk++C00k!!!!!!!!! 0022222222-1\-A!-D-P-P-R-R*.$.$.99	
 	
 	
 UT#*"3"3"5"5TTT 	 	AKKNNNN+S-=-=>>>>>r   c                    K   | j                                          d {V  | j                                         d {V  d S r   )r   cleanupr   close)r   s    r   ra   zHttpServerAgent.cleanup   sY      k!!#########%%'''''''''''r   )r   r   )r   N)__name__
__module____qualname__strintr   floatr	   r$   r%   r6   r   r&   ra   rB   r   r   r   r      s        3 S T     9<9 99059		9 9 9 9v/?4 /?D /? /? /? /?b( ( ( ( ( (r   r   )r-   loggingr*   typingr   r   packaging.versionr   ray.dashboard.optional_utils	dashboardoptional_utilsrJ   ray._common.network_utilsr   r   ray._common.utilsr   ray.dashboard.optional_depsr	   r
   r   	getLoggerrc   r'   rK   r:   r   rB   r   r   <module>rs      s      ! ! ! ! ! ! ! ! % % % % % % ? ? ? ? ? ? ? ? ? A A A A A A A A 6 6 6 6 6 6 C C C C C C C C C C		8	$	$	!	:x( x( x( x( x( x( x( x( x( x(r   