
    &`i                        d dl Z d dlZd dlmZmZ d dlmZ d dlmZm	Z	m
Z
mZmZ d dlZd dlmZmZmZ d dlmZ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          Z G d de          Z G d de          Z ed           G d d                      Z e	eee f                  Z! ed           G d d                      Z" ed           G d d                      Z#dS )    N)ABCabstractmethod)	dataclass)AnyAsyncIteratorListTupleUnion)ReceiveScopeSend)StreamingHTTPRequestgRPCRequest)SERVE_LOGGER_NAME)DEFAULT)RayServegRPCContextc                       e Zd ZdZeedefd                        Zeedefd                        Zeedefd                        Z	eede
fd                        Zeede
fd                        ZdS )	ProxyRequestzDBase ProxyRequest class to use in the common interface among proxiesreturnc                     t           NNotImplementedErrorselfs    }/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/serve/_private/proxy_request_response.pyrequest_typezProxyRequest.request_type   
     "!    c                     t           r   r   r   s    r   methodzProxyRequest.method   r   r   c                     t           r   r   r   s    r   
route_pathzProxyRequest.route_path   r   r   c                     t           r   r   r   s    r   is_route_requestzProxyRequest.is_route_request$   r   r   c                     t           r   r   r   s    r   is_health_requestzProxyRequest.is_health_request)   r   r   N)__name__
__module____qualname____doc__propertyr   strr   r!   r#   boolr%   r'    r   r   r   r      s       NN"c " " " ^ X" " " " " ^ X" "C " " " ^ X" "$ " " " ^ X" "4 " " " ^ X" " "r   r   c                   f   e Zd ZdZdededefdZede	fd            Z
ede	fd            Zede	fd	            Zedefd
            Zedefd            Zede	fd            Zede	fd            Zede	fd            Zedeeeef                  fd            Zde	fdZde	fdZde	defdZdS )ASGIProxyRequestzBProxyRequest implementation to wrap ASGI scope, receive, and send.scopereceivesendc                 0    || _         || _        || _        d S r   )r2   r3   r4   )r   r2   r3   r4   s       r   __init__zASGIProxyRequest.__init__2   s    
			r   r   c                 8    | j                             dd          S )Ntype r2   getr   s    r   r   zASGIProxyRequest.request_type7       z~~fb)))r   c                 \    | j                             dd                                          S )Nr!   WS)r2   r;   upperr   s    r   r!   zASGIProxyRequest.method;   s&     z~~h--33555r   c                 l    | j                             dd          t          | j                  d          S Npathr9   )r2   r;   len	root_pathr   s    r   r#   zASGIProxyRequest.route_path@   s-    z~~fb))#dn*=*=*?*?@@r   c                     | j         dk    S )Nz	/-/routesr#   r   s    r   r%   z!ASGIProxyRequest.is_route_requestD   s    +--r   c                     | j         dk    S )Nz
/-/healthzrF   r   s    r   r'   z"ASGIProxyRequest.is_health_requestH   s    ,..r   c                 8    | j                             dd          S )Nclientr9   r:   r   s    r   rI   zASGIProxyRequest.clientL   s    z~~h+++r   c                 8    | j                             dd          S )NrD   r9   r:   r   s    r   rD   zASGIProxyRequest.root_pathP   s    z~~k2...r   c                 8    | j                             dd          S rA   r:   r   s    r   rB   zASGIProxyRequest.pathT   r<   r   c                 8    | j                             dg           S )Nheadersr:   r   s    r   rM   zASGIProxyRequest.headersX   s    z~~i,,,r   rB   c                     || j         d<   d S )NrB   r2   )r   rB   s     r   set_pathzASGIProxyRequest.set_path\   s    !
6r   rD   c                     || j         d<   d S )NrD   rO   )r   rD   s     r   set_root_pathzASGIProxyRequest.set_root_path_   s    "+
;r   proxy_actor_namec                 R    t          j        t          | j        |                    S )N)
asgi_scoperS   )pickledumpsr   r2   )r   rS   s     r   serialized_replica_argz'ASGIProxyRequest.serialized_replica_argb   s2     | :!1  
 
 	
r   N)r(   r)   r*   r+   r   r   r   r6   r,   r-   r   r!   r#   r.   r%   r'   rI   rD   rB   r   r	   bytesrM   rP   rR   rX   r/   r   r   r1   r1   /   s       LLe g T    
 *c * * * X* 6 6 6 6 X6 AC A A A XA .$ . . . X. /4 / / / X/ , , , , X, /3 / / / X/ *c * * * X* -eE5L12 - - - X-"S " " " ",s , , , ,
s 
u 
 
 
 
 
 
r   r1   c                       e Zd ZdZdedej        j        j        de	de
fdZd Zede	fd	            Zede	fd
            Zede	fd            Zede
fd            Zede
fd            Zde	fdZdefdZdS )gRPCProxyRequestzGProxyRequest implementation to wrap gRPC request protobuf and metadata.request_protocontextservice_methodstreamc                     || _         || _        || _        || _        d| _        d | _        d| _        t          j        | _	        t          |          | _        |                                  d S )Nr9   __call__)_request_protor]   r^   r_   app_name
request_idmethod_namer   VALUEmultiplexed_model_idr   ray_serve_grpc_contextsetup_variables)r   r\   r]   r^   r_   s        r   r6   zgRPCProxyRequest.__init__p   sl     ,,%$+M! ':'&B&B#r   c                    | j         sv| j        sq| j                            d          }|d         | _        | j                                        D ]2\  }}|dk    r|| _        |dk    r|| _        !|dk    r|| _	        /d S d S d S )N/applicationrd   rg   )
r%   r'   r^   splitre   r]   invocation_metadatarc   rd   rg   )r   service_method_splitkeyvalues       r   ri   z gRPCProxyRequest.setup_variables   s    $ 		6T-C 		6#'#6#<#<S#A#A 3B7D"l>>@@ 6 6
U-''$)DMML((&+DOO22205D-		6 		6 		6 		66 6r   r   c                     dS )Ngrpcr/   r   s    r   r   zgRPCProxyRequest.request_type   s    vr   c                     | j         S r   r^   r   s    r   r!   zgRPCProxyRequest.method   s    ""r   c                     | j         S r   )rc   r   s    r   r#   zgRPCProxyRequest.route_path   s
    }r   c                     | j         dk    S )Nz./ray.serve.RayServeAPIService/ListApplicationsrv   r   s    r   r%   z!gRPCProxyRequest.is_route_request   s    "&VVVr   c                     | j         dk    S )Nz%/ray.serve.RayServeAPIService/Healthzrv   r   s    r   r'   z"gRPCProxyRequest.is_health_request   s    "&MMMr   rd   c                 @    | j                             d|fg           d S )Nrd   )rh   set_trailing_metadata)r   rd   s     r   send_request_idz gRPCProxyRequest.send_request_id   s)     	#99L*;U:VWWWWWr   c                 P    t          j        t          | j                            S )N)user_request_proto)rV   rW   r   rb   r   s    r   rX   z'gRPCProxyRequest.serialized_replica_arg   s"     |K4;NOOOPPPr   N)r(   r)   r*   r+   r   rt   _cythoncygrpc_ServicerContextr-   r.   r6   ri   r,   r   r!   r#   r%   r'   r|   rY   rX   r/   r   r   r[   r[   m   sz       QQ $5 	
    (
6 
6 
6 c    X # # # # X# C    X W$ W W W XW N4 N N N XNX# X X X XQ Q Q Q Q Q Qr   r[   T)frozenc                   P    e Zd ZU eeej        f         ed<   dZe	ed<   dZ
eed<   dS )ResponseStatuscodeFis_errorr9   messageN)r(   r)   r*   r
   r-   rt   
StatusCode__annotations__r   r.   r   r/   r   r   r   r      sJ         
T_$
%%%%HdGSr   r   c                   :    e Zd ZU dZeed<   dZeed<   dZeed<   dS )HandlerMetadatar9   application_namedeployment_namerouteN)r(   r)   r*   r   r-   r   r   r   r/   r   r   r   r      s>         cOSE3OOOOOr   r   c                   8    e Zd ZU eed<   eed<   eed<   eed<   dS )ResponseHandlerInforesponse_generatormetadatashould_record_access_log!should_increment_ongoing_requestsN)r(   r)   r*   ResponseGeneratorr   r   r.   r/   r   r   r   r      sB         ))))""""'++++++r   r   )$loggingrV   abcr   r   dataclassesr   typingr   r   r   r	   r
   rt   starlette.typesr   r   r   ray.serve._private.commonr   r   ray.serve._private.constantsr   ray.serve._private.utilsr   ray.serve.grpc_utilr   	getLoggerloggerr   r1   r[   r   r   r   r   r/   r   r   <module>r      sj     # # # # # # # # ! ! ! ! ! ! 9 9 9 9 9 9 9 9 9 9 9 9 9 9  0 0 0 0 0 0 0 0 0 0 G G G G G G G G : : : : : : , , , , , , 3 3 3 3 3 3		,	-	-" " " " "3 " " ":;
 ;
 ;
 ;
 ;
| ;
 ;
 ;
|@Q @Q @Q @Q @Q| @Q @Q @QF $        "%^(;"<=  $        $, , , , , , , , , ,r   