o
    ÓèFh°Å  ã                   @  sŠ  d Z ddlmZ ddlZddlZddlmZ ddl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mZmZmZmZmZmZmZmZmZmZm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dl m&Z& ddl m'Z' ddl m(Z( ddl m)Z) e	 *e+¡Z,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:d Z;dïd%d&„Z<dðd*d+„Z=dñd.d/„Z>dòd0d1„Z?dód2d3„Z@G d4d5„ d5e Ad5d6¡ejBƒZCG d7d8„ d8ejDƒZEG d9d:„ d:eEƒZFG d;d<„ d<eEƒZGG d=d-„ d-eHƒZIdôd?d@„ZJdõdDdE„ZKdödGdH„ZLd÷dKdL„ZMdødNdO„ZNdùdSdT„ZOdúdUdV„ZPdûdYdZ„ZQdúd[d\„ZRdöd]d^„ZSG d_d`„ d`ejTƒZUG dadb„ dbeHƒZVdüdedf„ZW	dýdþdndo„ZXdÿdsdt„ZY�d dydz„ZZ�dd|d}„Z[dôd~d„Z\�dd‚dƒ„Z]�dd„d…„Z^�dd‡dˆ„Z_�dd‰dŠ„Z`�dd‹dŒ„Za�ddŽd�„Zb�dd’d“„Zc�d	d—d˜„Zd�d	d™dš„Ze�d	d›dœ„Zf�d	d�dž„Zg�d
d£d¤„Zh�dd§d¨„Zi�ddªd«„Zj�dd®d¯„ZkejlG d°d±„ d±ejmƒƒZnG d²d³„ d³eHƒZo�dd¶d·„Zp�ddºd»„Zq�dd¾d¿„Zr�ddÂdÃ„Zs�ddÄdÅ„Zt�ddÇdÈ„Zu�ddÉdÊ„Zv�ddËdÌ„Zw�ddÎdÏ„Zx�ddÐdÑ„Zy�ddÒdÓ„Zz�dd×dØ„Z{�ddÙdÚ„Z|�ddÜdÝ„Z}�ddâdã„Z~G dädå„ dåejƒZ€�ddídî„Z�dS (  z+Service-side implementation of gRPC Python.é    )ÚannotationsN)Úfutures)ÚAnyÚCallableÚDictÚIterableÚIteratorÚListÚMappingÚOptionalÚSequenceÚSetÚTupleÚUnion)Ú_common)Ú_compression)Ú_interceptor)Úcygrpc)ÚArityAgnosticMethodHandler)ÚChannelArgumentType)ÚDeserializingFunction)ÚMetadataType)ÚNullaryCallbackType)ÚResponseType)ÚSerializingFunction)ÚServerCallbackTag)ÚServerTagCallbackTypeÚshutdownÚrequest_callÚreceive_close_on_serverÚsend_initial_metadataÚreceive_messageÚsend_messagez$send_initial_metadata * send_messageÚsend_status_from_serverz/send_initial_metadata * send_status_from_serverÚopenÚclosedÚ	cancelledg      ð?g    eÍÍAÚrequest_eventúcygrpc.BaseEventÚreturnÚbytesc                 C  s   | j d  ¡ S ©Nr   )Úbatch_operationsÚmessage)r'   © r.   úE/var/www/html/loop/nvenv/lib/python3.10/site-packages/grpc/_server.pyÚ_serialized_requestT   ó   r0   Úcodeúgrpc.StatusCodeúcygrpc.StatusCodec                 C  s    t j | ¡}|d u rtjjS |S ©N)r   Ú!STATUS_CODE_TO_CYGRPC_STATUS_CODEÚgetr   Ú
StatusCodeÚunknown)r2   Úcygrpc_coder.   r.   r/   Ú_application_codeX   s   r;   ÚstateÚ	_RPCStatec                 C  s   | j d u r	tjjS t| j ƒS r5   )r2   r   r8   Úokr;   ©r<   r.   r.   r/   Ú_completion_code]   s   

r@   c                 C  s   | j d u r|S t| j ƒS r5   )r2   r;   )r<   r2   r.   r.   r/   Ú_abortion_coded   s   

rA   c                 C  s   | j d u rdS | j S )Nó    )Údetailsr?   r.   r.   r/   Ú_detailsm   s   rD   c                   @  s   e Zd ZdS )Ú_HandlerCallDetailsN)Ú__name__Ú
__module__Ú__qualname__r.   r.   r.   r/   rE   q   s    
rE   )ÚmethodÚinvocation_metadatac                   @  s,   e Zd Zejddd„ƒZejddd	„ƒZd
S )Ú_Methodr)   úOptional[str]c                 C  ó   t ƒ ‚r5   ©ÚNotImplementedError©Úselfr.   r.   r/   Úname   s   z_Method.nameÚhandler_call_detailsrE   úOptional[grpc.RpcMethodHandler]c                 C  rM   r5   rN   ©rQ   rS   r.   r.   r/   Úhandlerƒ   s   z_Method.handlerN©r)   rL   ©rS   rE   r)   rT   )rF   rG   rH   ÚabcÚabstractmethodrR   rV   r.   r.   r.   r/   rK   ~   s
    rK   c                   @  s*   e Zd Zddd„Zdd	d
„Zddd„ZdS )Ú_RegisteredMethodrR   ÚstrÚregistered_handlerrT   c                 C  s   || _ || _d S r5   )Ú_nameÚ_registered_handler)rQ   rR   r]   r.   r.   r/   Ú__init__‹   s   
z_RegisteredMethod.__init__r)   rL   c                 C  ó   | j S r5   )r^   rP   r.   r.   r/   rR   “   s   z_RegisteredMethod.namerS   rE   c                 C  ra   r5   )r_   rU   r.   r.   r/   rV   –   s   z_RegisteredMethod.handlerN)rR   r\   r]   rT   rW   rX   ©rF   rG   rH   r`   rR   rV   r.   r.   r.   r/   r[   Š   s    

r[   c                   @  s*   e Zd Zddd„Zddd„Zddd„ZdS )Ú_GenericMethodÚgeneric_handlersúList[grpc.GenericRpcHandler]c                 C  s
   || _ d S r5   )Ú_generic_handlers)rQ   rd   r.   r.   r/   r`   �   s   
z_GenericMethod.__init__r)   rL   c                 C  ó   d S r5   r.   rP   r.   r.   r/   rR   £   ó   z_GenericMethod.namerS   rE   rT   c                 C  s*   | j D ]}| |¡}|d ur|  S qd S r5   )rf   Úservice)rQ   rS   Úgeneric_handlerÚmethod_handlerr.   r.   r/   rV   ¦   s   

ÿz_GenericMethod.handlerN)rd   re   rW   rX   rb   r.   r.   r.   r/   rc   œ   s    

rc   c                   @  sŽ   e Zd ZU ded< ded< ee Zded< ded< d	ed
< ded< d	ed< ded< ded< ded< d	ed< ded< ded< d	ed< dd„ ZdS )r=   zcontextvars.ContextÚcontextzthreading.ConditionÚ	conditionr   Úrequestr\   ÚclientÚboolÚinitial_metadata_allowedúOptional[grpc.Compression]Úcompression_algorithmÚdisable_next_compressionúOptional[MetadataType]Útrailing_metadatazOptional[grpc.StatusCode]r2   úOptional[bytes]rC   ÚstatusedzList[Exception]Ú
rpc_errorsz#Optional[List[NullaryCallbackType]]Ú	callbacksÚabortedc                 C  sh   t  ¡ | _t ¡ | _tƒ | _d | _t	| _
d| _d | _d| _d | _d | _d | _d| _g | _g | _d| _d S ©NTF)ÚcontextvarsÚContextrl   Ú	threadingÚ	Conditionrm   ÚsetÚduern   Ú_OPENro   rq   rs   rt   rv   r2   rC   rx   ry   rz   r{   rP   r.   r.   r/   r`   Ã   s   


z_RPCState.__init__N)rF   rG   rH   Ú__annotations__r   r\   r‚   r`   r.   r.   r.   r/   r=   ²   s"   
 ÚNonec                 C  s   t  ¡ }| j |¡ |‚r5   )ÚgrpcÚRpcErrorry   Úappend)r<   Ú	rpc_errorr.   r.   r/   Ú_raise_rpc_errorÕ   s   rŠ   Útokenr\   r   c                 C  s2   | j  |¡ t| ƒs| j s| j}d | _| |fS dS )N©Nr.   )r‚   ÚremoveÚ_is_rpc_state_activerz   )r<   r‹   rz   r.   r.   r/   Ú_possibly_finish_callÛ   s   r�   r   c                   ó   ‡ ‡fdd„}|S )Nc                   s4   ˆ j � tˆ ˆƒW  d   ƒ S 1 sw   Y  d S r5   )rm   r�   )Ú$unused_send_status_from_server_event©r<   r‹   r.   r/   r#   è   ó   $ÿz9_send_status_from_server.<locals>.send_status_from_serverr.   )r<   r‹   r#   r.   r’   r/   Ú_send_status_from_serverç   s   r”   Úmetadataru   c                 C  sv   | j �. | jr(t | j¡f}|d u r|W  d   ƒ S |t|ƒ W  d   ƒ S |W  d   ƒ S 1 s4w   Y  d S r5   )rm   rs   r   Ú!compression_algorithm_to_metadataÚtuple)r<   r•   Úcompression_metadatar.   r.   r/   Ú_get_initial_metadataï   s   ÿÿø

ö$ôr™   úcygrpc.Operationc                 C  s   t  t| |ƒt¡}|S r5   )r   ÚSendInitialMetadataOperationr™   Ú_EMPTY_FLAGS)r<   r•   Ú	operationr.   r.   r/   Ú_get_initial_metadata_operation  s   
ÿrž   Úcallúcygrpc.CallrC   c                 C  s”   | j turHt| |ƒ}| jd u r|n| j}| jr(t| d ƒt | j||t	¡f}t
}nt | j||t	¡f}t}| |t| |ƒ¡ d| _| j |¡ d S d S ©NT)ro   Ú
_CANCELLEDrA   rC   rq   rž   r   ÚSendStatusFromServerOperationrv   rœ   Ú8_SEND_INITIAL_METADATA_AND_SEND_STATUS_FROM_SERVER_TOKENÚ_SEND_STATUS_FROM_SERVER_TOKENÚstart_server_batchr”   rx   r‚   Úadd)r<   rŸ   r2   rC   Úeffective_codeÚeffective_detailsÚ
operationsr‹   r.   r.   r/   Ú_abort
  s6   

üþ	üÿ
ÿär«   c                   ó   ‡ fdd„}|S )Nc                   sd   ˆ j �% | jd  ¡ rtˆ _nˆ jtu rtˆ _ˆ j  ¡  tˆ t	ƒW  d   ƒ S 1 s+w   Y  d S r+   )
rm   r,   r&   r¢   ro   rƒ   Ú_CLOSEDÚ
notify_allr�   Ú_RECEIVE_CLOSE_ON_SERVER_TOKEN)Úreceive_close_on_server_eventr?   r.   r/   r   -  s   

$úz9_receive_close_on_server.<locals>.receive_close_on_serverr.   )r<   r   r.   r?   r/   Ú_receive_close_on_server,  s   	r±   Úrequest_deserializerúOptional[DeserializingFunction]c                   ó   ‡ ‡‡fdd„}|S )Nc                   sÊ   t | ƒ}|d u r/ˆj� ˆjtu rtˆ_ˆj ¡  tˆtƒW  d   ƒ S 1 s(w   Y  d S t 	|ˆ¡}ˆj�# |d u rGt
ˆˆ tjjdƒ n|ˆ_ˆj ¡  tˆtƒW  d   ƒ S 1 s^w   Y  d S )Ns    Exception deserializing request!)r0   rm   ro   rƒ   r­   r®   r�   Ú_RECEIVE_MESSAGE_TOKENr   Údeserializer«   r   r8   Úinternalrn   )Úreceive_message_eventÚserialized_requestrn   ©rŸ   r²   r<   r.   r/   r!   >  s.   

$üÿü
$õz)_receive_message.<locals>.receive_messager.   )r<   rŸ   r²   r!   r.   rº   r/   Ú_receive_message9  s   r»   c                   r¬   )Nc                   s4   ˆ j � tˆ tƒW  d   ƒ S 1 sw   Y  d S r5   )rm   r�   Ú_SEND_INITIAL_METADATA_TOKEN)Ú"unused_send_initial_metadata_eventr?   r.   r/   r    [  r“   z5_send_initial_metadata.<locals>.send_initial_metadatar.   )r<   r    r.   r?   r/   Ú_send_initial_metadataZ  s   r¾   c                   r�   )Nc                   s>   ˆ j � ˆ j  ¡  tˆ ˆƒW  d   ƒ S 1 sw   Y  d S r5   )rm   r®   r�   )Úunused_send_message_eventr’   r.   r/   r"   c  s   
$þz#_send_message.<locals>.send_messager.   )r<   r‹   r"   r.   r’   r/   Ú_send_messageb  s   rÀ   c                   @  s  e Zd ZU ded< ded< ded< dLd	d
„ZdMdd„ZdNdd„ZdOdd„ZdPdd„ZdOdd„Z	dQdd„Z
dRdd „ZdSd"d#„ZdTd%d&„ZdUd(d)„ZdVd,d-„ZdWd0d1„ZdXd3d4„ZdQd5d6„ZdYd:d;„ZdZd>d?„Zd[d@dA„Zd\dBdC„Zd]dDdE„Zd^dGdH„ZdOdIdJ„ZdKS )_Ú_Contextr(   Ú
_rpc_eventr=   Ú_stater³   r²   Ú	rpc_eventr<   c                 C  ó   || _ || _|| _d S r5   )rÂ   rÃ   Ú_request_deserializer)rQ   rÄ   r<   r²   r.   r.   r/   r`   p  ó   
z_Context.__init__r)   rp   c                 C  s6   | j j� t| j ƒW  d   ƒ S 1 sw   Y  d S r5   )rÃ   rm   rŽ   rP   r.   r.   r/   Ú	is_activez  s   
$ÿz_Context.is_activeÚfloatc                 C  s   t | jjjt ¡  dƒS r+   )ÚmaxrÂ   Úcall_detailsÚdeadlineÚtimerP   r.   r.   r/   Útime_remaining~  s   z_Context.time_remainingr…   c                 C  s   | j j ¡  d S r5   )rÂ   rŸ   ÚcancelrP   r.   r.   r/   rÏ   �  s   z_Context.cancelÚcallbackr   c                 C  s\   | j j�  | j jd u r	 W d   ƒ dS | j j |¡ 	 W d   ƒ dS 1 s'w   Y  d S )NFT)rÃ   rm   rz   rˆ   )rQ   rÐ   r.   r.   r/   Úadd_callback„  s   
þ$ûz_Context.add_callbackc                 C  s6   | j j� d| j _W d   ƒ d S 1 sw   Y  d S r¡   )rÃ   rm   rt   rP   r.   r.   r/   Ú disable_next_message_compressionŒ  ó   

"ÿz)_Context.disable_next_message_compressionru   c                 C  ó   | j jS r5   )rÂ   rJ   rP   r.   r.   r/   rJ   �  ó   z_Context.invocation_metadatar\   c                 C  s   t  | jj ¡ ¡S r5   )r   ÚdecoderÂ   rŸ   ÚpeerrP   r.   r.   r/   r×   “  ó   z_Context.peerúOptional[Sequence[bytes]]c                 C  s   t  | jj¡S r5   )r   Úpeer_identitiesrÂ   rŸ   rP   r.   r.   r/   rÚ   –  r1   z_Context.peer_identitiesrL   c                 C  s$   t  | jj¡}|d u r|S t |¡S r5   )r   Úpeer_identity_keyrÂ   rŸ   r   rÖ   )rQ   Úid_keyr.   r.   r/   rÛ   ™  s   z_Context.peer_identity_keyúMapping[str, Sequence[bytes]]c                 C  s0   t  | jj¡}|d u ri n|}dd„ | ¡ D ƒS )Nc                 S  s   i | ]
\}}t  |¡|“qS r.   )r   rÖ   )Ú.0ÚkeyÚvaluer.   r.   r/   Ú
<dictcomp>   s    
ÿÿz)_Context.auth_context.<locals>.<dictcomp>)r   Úauth_contextrÂ   rŸ   Úitems)rQ   râ   Úauth_context_dictr.   r.   r/   râ   �  s
   þz_Context.auth_contextÚcompressionúgrpc.Compressionc                 C  ó6   | j j� || j _W d   ƒ d S 1 sw   Y  d S r5   )rÃ   rm   rs   )rQ   rå   r.   r.   r/   Úset_compression¥  rÓ   z_Context.set_compressionÚinitial_metadatar   c                 C  s¢   | j j�C | j jtu rt| j ƒ n&| j jr3t| j |ƒ}| jj 	|ft
| j ƒ¡ d| j _| j j t¡ ntdƒ‚W d   ƒ d S W d   ƒ d S 1 sJw   Y  d S )NFz#Initial metadata no longer allowed!)rÃ   rm   ro   r¢   rŠ   rq   rž   rÂ   rŸ   r¦   r¾   r‚   r§   r¼   Ú
ValueError)rQ   ré   r�   r.   r.   r/   r    ©  s"   
ÿÿôþ"ôz_Context.send_initial_metadatarv   c                 C  rç   r5   )rÃ   rm   rv   )rQ   rv   r.   r.   r/   Úset_trailing_metadataº  rÓ   z_Context.set_trailing_metadatac                 C  rÔ   r5   )rÃ   rv   rP   r.   r.   r/   rv   ¾  rÕ   z_Context.trailing_metadatar2   r3   rC   c                 C  sd   |t jjkrt d¡ t jj}d}| jj� || j_t	 
|¡| j_d| j_tƒ ‚1 s+w   Y  d S )Nz4abort() called with StatusCode.OK; returning UNKNOWNÚ T)r†   r8   ÚOKÚ_LOGGERÚerrorÚUNKNOWNrÃ   rm   r2   r   ÚencoderC   r{   Ú	Exception)rQ   r2   rC   r.   r.   r/   ÚabortÁ  s   ÿ
üz_Context.abortÚstatusúgrpc.Statusc                 C  s   |j | j_ |  |j|j¡ d S r5   )rv   rÃ   ró   r2   rC   )rQ   rô   r.   r.   r/   Úabort_with_statusÏ  s   
z_Context.abort_with_statusc                 C  rç   r5   )rÃ   rm   r2   )rQ   r2   r.   r.   r/   Úset_codeÓ  rÓ   z_Context.set_codec                 C  rÔ   r5   )rÃ   r2   rP   r.   r.   r/   r2   ×  rÕ   z_Context.codec                 C  s<   | j j� t |¡| j _W d   ƒ d S 1 sw   Y  d S r5   )rÃ   rm   r   rñ   rC   )rQ   rC   r.   r.   r/   Úset_detailsÚ  s   
"ÿz_Context.set_detailsr*   c                 C  rÔ   r5   )rÃ   rC   rP   r.   r.   r/   rC   Þ  rÕ   z_Context.detailsc                 C  rg   r5   r.   rP   r.   r.   r/   Ú_finalize_stateá  rh   z_Context._finalize_stateN)rÄ   r(   r<   r=   r²   r³   )r)   rp   )r)   rÉ   ©r)   r…   )rÐ   r   r)   rp   )r)   ru   )r)   r\   )r)   rÙ   rW   )r)   rÝ   )rå   ræ   r)   r…   )ré   r   r)   r…   )rv   r   r)   r…   )r2   r3   rC   r\   r)   r…   )rô   rõ   r)   r…   )r2   r3   r)   r…   )r)   r3   )rC   r\   r)   r…   )r)   r*   )rF   rG   rH   r„   r`   rÈ   rÎ   rÏ   rÑ   rÒ   rJ   r×   rÚ   rÛ   râ   rè   r    rë   rv   ró   rö   r÷   r2   rø   rC   rù   r.   r.   r.   r/   rÁ   k  s4   
 





















rÁ   c                   @  sl   e Zd ZU ded< ded< ded< dd
d„Zddd„Zddd„Zddd„Zddd„Zddd„Z	ddd„Z
dS ) Ú_RequestIteratorr=   rÃ   r    Ú_callr³   rÆ   r<   rŸ   r²   c                 C  rÅ   r5   )rÃ   rü   rÆ   )rQ   r<   rŸ   r²   r.   r.   r/   r`   ê  rÇ   z_RequestIterator.__init__r)   r…   c                 C  s`   | j jtu rt| j ƒ d S t| j ƒstƒ ‚| j t 	t
¡ft| j | j| jƒ¡ | j j t¡ d S r5   )rÃ   ro   r¢   rŠ   rŽ   ÚStopIterationrü   r¦   r   ÚReceiveMessageOperationrœ   r»   rÆ   r‚   r§   rµ   rP   r.   r.   r/   Ú_raise_or_start_receive_messageô  s   

ÿþz0_RequestIterator._raise_or_start_receive_messager   c                 C  sN   | j jtu rt| j ƒ tƒ ‚| j jd u rt| j jvrtƒ ‚| j j}d | j _|S r5   )	rÃ   ro   r¢   rŠ   rn   rµ   r‚   rý   ÚAssertionError©rQ   rn   r.   r.   r/   Ú_look_for_request  s   
÷z"_RequestIterator._look_for_requestc                 C  sX   | j j� |  ¡  	 | j j ¡  |  ¡ }|d ur!|W  d   ƒ S q
1 s%w   Y  d S r5   )rÃ   rm   rÿ   Úwaitr  r  r.   r.   r/   Ú_next  s   
úþz_RequestIterator._nextc                 C  s   | S r5   r.   rP   r.   r.   r/   Ú__iter__  rh   z_RequestIterator.__iter__c                 C  ó   |   ¡ S r5   ©r  rP   r.   r.   r/   Ú__next__  rÕ   z_RequestIterator.__next__c                 C  r  r5   r  rP   r.   r.   r/   Únext   rÕ   z_RequestIterator.nextN)r<   r=   rŸ   r    r²   r³   rú   )r)   r   )r)   rû   )rF   rG   rH   r„   r`   rÿ   r  r  r  r  r	  r.   r.   r.   r/   rû   å  s   
 





	
rû   rÄ   úCallable[[], Any]c                   r´   )Nc                    sú   ˆj �p tˆƒs	 W d   ƒ d S ˆj t t¡ftˆˆjˆ ƒ¡ ˆj 	t
¡ 	 ˆj  ¡  ˆjd u rcˆjtu rTd ˆjj¡} tˆˆjtjjt | ¡ƒ 	 W d   ƒ d S ˆjtu rb	 W d   ƒ d S nˆj}d ˆ_|W  d   ƒ S q(1 svw   Y  d S )NTz*"{}" requires exactly one request message.)rm   rŽ   rŸ   r¦   r   rþ   rœ   r»   r‚   r§   rµ   r  rn   ro   r­   ÚformatrË   rI   r«   r8   Úunimplementedr   rñ   r¢   )rC   rn   ©r²   rÄ   r<   r.   r/   Úunary_request)  sH   þ
ÿþ


ÿüè
æâõz%_unary_request.<locals>.unary_requestr.   )rÄ   r<   r²   r  r.   r  r/   Ú_unary_request$  s   !r  Úbehaviorr   Úargumentr   Úsend_response_callbackú(Optional[Callable[[ResponseType], None]]ú8Tuple[Union[ResponseType, Iterator[ResponseType]], bool]c                 C  sV  ddl m} || ||ƒ�•}zd }|d ur||||ƒ}n|||ƒ}|dfW W  d   ƒ S  ty  }	 zi|j�Q |jrEt|| jtjj	dƒ n;|	|j
vr€zd |	¡}
W n tym   d}
t t t|	ƒ|	|	j¡¡ t ¡  Y nw t |
¡ t|| jtjj	t |
¡ƒ W d   ƒ n1 sŠw   Y  W Y d }	~	W d   ƒ dS d }	~	ww 1 s¤w   Y  d S )Nr   )Ú_create_servicer_contextTó   RPC Abortedz!Exception calling application: {}z1Calling application raised unprintable Exception!©NF)r†   r  rò   rm   r{   r«   rŸ   r   r8   r9   ry   r  rî   Ú	exceptionÚ	tracebackÚformat_exceptionÚtypeÚ__traceback__Ú	print_excr   rñ   )rÄ   r<   r  r  r²   r  r  rl   Úresponse_or_iteratorr  rC   r.   r.   r/   Ú_call_behaviorM  sl   ÿÿ
õü
ÿÿýÿõ
ü€æ
 Ó€ôr  Úresponse_iteratorúIterator[ResponseType]úTuple[ResponseType, bool]c                 C  sÂ   zt |ƒdfW S  ty   Y dS  ty` } zD|j�2 |jr*t|| jtjj	dƒ n||j
vrFd |¡}t |¡ t|| jtjj	t |¡ƒ W d   ƒ n1 sPw   Y  W Y d }~dS d }~ww )NTr¡   r  z!Exception iterating responses: {}r  )r	  rý   rò   rm   r{   r«   rŸ   r   r8   r9   ry   r  rî   r  r   rñ   )rÄ   r<   r   r  rC   r.   r.   r/   Ú%_take_response_from_response_iterator‡  s6   ü


ü€õ€îr#  ÚresponseÚresponse_serializerúOptional[SerializingFunction]rw   c                 C  sX   t  ||¡}|d u r*|j� t|| jtjjdƒ W d   ƒ d S 1 s#w   Y  d S |S )Ns   Failed to serialize response!)r   Ú	serializerm   r«   rŸ   r   r8   r·   )rÄ   r<   r$  r%  Úserialized_responser.   r.   r/   Ú_serialize_response¥  s   ü
ÿùr)  úUnion[int, cygrpc.WriteFlag]c                 C  s   | j rtjjS tS r5   )rt   r   Ú	WriteFlagÚno_compressrœ   r?   r.   r.   r/   Ú%_get_send_message_op_flags_from_state¹  s   r-  c                 C  s2   | j � d| _W d   ƒ d S 1 sw   Y  d S r  )rm   rt   r?   r.   r.   r/   Ú_reset_per_message_stateÂ  s   "ÿr.  r(  rp   c                 C  sÎ   |j �Z t|ƒs	 W d   ƒ dS |jr't|d ƒt |t|ƒ¡f}d|_t}nt |t|ƒ¡f}t}| j	 
|t||ƒ¡ |j |¡ t|ƒ 	 |j  ¡  ||jvr\t|ƒW  d   ƒ S qG1 s`w   Y  d S r  )rm   rŽ   rq   rž   r   ÚSendMessageOperationr-  Ú-_SEND_INITIAL_METADATA_AND_SEND_MESSAGE_TOKENÚ_SEND_MESSAGE_TOKENrŸ   r¦   rÀ   r‚   r§   r.  r  )rÄ   r<   r(  rª   r‹   r.   r.   r/   Ú_send_responseÇ  s>   þþþþÿ
ÿ

âår2  c                 C  sÌ   |j �Y |jturTt|ƒ}t|ƒ}t |j||t¡g}|j	r&| 
t|d ƒ¡ |d ur5| 
t |t|ƒ¡¡ | j |t|tƒ¡ d|_t|ƒ |j t¡ W d   ƒ d S W d   ƒ d S 1 s_w   Y  d S r¡   )rm   ro   r¢   r@   rD   r   r£   rv   rœ   rq   rˆ   rž   r/  r-  rŸ   r¦   r”   r¥   rx   r.  r‚   r§   )rÄ   r<   r(  r2   rC   rª   r.   r.   r/   Ú_statusë  s6   

ÿÿþÿþè"ÿr3  Úargument_thunkc           
      C  sš   t  | ¡ zBz&|ƒ }|d ur+t| ||||ƒ\}}|r+t| |||ƒ}	|	d ur+t| ||	ƒ W n ty9   t ¡  Y nw W t  ¡  d S W t  ¡  d S t  ¡  w r5   )	r   Ú'install_context_from_request_call_eventr  r)  r3  rò   r  r  Úuninstall_context)
rÄ   r<   r  r4  r²   r%  r  r$  Úproceedr(  r.   r.   r/   Ú_unary_response_in_pool  s*   

ÿÿ€ÿ€þr8  c           
        s¾   t  ˆ¡ d	‡ ‡‡fdd„}zKz/|ƒ }|d ur=t|dƒr*|jr*tˆˆ||||d� ntˆˆ|||ƒ\}}	|	r=tˆˆ||ƒ W n tyK   t ¡  Y nw W t  	¡  d S W t  	¡  d S t  	¡  w )
Nr$  r   r)   r…   c                   sB   | d u rt ˆˆd ƒ d S tˆˆ| ˆ ƒ}|d urtˆˆ|ƒ d S d S r5   )r3  r)  r2  )r$  r(  ©r%  rÄ   r<   r.   r/   Úsend_response1  s   ÿÿz/_stream_response_in_pool.<locals>.send_responseÚexperimental_non_blocking)r  )r$  r   r)   r…   )
r   r5  Úhasattrr;  r  Ú3_send_message_callback_to_blocking_iterator_adapterrò   r  r  r6  )
rÄ   r<   r  r4  r²   r%  r:  r  r   r7  r.   r9  r/   Ú_stream_response_in_pool'  s@   

ÿþú	
ÿÿ€ÿ€þr>  c                 C  s   | j tuo| j S r5   )ro   r¢   rx   r?   r.   r.   r/   rŽ   X  rØ   rŽ   úCallable[[ResponseType], None]c                 C  s2   	 t | ||ƒ\}}|r||ƒ t|ƒsd S nd S qr5   )r#  rŽ   )rÄ   r<   r  r   r$  r7  r.   r.   r/   r=  \  s   ÿÿ÷r=  Údefault_thread_poolúfutures.ThreadPoolExecutorc                 C  s"   t | dƒrt| jtjƒr| jS |S )NÚexperimental_thread_pool)r<  Ú
isinstancerB  r   ÚThreadPoolExecutor)r  r@  r.   r.   r/   Ú _select_thread_pool_for_behaviorn  s
   ÿrE  rk   úgrpc.RpcMethodHandlerúfutures.Futurec              
   C  ó<   t | ||jƒ}t|j|ƒ}| |jjt| ||j||j|j¡S r5   )	r  r²   rE  Úunary_unaryÚsubmitrl   Úrunr8  r%  ©rÄ   r<   rk   r@  r  Úthread_poolr.   r.   r/   Ú_handle_unary_unaryz  ó    ÿÿørN  c              
   C  rH  r5   )	r  r²   rE  Úunary_streamrJ  rl   rK  r>  r%  rL  r.   r.   r/   Ú_handle_unary_stream’  rO  rQ  c              
     óF   t || j|jƒ‰ t|j|ƒ}| |jjt| ||j‡ fdd„|j|j	¡S )Nc                     ó   ˆ S r5   r.   r.   ©Úrequest_iteratorr.   r/   Ú<lambda>¼  ó    z&_handle_stream_unary.<locals>.<lambda>)
rû   rŸ   r²   rE  Ústream_unaryrJ  rl   rK  r8  r%  ©rÄ   r<   rk   r@  rM  r.   rT  r/   Ú_handle_stream_unaryª  ó    
ÿÿ
ørZ  c              
     rR  )Nc                     rS  r5   r.   r.   rT  r.   r/   rV  Ô  rW  z'_handle_stream_stream.<locals>.<lambda>)
rû   rŸ   r²   rE  Ústream_streamrJ  rl   rK  r>  r%  rY  r.   rT  r/   Ú_handle_stream_streamÂ  r[  r]  Úmethod_with_handlerÚinterceptor_pipelineú'Optional[_interceptor._ServicePipeline]rT   c                   s\   d‡ fdd„}ˆ   ¡ }|st | jj¡}t|| jƒ}|d ur'|j |j	||¡S |j ||¡S )NrS   rE   r)   rT   c                   s
   ˆ   | ¡S r5   )rV   )rS   ©r^  r.   r/   Úquery_handlersà  s   
z,_find_method_handler.<locals>.query_handlersrX   )
rR   r   rÖ   rË   rI   rE   rJ   rl   rK  Úexecute)rÄ   r<   r^  r_  rb  Úmethod_namerS   r.   ra  r/   Ú_find_method_handlerÚ  s   þÿre  Ú	rpc_staterô   c                   s<   t ˆ d ƒt t¡t d ||t¡f}| j |‡ fdd„¡ d S )Nc                   s   ˆ dfS rŒ   r.   )Úignored_event©rf  r.   r/   rV    s   þz_reject_rpc.<locals>.<lambda>)rž   r   ÚReceiveCloseOnServerOperationrœ   r£   rŸ   r¦   )rÄ   rf  rô   rC   rª   r.   rh  r/   Ú_reject_rpcö  s   ÿý
þrj  rM  c                 C  sÄ   |j �U | j t t¡ft|ƒ¡ |j t	¡ |j
r9|jr+t| |||ƒW  d   ƒ S t| |||ƒW  d   ƒ S |jrJt| |||ƒW  d   ƒ S t| |||ƒW  d   ƒ S 1 s[w   Y  d S r5   )rm   rŸ   r¦   r   ri  rœ   r±   r‚   r§   r¯   Úrequest_streamingÚresponse_streamingr]  rZ  rQ  rN  )rÄ   r<   rk   rM  r.   r.   r/   Ú_handle_with_method_handler  s2   
þÿøÿôÿïÿ$ërm  Úconcurrency_exceededú4Tuple[Optional[_RPCState], Optional[futures.Future]]c           	   
   C  sÜ   | j sdS | jjs| ¡ rltƒ }z	t| |||ƒ}W n) tyB } zd |¡}t 	|¡ t
| |tjjdƒ |dfW  Y d}~S d}~ww |du rTt
| |tjjdƒ |dfS |rct
| |tjjdƒ |dfS |t| |||ƒfS dS )aä  Handles RPC based on provided handlers.

      When receiving a call event from Core, registered method will have it's
    name as tag, we pass the tag as registered_method_name to this method,
    then we can find the handler in registered_method_handlers based on
    the method name.

      For call event with unregistered method, the method name will be included
    in rpc_event.call_details.method and we need to query the generics handlers
    to find the actual handler.
    )NNzException servicing handler: {}s   Error in service handler!Ns   Method not found!s   Concurrent RPC limit exceeded!)ÚsuccessrË   rI   rR   r=   re  rò   r  rî   r  rj  r   r8   r9   r  Úresource_exhaustedrm  )	rÄ   r^  r_  rM  rn  rf  rk   r  rC   r.   r.   r/   Ú_handle_call,  sZ   ü

ü€÷
üüÿþrr  c                   @  s   e Zd ZdZdZdZdS )Ú_ServerStageÚstoppedÚstartedÚgraceN)rF   rG   rH   ÚSTOPPEDÚSTARTEDÚGRACEr.   r.   r.   r/   rs  n  s    rs  c                   @  s�   e Zd ZU ded< ded< ded< ded< d	ed
< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< d#d d!„Zd"S )$Ú_ServerStatezthreading.RLockÚlockúcygrpc.CompletionQueueÚcompletion_queueúcygrpc.ServerÚserverre   rd   ú Dict[str, grpc.RpcMethodHandler]Úregistered_method_handlersr`  r_  rA  rM  rs  Ústageúthreading.EventÚtermination_eventzList[threading.Event]Úshutdown_eventsúOptional[int]Úmaximum_concurrent_rpcsÚintÚactive_rpc_countzSet[_RPCState]Ú
rpc_stateszSet[str]r‚   rp   Úserver_deallocatedú Sequence[grpc.GenericRpcHandler]c                 C  st   t  ¡ | _|| _|| _t|ƒ| _|| _|| _t	j
| _t  ¡ | _| jg| _|| _d| _i | _tƒ | _tƒ | _d| _d S )Nr   F)r   ÚRLockr{  r}  r  Úlistrd   r_  rM  rs  rw  r‚  ÚEventr„  r…  r‡  r‰  r�  r�   rŠ  r‚   r‹  )rQ   r}  r  rd   r_  rM  r‡  r.   r.   r/   r`   ‡  s   
	



z_ServerState.__init__N)r}  r|  r  r~  rd   rŒ  r_  r`  rM  rA  r‡  r†  )rF   rG   rH   r„   r`   r.   r.   r.   r/   rz  u  s"   
 rz  rd   ú Iterable[grpc.GenericRpcHandler]c                 C  ó8   | j � | j |¡ W d   ƒ d S 1 sw   Y  d S r5   )r{  rd   Úextend)r<   rd   r.   r.   r/   Ú_add_generic_handlers¥  ó   "ÿr“  Úmethod_handlersr€  c                 C  r‘  r5   )r{  r�  Úupdate)r<   r•  r.   r.   r/   Ú_add_registered_method_handlers¬  r”  r—  Úaddressrˆ  c                 C  s6   | j � | j |¡W  d   ƒ S 1 sw   Y  d S r5   )r{  r  Úadd_http2_port)r<   r˜  r.   r.   r/   Ú_add_insecure_port³  s   
$ÿrš  Úserver_credentialsúgrpc.ServerCredentialsc                 C  s:   | j � | j ||j¡W  d   ƒ S 1 sw   Y  d S r5   )r{  r  r™  Ú_credentials)r<   r˜  r›  r.   r.   r/   Ú_add_secure_port¸  s
   ÿ$ÿrž  c                 C  s$   | j  | j| jt¡ | j t¡ d S r5   )r  r   r}  Ú_REQUEST_CALL_TAGr‚   r§   r?   r.   r.   r/   Ú_request_callÃ  s   
ÿr   rI   c                 C  s*   |}| j  | j| j||¡ | j |¡ d S r5   )r  Úrequest_registered_callr}  r‚   r§   )r<   rI   Úregistered_call_tagr.   r.   r/   Ú_request_registered_callÊ  s   ür£  c                 C  s:   | j s| js| j ¡  | jD ]}| ¡  qtj| _dS dS r|   )	rŠ  r‚   r  Údestroyr…  r�   rs  rw  r‚  )r<   Úshutdown_eventr.   r.   r/   Ú_stop_servingÖ  s   


r¦  c                 C  s:   | j � |  jd8  _W d   ƒ d S 1 sw   Y  d S )Né   )r{  r‰  r?   r.   r.   r/   Ú_on_call_completedá  s   "ÿr¨  Úeventc           
   	     sh  d}|j tu r1ˆ j� ˆ j t¡ tˆ ƒrd}W d   ƒ |S W d   ƒ |S 1 s*w   Y  |S |j tu s>|j ˆ j ¡ v rãd }|j ˆ j ¡ v rV|j }t	|ˆ j 
|d ¡ƒ}ntˆ jƒ}ˆ j�{ ˆ j |j ¡ ˆ jd uopˆ jˆ jk}t||ˆ jˆ j|ƒ\}}|d ur‡ˆ j |¡ |d ur›ˆ  jd7  _| ‡ fdd„¡ ˆ jtju r³|ˆ j ¡ v r®tˆ |ƒ n#tˆ ƒ ntˆ ƒrÁd}W d   ƒ |S W d   ƒ |S W d   ƒ |S W d   ƒ |S 1 sÜw   Y  |S |  |¡\}}|D ]}	z|	ƒ  W qì t�y   t d¡ Y qìw |d u�r2ˆ j� ˆ j |¡ tˆ ƒ�r!d}W d   ƒ |S W d   ƒ |S 1 �s-w   Y  |S )NTFr§  c                   s   t ˆ ƒS r5   )r¨  )Úunused_futurer?   r.   r/   rV    s    z-_process_event_and_continue.<locals>.<lambda>zException calling callback!)ÚtagÚ_SHUTDOWN_TAGr{  r‚   r�   r¦  rŸ  r�  Úkeysr[   r7   rc   rd   r‡  r‰  rr  r_  rM  rŠ  r§   Úadd_done_callbackr‚  rs  rx  r£  r   rò   rî   r  )
r<   r©  Úshould_continueÚregistered_method_namer^  rn  rf  Ú
rpc_futurerz   rÐ   r.   r?   r/   Ú_process_event_and_continueç  s¬   

ý?Ã
þ?Á?
Æÿþÿ

þû
ÿÿ

ã*ò
ä*ñ
å*ï
ç*Ö*õ
ÿ


ýþ
þür²  c                 C  sJ   	 t   ¡ t }| j |¡}| jrt| ƒ |jtjj	kr"t
| |ƒs"d S d }qr5   )rÍ   Ú"_DEALLOCATED_SERVER_CHECK_PERIOD_Sr}  Úpollr‹  Ú_begin_shutdown_onceÚcompletion_typer   ÚCompletionTypeÚqueue_timeoutr²  )r<   Útimeoutr©  r.   r.   r/   Ú_serve.  s   
õrº  c                 C  sl   | j �) | jtju r$| j | jt¡ tj| _| j	 
t¡ W d   ƒ d S W d   ƒ d S 1 s/w   Y  d S r5   )r{  r‚  rs  rx  r  r   r}  r¬  ry  r‚   r§   r?   r.   r.   r/   rµ  =  s   ü"ÿrµ  rv  úOptional[float]rƒ  c                   sÆ   ˆj �R ˆjtju rt ¡ ‰ˆ ¡  ˆW  d   ƒ S tˆƒ t ¡ ‰ˆj 	ˆ¡ ˆ d u r3ˆj
 ¡  n‡ ‡‡fdd„}tj|d�}| ¡  ˆW  d   ƒ S W d   ƒ n1 sXw   Y  ˆ ¡  ˆS )Nc                     sB   ˆj ˆ d� ˆj� ˆj ¡  W d   ƒ d S 1 sw   Y  d S ©N)r¹  )r  r{  r  Úcancel_all_callsr.   ©rv  r¥  r<   r.   r/   Úcancel_all_calls_after_graceS  s   "ÿz+_stop.<locals>.cancel_all_calls_after_grace)Útarget)r{  r‚  rs  rw  r   r�  r�   rµ  r…  rˆ   r  r½  ÚThreadÚstartr  )r<   rv  r¿  Úthreadr.   r¾  r/   Ú_stopE  s(   üì
örÄ  c                 C  s’   | j �< | jtjurtdƒ‚| j ¡  tj| _| j 	¡ D ]}t
| |ƒ qt| ƒ tjt| fd�}d|_| ¡  W d   ƒ d S 1 sBw   Y  d S )Nz$Cannot start already-started server!)rÀ  ÚargsT)r{  r‚  rs  rw  rê   r  rÂ  rx  r�  r­  r£  r   r   rÁ  rº  Údaemon)r<   rI   rÃ  r.   r.   r/   Ú_start_  s   

"ôrÇ  Úgeneric_rpc_handlersc                 C  s0   | D ]}t |dd ƒ}|d u rtd |¡ƒ‚qd S )Nri   zT"{}" must conform to grpc.GenericRpcHandler type but does not have "service" method!)ÚgetattrÚAttributeErrorr  )rÈ  Úgeneric_rpc_handlerÚservice_attributer.   r.   r/   Ú_validate_generic_rpc_handlerso  s   þÿþrÍ  Úbase_optionsúSequence[ChannelArgumentType]rå   rr   c                 C  s   t  |¡}t| ƒ| S r5   )r   Úcreate_channel_optionr—   )rÎ  rå   Úcompression_optionr.   r.   r/   Ú_augment_options{  s   
rÒ  c                   @  sp   e Zd ZU ded< d4dd„Zd5dd„Zd6dd„Zd7d!d"„Zd8d%d&„Zd9d'd(„Z	d:d;d,d-„Z
d<d0d1„Zd2d3„ Zd)S )=Ú_Serverrz  rÃ   rM  rA  rd   rŒ  Úinterceptorsú Sequence[grpc.ServerInterceptor]ÚoptionsrÏ  r‡  r†  rå   rr   Úxdsrp   c           
      C  sH   t  ¡ }t  t||ƒ|¡}	|	 |¡ t||	|t |¡||ƒ| _|	| _	d S r5   )
r   ÚCompletionQueueÚServerrÒ  Úregister_completion_queuerz  r   Úservice_pipelinerÃ   Ú
_cy_server)
rQ   rM  rd   rÔ  rÖ  r‡  rå   r×  r}  r  r.   r.   r/   r`   ‡  s   

ú
z_Server.__init__rÈ  r�  r)   r…   c                 C  s   t |ƒ t| j|ƒ d S r5   )rÍ  r“  rÃ   )rQ   rÈ  r.   r.   r/   Úadd_generic_rpc_handlersž  s   z _Server.add_generic_rpc_handlersÚservice_namer\   r•  r€  c                   sˆ   | j j� | j jtju r	 W d   ƒ d S W d   ƒ n1 sw   Y  ‡ fdd„| ¡ D ƒ}| ¡ D ]}| j |¡ q3t	| j |ƒ d S )Nc                   s   i | ]\}}t  ˆ |¡|“qS r.   )r   Úfully_qualified_method)rÞ   rI   rk   ©rÞ  r.   r/   rá   ¯  s    ÿÿz:_Server.add_registered_method_handlers.<locals>.<dictcomp>)
rÃ   r{  r‚  rs  rx  rã   r­  rÜ  Úregister_methodr—  )rQ   rÞ  r•  Úmethod_to_handlersrß  r.   rà  r/   Úadd_registered_method_handlers¤  s   
þÿ
þz&_Server.add_registered_method_handlersr˜  rˆ  c                 C  s   t  |t| jt  |¡ƒ¡S r5   )r   Úvalidate_port_binding_resultrš  rÃ   rñ   )rQ   r˜  r.   r.   r/   Úadd_insecure_port·  s   ÿz_Server.add_insecure_portr›  rœ  c                 C  s   t  |t| jt  |¡|ƒ¡S r5   )r   rä  rž  rÃ   rñ   )rQ   r˜  r›  r.   r.   r/   Úadd_secure_port¼  s   ÿþz_Server.add_secure_portc                 C  s   t | jƒ d S r5   )rÇ  rÃ   rP   r.   r.   r/   rÂ  Æ  r1   z_Server.startNr¹  r»  c                 C  s   t j| jjj| jjj|d�S r¼  )r   r  rÃ   r„  Úis_set)rQ   r¹  r.   r.   r/   Úwait_for_terminationÉ  s
   ýz_Server.wait_for_terminationrv  rƒ  c                 C  s   t | j|ƒS r5   )rÄ  rÃ   )rQ   rv  r.   r.   r/   ÚstopÓ  s   z_Server.stopc                 C  s   t | dƒrd| j_d S d S )NrÃ   T)r<  rÃ   r‹  rP   r.   r.   r/   Ú__del__Ö  s   
ýz_Server.__del__)rM  rA  rd   rŒ  rÔ  rÕ  rÖ  rÏ  r‡  r†  rå   rr   r×  rp   ©rÈ  r�  r)   r…   )rÞ  r\   r•  r€  r)   r…   )r˜  r\   r)   rˆ  )r˜  r\   r›  rœ  r)   rˆ  rú   r5   )r¹  r»  r)   rp   )rv  r»  r)   rƒ  )rF   rG   rH   r„   r`   rÝ  rã  rå  ræ  rÂ  rè  ré  rê  r.   r.   r.   r/   rÓ  ƒ  s   
 








rÓ  rŒ  rÔ  rÕ  rÖ  r‡  r†  r×  c                 C  s   t |ƒ t| ||||||ƒS r5   )rÍ  rÓ  )rM  rÈ  rÔ  rÖ  r‡  rå   r×  r.   r.   r/   Úcreate_serverÝ  s   	ùrì  )r'   r(   r)   r*   )r2   r3   r)   r4   )r<   r=   r)   r4   )r<   r=   r2   r4   r)   r4   )r<   r=   r)   r*   )r<   r=   r)   r…   )r<   r=   r‹   r\   r)   r   )r<   r=   r‹   r\   r)   r   )r<   r=   r•   ru   r)   ru   )r<   r=   r•   ru   r)   rš   )
r<   r=   rŸ   r    r2   r4   rC   r*   r)   r…   )r<   r=   r)   r   )r<   r=   rŸ   r    r²   r³   r)   r   )rÄ   r(   r<   r=   r²   r³   r)   r
  r5   )rÄ   r(   r<   r=   r  r   r  r   r²   r³   r  r  r)   r  )rÄ   r(   r<   r=   r   r!  r)   r"  )
rÄ   r(   r<   r=   r$  r   r%  r&  r)   rw   )r<   r=   r)   r*  )rÄ   r(   r<   r=   r(  r*   r)   rp   )rÄ   r(   r<   r=   r(  rw   r)   r…   )rÄ   r(   r<   r=   r  r   r4  r
  r²   r&  r%  r&  r)   r…   )rÄ   r(   r<   r=   r  r   r4  r
  r²   r³   r%  r&  r)   r…   )r<   r=   r)   rp   )
rÄ   r(   r<   r=   r  r?  r   r!  r)   r…   )r  r   r@  rA  r)   rA  )
rÄ   r(   r<   r=   rk   rF  r@  rA  r)   rG  )
rÄ   r(   r<   r=   r^  rK   r_  r`  r)   rT   )rÄ   r(   rf  r=   rô   r4   rC   r*   )
rÄ   r(   r<   r=   rk   rF  rM  rA  r)   rG  )rÄ   r(   r^  rK   r_  r`  rM  rA  rn  rp   r)   ro  )r<   rz  rd   r�  r)   r…   )r<   rz  r•  r€  r)   r…   )r<   rz  r˜  r*   r)   rˆ  )r<   rz  r˜  r*   r›  rœ  r)   rˆ  )r<   rz  r)   r…   )r<   rz  rI   r\   r)   r…   )r<   rz  r)   rp   )r<   rz  r©  r(   r)   rp   )r<   rz  rv  r»  r)   rƒ  rë  )rÎ  rÏ  rå   rr   r)   rÏ  )rM  rA  rÈ  rŒ  rÔ  rÕ  rÖ  rÏ  r‡  r†  rå   rr   r×  rp   r)   rÓ  )‚Ú__doc__Ú
__future__r   rY   ÚcollectionsÚ
concurrentr   r}   ÚenumÚloggingr   rÍ   r  Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   r†   r   r   r   Úgrpc._cythonr   Úgrpc._typingr   r   r   r   r   r   r   r   r   Ú	getLoggerrF   rî   r¬  rŸ  r¯   r¼   rµ   r1  r0  r¥   r¤   rƒ   r­   r¢   rœ   r³  Ú_INF_TIMEOUTr0   r;   r@   rA   rD   Ú
namedtupleÚHandlerCallDetailsrE   ÚABCrK   r[   rc   Úobjectr=   rŠ   r�   r”   r™   rž   r«   r±   r»   r¾   rÀ   ÚServicerContextrÁ   rû   r  r  r#  r)  r-  r.  r2  r3  r8  r>  rŽ   r=  rE  rN  rQ  rZ  r]  re  rj  rm  rr  ÚuniqueÚEnumrs  rz  r“  r—  rš  rž  r   r£  r¦  r¨  r²  rº  rµ  rÄ  rÇ  rÍ  rÒ  rÙ  rÓ  rì  r.   r.   r.   r/   Ú<module>   sä   8
ÿÿ




	
þø
#




	
"

!
	z
?/ú
:
	$ 1 B0GZ