o
    ÓèFh9  ã                   @   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   úV/var/www/html/loop/nvenv/lib/python3.10/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   t dƒ‚)Nz6add_abortion_callback no longer supported server-side!)ÚNotImplementedError)r   Úabortion_callbackr   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*   C   ó   z(_FaceServicerContext.invocation_metadatac                 C   ó   | j  t |¡¡ d S r   )r   Úsend_initial_metadatar   Úunbeta)r   Úinitial_metadatar   r   r   r/   F   ó   ÿz%_FaceServicerContext.initial_metadatac                 C   r,   r   )r   Úset_terminal_metadatar   r.   )r   Úterminal_metadatar   r   r   r2   K   r0   z&_FaceServicerContext.terminal_metadatac                 C   ó   | j  |¡ d S r   )r   Úset_code)r   Úcoder   r   r   r5   P   r+   z_FaceServicerContext.codec                 C   r3   r   )r   Úset_details)r   Údetailsr   r   r   r7   S   r+   z_FaceServicerContext.detailsN)r   r   r   r   r    r!   r$   r&   r(   r*   r/   r2   r5   r7   r   r   r   r   r   .   s    r   c                    ó   ‡ fdd„}|S )Nc                    ó   ˆ | t |ƒƒS r   ©r   )Úrequestr   ©Úunary_request_inliner   r   Ú
adaptationX   ó   ÿz/_adapt_unary_request_inline.<locals>.adaptationr   )r=   r>   r   r<   r   Ú_adapt_unary_request_inlineW   ó   r@   c                    r8   )Nc                    r9   r   r:   )Úrequest_iteratorr   ©Ústream_request_inliner   r   r>   a   r?   z0_adapt_stream_request_inline.<locals>.adaptationr   )rD   r>   r   rC   r   Ú_adapt_stream_request_inline`   rA   rE   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   j   s   

z_Callback.__init__c                 C   sB   | j � | j |¡ | j  ¡  W d   ƒ d S 1 sw   Y  d S r   )rK   rL   ÚappendÚ
notify_all©r   Úvaluer   r   r   Úconsumep   s   "þz_Callback.consumec                 C   ó<   | j � d| _| j  ¡  W d   ƒ d S 1 sw   Y  d S ©NT)rK   rM   rP   r   r   r   r   Ú	terminateu   ó   "þz_Callback.terminatec                 C   sH   | j � | j |¡ d| _| j  ¡  W d   ƒ d S 1 sw   Y  d S rU   )rK   rL   rO   rM   rP   rQ   r   r   r   Úconsume_and_terminatez   s
   "ýz_Callback.consume_and_terminatec                 C   rT   rU   )rK   rN   rP   r   r   r   r   r&   €   rW   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   )rK   rN   r   Ú	AbandonedrL   ÚpoprM   Ú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 r   )rK   rN   r   rY   rM   ÚtuplerL   r[   )r   Ú
all_valuesr   r   r   Údraw_all_values‘   s   
ù
	øÿz_Callback.draw_all_valuesN)
r   r   r   r   rS   rV   rX   r&   r\   r_   r   r   r   r   rG   i   s    rG   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_setrS   rV   )r;   ©Úrequest_consumerrB   r   Úthread_joinedr   r   Úpipe_requests£   s   
ÿz/_run_request_pipe_thread.<locals>.pipe_requests)ÚtargetT)rI   ÚEventÚThreadÚdaemonÚstart)rB   rb   r   rd   Úrequest_pipe_threadr   ra   r   Ú_run_request_pipe_threadž   s
   	rk   c                    r8   )Nc                    s8   t ƒ }| |j¡st ¡ ‚ˆ | |jt|ƒƒ | ¡ d S ©Nr   )rG   Úadd_callbackr&   r   rY   rX   r   r_   )r;   r   Úcallback©Úunary_unary_eventr   r   r>   ²   s   ýz,_adapt_unary_unary_event.<locals>.adaptationr   )rp   r>   r   ro   r   Ú_adapt_unary_unary_event±   s   rq   c                    r8   )Nc                 3   sJ   � t ƒ }| |j¡st ¡ ‚ˆ | |t|ƒƒ 	 | ¡ }|d u r!d S |V  qr   )rG   rm   r&   r   rY   r   r\   )r;   r   rn   Úresponse©Úunary_stream_eventr   r   r>   Á   s   €
ÿûz-_adapt_unary_stream_event.<locals>.adaptationr   )rt   r>   r   rs   r   Ú_adapt_unary_stream_eventÀ   s   ru   c                    r8   )Nc                    sB   t ƒ }| |j¡st ¡ ‚ˆ |jt|ƒƒ}t| ||ƒ | ¡ d S rl   )	rG   rm   r&   r   rY   rX   r   rk   r_   )rB   r   rn   rb   ©Ústream_unary_eventr   r   r>   Ó   s   þÿz-_adapt_stream_unary_event.<locals>.adaptationr   )rw   r>   r   rv   r   Ú_adapt_stream_unary_eventÒ   s   rx   c                    r8   )Nc                 3   sT   � t ƒ }| |j¡st ¡ ‚ˆ |t|ƒƒ}t| ||ƒ 	 | ¡ }|d u r&d S |V  qr   )rG   rm   r&   r   rY   r   rk   r\   )rB   r   rn   rb   rr   ©Ústream_stream_eventr   r   r>   ä   s    €ÿÿûz._adapt_stream_stream_event.<locals>.adaptationr   )rz   r>   r   ry   r   Ú_adapt_stream_stream_eventã   s   r{   c                   @   s   e Zd ZdS )Ú_SimpleMethodHandlerN)r   r   r   r   r   r   r   r|   ø   s    r|   Ú_MethodHandler)Úrequest_streamingÚresponse_streamingÚrequest_deserializerÚresponse_serializerÚunary_unaryÚunary_streamÚstream_unaryÚ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   ÚServiceÚINLINEr   ÚCardinalityÚUNARY_UNARYr|   r@   Úunary_unary_inlineÚUNARY_STREAMÚunary_stream_inlineÚSTREAM_UNARYrE   Ústream_unary_inlineÚSTREAM_STREAMÚstream_stream_inlineÚEVENTrq   rp   ru   rt   rx   rw   r{   rz   Ú
ValueError)Úimplementationr€   r�   r   r   r   Ú_simple_method_handler  sÀ   ø
ø
ÿöÿø;Ñø
ø
øø
r”   c                 C   s:   | pi } i }| D ]}t  |d |d ¡}| | ||< q|S )Nr   é   )r   Úfully_qualified_method)Úmethod_pair_mapÚflat_mapÚmethod_pairÚmethodr   r   r   Ú_flatten_method_pair_maps  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   Úmethod_implementationsÚmulti_method_implementationÚrequest_deserializersÚresponse_serializersr   r   r   r   }  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š   r”   rž   rŸ   r    r
   ÚNoSuchMethodError)r   Úhandler_call_detailsÚmethod_implementationr   r   r   Úservice�  s    ÿý
ÿz_GenericRpcHandler.serviceN)r   r   r   r   r©   r   r   r   r   rœ   |  s    rœ   c                   @   rF   )Ú_Serverc                 C   r   r   )Ú_grpc_server)r   Ú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¯   Úserver_credentialsr   r   r   r±   ©  r'   z_Server.add_secure_portc                 C   r%   r   ©r«   ri   r   r   r   r   ri   ¬  r'   z_Server.startc                 C   r­   r   ©r«   Ústop)r   Ú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 rH   r´   )r   Úexc_typeÚexc_valÚexc_tbr   r   r   Ú__exit__¶  s   z_Server.__exit__N)
r   r   r   r   r®   r±   ri   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)Úservice_implementationsr¢   r£   r¤   Úthread_poolÚthread_pool_sizeÚgeneric_rpc_handlerÚeffective_thread_poolr   r   r   rÀ   »  s   üÿÿrÀ   ))Ú__doc__ÚcollectionsrI   r¿   r   Ú	grpc.betar   r   Úgrpc.framework.commonr   r   Úgrpc.framework.foundationr   r   r	   Úgrpc.framework.interfaces.facer
   r¾   ÚGRPCServicerContextr   ÚServicerContextr   r@   rE   ÚConsumerrG   rk   rq   ru   rx   r{   Ú
namedtupleÚRpcMethodHandlerr|   r”   r›   ÚGenericRpcHandlerrœ   ÚServerrª   rÀ   r   r   r   r   Ú<module>   sH   )		5
þòh	&