o
    =j_:  ã                   @   sV  d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ dZG dd„ dejƒZG dd„ dejƒZdd„ Zdd„ ZG dd„ dejƒZdd„ Zdd„ Zdd„ Zdd„ Zdd „ ZG d!d"„ d"e d#d$¡ej ƒZ!d%d&„ Z"d'd(„ Z#G d)d*„ d*ej$ƒZ%G d+d,„ d,ej&ƒZ'd-d.„ Z(dS )/zCTranslates gRPC's server-side API into gRPC's server-side Beta API.é    N)Ú_common)Ú	_metadata)Ú
interfaces)Úcardinality)Ústyle)Úabandonment)Úlogging_pool)Ústream)Úfaceé   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_ServerProtocolContextc                 C   ó
   || _ d S ©N©Ú_servicer_context©ÚselfÚservicer_context© r   úgC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\grpc/beta/_server_adaptations.pyÚ__init__$   ó   
z_ServerProtocolContext.__init__c                 C   ó
   | j  ¡ S r   )r   Úpeer©r   r   r   r   r   '   r   z_ServerProtocolContext.peerc                 C   s   d S r   r   r   r   r   r   Ú!disable_next_response_compression*   s   z8_ServerProtocolContext.disable_next_response_compressionN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   #   s    r   c                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )Ú_FaceServicerContextc                 C   r   r   r   r   r   r   r   r   /   r   z_FaceServicerContext.__init__c                 C   r   r   )r   Ú	is_activer   r   r   r   r    2   r   z_FaceServicerContext.is_activec                 C   r   r   )r   Útime_remainingr   r   r   r   r!   5   r   z#_FaceServicerContext.time_remainingc                 C   s   d}t |ƒ‚)Nz6add_abortion_callback no longer supported server-side!)ÚNotImplementedError)r   Zabortion_callbackÚ	error_msgr   r   r   Úadd_abortion_callback8   s   z*_FaceServicerContext.add_abortion_callbackc                 C   ó   | j  ¡  d S r   )r   Úcancelr   r   r   r   r&   <   ó   z_FaceServicerContext.cancelc                 C   s
   t | jƒS r   )r   r   r   r   r   r   Úprotocol_context?   r   z%_FaceServicerContext.protocol_contextc                 C   s   t  | j ¡ ¡S r   )r   Úbetar   Úinvocation_metadatar   r   r   r   r*   B   ó   z(_FaceServicerContext.invocation_metadatac                 C   ó   | j  t |¡¡ d S r   )r   Zsend_initial_metadatar   Úunbeta)r   Úinitial_metadatar   r   r   r.   E   ó   ÿz%_FaceServicerContext.initial_metadatac                 C   r,   r   )r   Zset_terminal_metadatar   r-   )r   Úterminal_metadatar   r   r   r0   J   r/   z&_FaceServicerContext.terminal_metadatac                 C   ó   | j  |¡ d S r   )r   Zset_code)r   Úcoder   r   r   r2   O   r+   z_FaceServicerContext.codec                 C   r1   r   )r   Zset_details)r   Údetailsr   r   r   r3   R   r+   z_FaceServicerContext.detailsN)r   r   r   r   r    r!   r$   r&   r(   r*   r.   r0   r2   r3   r   r   r   r   r   .   s    r   c                    ó   ‡ fdd„}|S )Nc                    ó   ˆ | t |ƒƒS r   ©r   )Úrequestr   ©Úunary_request_inliner   r   Ú
adaptationW   ó   ÿz/_adapt_unary_request_inline.<locals>.adaptationr   )r9   r:   r   r8   r   Ú_adapt_unary_request_inlineV   ó   r<   c                    r4   )Nc                    r5   r   r6   )Úrequest_iteratorr   ©Ústream_request_inliner   r   r:   `   r;   z0_adapt_stream_request_inline.<locals>.adaptationr   )r@   r:   r   r?   r   Ú_adapt_stream_request_inline_   r=   rA   c                   @   óD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )Ú	_Callbackc                 C   s    t  ¡ | _g | _d| _d| _d S ©NF)Ú	threadingÚ	ConditionÚ
_conditionÚ_valuesÚ_terminatedÚ
_cancelledr   r   r   r   r   i   s   

z_Callback.__init__c                 C   sB   | j � | j |¡ | j  ¡  W d   ƒ d S 1 sw   Y  d S r   )rG   rH   ÚappendÚ
notify_all©r   Úvaluer   r   r   Úconsumeo   s   "þz_Callback.consumec                 C   ó<   | j � d| _| j  ¡  W d   ƒ d S 1 sw   Y  d S ©NT)rG   rI   rL   r   r   r   r   Ú	terminatet   ó   "þz_Callback.terminatec                 C   sH   | j � | j |¡ d| _| j  ¡  W d   ƒ d S 1 sw   Y  d S rQ   )rG   rH   rK   rI   rL   rM   r   r   r   Úconsume_and_terminatey   s
   "ýz_Callback.consume_and_terminatec                 C   rP   rQ   )rG   rJ   rL   r   r   r   r   r&      rS   z_Callback.cancelc                 C   sp   | j �+ 	 | jrt ¡ ‚| jr| j d¡W  d   ƒ S | jr(	 W d   ƒ d S | j  ¡  q1 s1w   Y  d S )NTr   )rG   rJ   r   Ú	AbandonedrH   ÚpoprI   Úwaitr   r   r   r   Údraw_one_value„   s   
ûù
ùÿz_Callback.draw_one_valuec                 C   s`   | j �# 	 | jrt ¡ ‚| jr t| jƒ}d | _|W  d   ƒ S | j  ¡  q1 s)w   Y  d S rQ   )rG   rJ   r   rU   rI   ÚtuplerH   rW   )r   Z
all_valuesr   r   r   Údraw_all_values�   s   
ù
ùÿz_Callback.draw_all_valuesN)
r   r   r   r   rO   rR   rT   r&   rX   rZ   r   r   r   r   rC   h   s    rC   c                    s8   t  ¡ ‰‡ ‡‡‡fdd„}t j|d�}d|_| ¡  d S )Nc                     sL   ˆD ]} ˆ  ¡ rˆ ¡ r d S ˆ  | ¡ ˆ  ¡ rˆ ¡ r d S qˆ  ¡  d S r   )r    Úis_setrO   rR   )r7   ©Úrequest_consumerr>   r   Zthread_joinedr   r   Úpipe_requests    s   
ÿz/_run_request_pipe_thread.<locals>.pipe_requests)ÚtargetT)rE   ÚEventÚThreadÚdaemonÚstart)r>   r]   r   r^   Zrequest_pipe_threadr   r\   r   Ú_run_request_pipe_thread›   s
   	rd   c                    r4   )Nc                    s8   t ƒ }| |j¡st ¡ ‚ˆ | |jt|ƒƒ | ¡ d S ©Nr   )rC   Úadd_callbackr&   r   rU   rT   r   rZ   )r7   r   Úcallback©Úunary_unary_eventr   r   r:   ¯   s   ýz,_adapt_unary_unary_event.<locals>.adaptationr   )ri   r:   r   rh   r   Ú_adapt_unary_unary_event®   s   rj   c                    r4   )Nc                 3   sJ   � t ƒ }| |j¡st ¡ ‚ˆ | |t|ƒƒ 	 | ¡ }|d u r!d S |V  qrQ   )rC   rf   r&   r   rU   r   rX   )r7   r   rg   Úresponse©Úunary_stream_eventr   r   r:   ¾   s   €
ÿûz-_adapt_unary_stream_event.<locals>.adaptationr   )rm   r:   r   rl   r   Ú_adapt_unary_stream_event½   s   rn   c                    r4   )Nc                    sB   t ƒ }| |j¡st ¡ ‚ˆ |jt|ƒƒ}t| ||ƒ | ¡ d S re   )	rC   rf   r&   r   rU   rT   r   rd   rZ   )r>   r   rg   r]   ©Ústream_unary_eventr   r   r:   Ð   s   þÿz-_adapt_stream_unary_event.<locals>.adaptationr   )rp   r:   r   ro   r   Ú_adapt_stream_unary_eventÏ   s   rq   c                    r4   )Nc                 3   sT   � t ƒ }| |j¡st ¡ ‚ˆ |t|ƒƒ}t| ||ƒ 	 | ¡ }|d u r&d S |V  qrQ   )rC   rf   r&   r   rU   r   rd   rX   )r>   r   rg   r]   rk   ©Ústream_stream_eventr   r   r:   á   s    €ÿÿûz._adapt_stream_stream_event.<locals>.adaptationr   )rs   r:   r   rr   r   Ú_adapt_stream_stream_eventà   s   rt   c                   @   s   e Zd ZdS )Ú_SimpleMethodHandlerN)r   r   r   r   r   r   r   ru   õ   s    ru   Z_MethodHandler)Zrequest_streamingZresponse_streamingÚrequest_deserializerÚresponse_serializerZunary_unaryZunary_streamZstream_unaryZstream_streamc              
   C   sx  | j t jju r^| jtjju rtdd||t| jƒd d d ƒS | jtjj	u r1tdd||d t| j
ƒd d ƒS | jtjju rFtdd||d d t| jƒd ƒS | jtjju r[tdd||d d d t| jƒƒS tƒ ‚| j t jju r¹| jtjju rztdd||t| jƒd d d ƒS | jtjj	u r�tdd||d t| jƒd d ƒS | jtjju r¤tdd||d d t| jƒd ƒS | jtjju r¹tdd||d d d t| jƒƒS tƒ ‚)NFT)r   ZServiceZINLINEr   ZCardinalityZUNARY_UNARYru   r<   Zunary_unary_inlineZUNARY_STREAMZunary_stream_inlineZSTREAM_UNARYrA   Zstream_unary_inlineZSTREAM_STREAMZstream_stream_inlineZEVENTrj   ri   rn   rm   rq   rp   rt   rs   Ú
ValueError)Úimplementationrv   rw   r   r   r   Ú_simple_method_handler  sÀ   ø
ø
ÿöÿø9Óø
ø
ø
ø
rz   c                 C   s:   | pi } i }| D ]}t  |d |d ¡}| | ||< q|S )Nr   é   )r   Zfully_qualified_method)Zmethod_pair_mapZflat_mapZmethod_pairÚmethodr   r   r   Ú_flatten_method_pair_mapl  s   r}   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_GenericRpcHandlerc                 C   s(   t |ƒ| _t |ƒ| _t |ƒ| _|| _d S r   )r}   Ú_method_implementationsÚ_request_deserializersÚ_response_serializersÚ_multi_method_implementation)r   Zmethod_implementationsÚmulti_method_implementationÚrequest_deserializersÚresponse_serializersr   r   r   r   v  s   ÿÿÿ
z_GenericRpcHandler.__init__c                 C   sb   | j  |j¡}|d urt|| j |j¡| j |j¡ƒS | jd u r"d S zW d S  tjy0   Y d S w r   )	r   Úgetr|   rz   r€   r�   r‚   r
   ZNoSuchMethodError)r   Zhandler_call_detailsZmethod_implementationr   r   r   Úserviceˆ  s    ÿý
ÿz_GenericRpcHandler.serviceN)r   r   r   r   r‡   r   r   r   r   r~   u  s    r~   c                   @   rB   )Ú_Serverc                 C   r   r   )Ú_grpc_server)r   Zgrpc_serverr   r   r   r   ›  r   z_Server.__init__c                 C   ó   | j  |¡S r   )r‰   Úadd_insecure_port)r   Úaddressr   r   r   r‹   ž  ó   z_Server.add_insecure_portc                 C   s   | j  ||¡S r   )r‰   Úadd_secure_port)r   rŒ   Zserver_credentialsr   r   r   rŽ   ¡  r'   z_Server.add_secure_portc                 C   r%   r   ©r‰   rc   r   r   r   r   rc   ¤  r'   z_Server.startc                 C   rŠ   r   ©r‰   Ústop)r   Zgracer   r   r   r‘   §  r�   z_Server.stopc                 C   s   | j  ¡  | S r   r�   r   r   r   r   Ú	__enter__ª  s   
z_Server.__enter__c                 C   s   | j  d ¡ dS rD   r�   )r   Úexc_typeÚexc_valÚexc_tbr   r   r   Ú__exit__®  s   z_Server.__exit__N)
r   r   r   r   r‹   rŽ   rc   r‘   r’   r–   r   r   r   r   rˆ   š  s    rˆ   c                 C   sF   t | |||ƒ}|d u rt |d u rtn|¡}n|}ttj||fd�ƒS )N)Úhandlers)r~   r   ÚpoolÚ_DEFAULT_POOL_SIZErˆ   ÚgrpcÚserver)Zservice_implementationsrƒ   r„   r…   Zthread_poolZthread_pool_sizeZgeneric_rpc_handlerZeffective_thread_poolr   r   r   r›   ³  s   üÿÿr›   ))Ú__doc__ÚcollectionsrE   rš   r   Z	grpc.betar   r   Zgrpc.framework.commonr   r   Zgrpc.framework.foundationr   r   r	   Zgrpc.framework.interfaces.facer
   r™   ZGRPCServicerContextr   ZServicerContextr   r<   rA   ZConsumerrC   rd   rj   rn   rq   rt   Ú
namedtupleZRpcMethodHandlerru   rz   r}   ZGenericRpcHandlerr~   ÚServerrˆ   r›   r   r   r   r   Ú<module>   sH   (		3
þòd	%