HEX
Server: LiteSpeed
System: Linux srv146.niagahoster.com 4.18.0-553.30.1.lve.el8.x86_64 #1 SMP Tue Dec 3 01:21:19 UTC 2024 x86_64
User: kodi1989 (1633)
PHP: 8.1.34
Disabled: symlink,shell_exec,exec,popen,system,dl,passthru,escapeshellarg,escapeshellcmd,show_source,pcntl_exec
Upload Files
File: //opt/alt/python37/lib64/python3.7/site-packages/grpc/__pycache__/_server.cpython-37.pyc
B

��f ��	@s�dZddlmZddlZddlmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
mZmZmZmZmZmZmZmZmZmZddlZddlmZddlmZddlmZdd	lmZdd
lmZddlm Z ddlm!Z!dd
lm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'e�(e)�Z*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8d Z9d!d"d#�d$d%�Z:d&d'd(�d)d*�Z;d+d'd,�d-d.�Z<d+d'd'd/�d0d1�Z=d+d"d,�d2d3�Z>Gd4d5�d5e�?d5d6�ej@�ZAGd7d+�d+eB�ZCd+d8d,�d9d:�ZDd+d;d<d=�d>d?�ZEd+d;d@d=�dAdB�ZFd+dCdCdD�dEdF�ZGd+dCdGdD�dHdI�ZHd+dJd'd"d8dK�dLdM�ZId+d@d,�dNdO�ZJd+dJdPd@dQ�dRdS�ZKd+d@d,�dTdU�ZLd+d;d@d=�dVdW�ZMGdXdY�dYejN�ZOGdZd[�d[eB�ZPd!d+dPd\d]�d^d_�ZQd�d!d+d`dadPdbdcdd�dedf�ZRd!d+dgdhdi�djdk�ZSd!d+dadldmdn�dodp�ZTd+dqd,�drds�ZUd+d8d,�dtdu�ZVd!d+d"dvdw�dxdy�ZWd!d+dmd8dw�dzd{�ZXd!d+d`d\dldld8d|�d}d~�ZYd!d+d`d\dPdld8d|�dd��ZZd+dvd,�d�d��Z[d!d+d�dgd8d��d�d��Z\d`d�d�d��d�d��Z]d!d+d�d�d�d��d�d��Z^d!d+d�d�d�d��d�d��Z_d!d+d�d�d�d��d�d��Z`d!d+d�d�d�d��d�d��Zad!d+d�d�d�d��d�d��Zbd!d+d'd"d��d�d��Zcd!d+d�d�d�d��d�d��Zdd!d�d�d�dvd�d��d�d��ZeejfGd�d��d�ejg��ZhGd�d��d�eB�Zid�d�d8d��d�d��Zjd�d"d�d��d�d��Zkd�d"d�d�d��d�d��Zld�d8d,�d�d��Zmd�dvd,�d�d��Znd�d8d,�d�d��Zod�d!dvd��d�d��Zpd�d8d,�d�d��Zqd�d8d,�d�d„Zrd�d�d�dŜd�dDŽZsd�d8d,�d�dɄZtd�d8dʜd�d̄Zud�d�d�dϜd�dфZvGd�dӄd�ejw�Zxd�d�d�d�d�d�dvd�dלd�dلZydS)�z+Service-side implementation of gRPC Python.�)�annotationsN)�futures)�Any�Callable�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�?ge��Azcygrpc.BaseEvent�bytes)�
request_event�returncCs|jd��S)Nr)�batch_operations�message)r'�r+�?/opt/alt/python37/lib64/python3.7/site-packages/grpc/_server.py�_serialized_requestRsr-zgrpc.StatusCodezcygrpc.StatusCode)�coder(cCs tj�|�}|dkrtjjS|S)N)rZ!STATUS_CODE_TO_CYGRPC_STATUS_CODE�getr�
StatusCode�unknown)r.Zcygrpc_coder+r+r,�_application_codeVsr2�	_RPCState)�stater(cCs |jdkrtjjSt|j�SdS)N)r.rr0�okr2)r4r+r+r,�_completion_code[s
r6)r4r.r(cCs|jdkr|St|j�SdS)N)r.r2)r4r.r+r+r,�_abortion_codebs
r7cCs|jdkrdS|jS)N�)�details)r4r+r+r,�_detailsksr:c@seZdZdS)�_HandlerCallDetailsN)�__name__�
__module__�__qualname__r+r+r+r,r;os
r;)�method�invocation_metadatac@s�eZdZUded<ded<eeZded<ded<d	ed
<ded<d	ed
<ded<ded<ded<d	ed<ded<ded<d	ed<dd�ZdS)r3zcontextvars.Context�contextzthreading.Condition�	conditionr�request�str�client�bool�initial_metadata_allowedzOptional[grpc.Compression]�compression_algorithm�disable_next_compressionzOptional[MetadataType]�trailing_metadatazOptional[grpc.StatusCode]r.zOptional[bytes]r9�statusedzList[Exception]�
rpc_errorsz#Optional[List[NullaryCallbackType]]�	callbacks�abortedcCsht��|_t��|_t�|_d|_t	|_
d|_d|_d|_
d|_d|_d|_d|_g|_g|_d|_dS)NTF)�contextvars�ContextrA�	threading�	ConditionrB�set�duerC�_OPENrErGrHrIrJr.r9rKrLrMrN)�selfr+r+r,�__init__�s

z_RPCState.__init__N)r<r=r>�__annotations__rrDrTrWr+r+r+r,r3|s 
�NonecCst��}|j�|�|�dS)N)�grpcZRpcErrorrL�append)r4Z	rpc_errorr+r+r,�_raise_rpc_error�sr\rDr)r4�tokenr(cCs6|j�|�t|�s.|js.|j}d|_||fSdSdS)N)Nr+)rT�remove�_is_rpc_state_activerM)r4r]rMr+r+r,�_possibly_finish_call�sr`rcs��fdd�}|S)Nc	s�j�t���SQRXdS)N)rBr`)Z$unused_send_status_from_server_event)r4r]r+r,r"�sz9_send_status_from_server.<locals>.send_status_from_serverr+)r4r]r"r+)r4r]r,�_send_status_from_server�srazOptional[MetadataType])r4�metadatar(c	CsH|j�8|jr6t�|j�f}|dkr(|S|t|�Sn|SWdQRXdS)N)rBrHrZ!compression_algorithm_to_metadata�tuple)r4rbZcompression_metadatar+r+r,�_get_initial_metadata�s
rdzcygrpc.OperationcCst�t||�t�}|S)N)rZSendInitialMetadataOperationrd�_EMPTY_FLAGS)r4rb�	operationr+r+r,�_get_initial_metadata_operation�srgzcygrpc.Call)r4�callr.r9r(cCs�|jtk	r�t||�}|jdkr"|n|j}|jrPt|d�t�|j||t	�f}t
}nt�|j||t	�f}t}|�|t
||��d|_|j�|�dS)NT)rE�
_CANCELLEDr7r9rGrgr�SendStatusFromServerOperationrJre�8_SEND_INITIAL_METADATA_AND_SEND_STATUS_FROM_SERVER_TOKEN�_SEND_STATUS_FROM_SERVER_TOKEN�start_server_batchrarKrT�add)r4rhr.r9Zeffective_codeZeffective_details�
operationsr]r+r+r,�_abort�s*

rpcs�fdd�}|S)Nc	sL�j�<|jd��rt�_n�jtkr.t�_�j��t�t	�SQRXdS)Nr)
rBr)r%rirErU�_CLOSED�
notify_allr`�_RECEIVE_CLOSE_ON_SERVER_TOKEN)Zreceive_close_on_server_event)r4r+r,r�s

z9_receive_close_on_server.<locals>.receive_close_on_serverr+)r4rr+)r4r,�_receive_close_on_server�s	rtzOptional[DeserializingFunction])r4rh�request_deserializerr(cs���fdd�}|S)Nc	s�t|�}|dkrD�j�&�jtkr(t�_�j��t�t�SQRXnPt�	|��}�j�8|dkrtt
��tjj
d�n|�_�j��t�t�SQRXdS)Ns Exception deserializing request!)r-rBrErUrqrrr`�_RECEIVE_MESSAGE_TOKENrZdeserializerprr0�internalrC)Zreceive_message_eventZserialized_requestrC)rhrur4r+r,r s&


z)_receive_message.<locals>.receive_messager+)r4rhrur r+)rhrur4r,�_receive_messagesrxcs�fdd�}|S)Nc	s�j�t�t�SQRXdS)N)rBr`�_SEND_INITIAL_METADATA_TOKEN)Z"unused_send_initial_metadata_event)r4r+r,r%sz5_send_initial_metadata.<locals>.send_initial_metadatar+)r4rr+)r4r,�_send_initial_metadata$srzcs��fdd�}|S)Nc	s&�j��j��t���SQRXdS)N)rBrrr`)Zunused_send_message_event)r4r]r+r,r!-s
z#_send_message.<locals>.send_messager+)r4r]r!r+)r4r]r,�
_send_message,sr{c@speZdZUded<ded<ded<dddd�dd	�Zd
d�dd
�Zdd�dd�Zdd�dd�Zdd
d�dd�Zdd�dd�Z	dd�dd�Z
dd�dd�Zd d�d!d"�Zd#d�d$d%�Z
d&d�d'd(�Zd)dd*�d+d,�Zd-dd.�d/d0�Zd-dd1�d2d3�Zdd�d4d5�Zd6ddd7�d8d9�Zd:dd;�d<d=�Zd6dd>�d?d@�Zd6d�dAdB�ZdddC�dDdE�ZdFd�dGdH�Zdd�dIdJ�ZdKS)L�_Contextzcygrpc.BaseEvent�
_rpc_eventr3�_statezOptional[DeserializingFunction]ru)�	rpc_eventr4rucCs||_||_||_dS)N)r}r~�_request_deserializer)rVrr4rur+r+r,rW:sz_Context.__init__rF)r(c	Cs|jj�t|j�SQRXdS)N)r~rBr_)rVr+r+r,�	is_activeDs
z_Context.is_active�floatcCst|jjjt��d�S)Nr)�maxr}�call_details�deadline�time)rVr+r+r,�time_remainingHsz_Context.time_remainingrYcCs|jj��dS)N)r}rh�cancel)rVr+r+r,r�Ksz_Context.cancelr)�callbackr(c	Cs:|jj�(|jjdkrdS|jj�|�dSWdQRXdS)NFT)r~rBrMr[)rVr�r+r+r,�add_callbackNs

z_Context.add_callbackc	Cs |jj�d|j_WdQRXdS)NT)r~rBrI)rVr+r+r,� disable_next_message_compressionVs
z)_Context.disable_next_message_compressionzOptional[MetadataType]cCs|jjS)N)r}r@)rVr+r+r,r@Zsz_Context.invocation_metadatarDcCst�|jj���S)N)r�decoder}rh�peer)rVr+r+r,r�]sz
_Context.peerzOptional[Sequence[bytes]]cCst�|jj�S)N)r�peer_identitiesr}rh)rVr+r+r,r�`sz_Context.peer_identitiesz
Optional[str]cCs$t�|jj�}|dkr|St�|�S)N)r�peer_identity_keyr}rhrr�)rVZid_keyr+r+r,r�csz_Context.peer_identity_keyzMapping[str, Sequence[bytes]]cCs0t�|jj�}|dkrin|}dd�|��D�S)NcSsi|]\}}|t�|��qSr+)rr�)�.0�key�valuer+r+r,�
<dictcomp>jsz)_Context.auth_context.<locals>.<dictcomp>)r�auth_contextr}rh�items)rVr�Zauth_context_dictr+r+r,r�gsz_Context.auth_contextzgrpc.Compression)�compressionr(c	Cs |jj�||j_WdQRXdS)N)r~rBrH)rVr�r+r+r,�set_compressionos
z_Context.set_compressionr)�initial_metadatar(c	Cs||jj�j|jjtkr"t|j�nL|jjrft|j|�}|jj�	|ft
|j��d|j_|jj�t
�ntd��WdQRXdS)NFz#Initial metadata no longer allowed!)r~rBrErir\rGrgr}rhrmrzrTrnry�
ValueError)rVr�rfr+r+r,rss

z_Context.send_initial_metadata)rJr(c	Cs |jj�||j_WdQRXdS)N)r~rBrJ)rVrJr+r+r,�set_trailing_metadata�s
z_Context.set_trailing_metadatacCs|jjS)N)r~rJ)rVr+r+r,rJ�sz_Context.trailing_metadatazgrpc.StatusCode)r.r9r(c	Cs^|tjjkr"t�d�tjj}d}|jj�*||j_t	�
|�|j_d|j_t
��WdQRXdS)Nz4abort() called with StatusCode.OK; returning UNKNOWN�T)rZr0�OK�_LOGGER�error�UNKNOWNr~rBr.r�encoder9rN�	Exception)rVr.r9r+r+r,�abort�s
z_Context.abortzgrpc.Status)�statusr(cCs|j|j_|�|j|j�dS)N)rJr~r�r.r9)rVr�r+r+r,�abort_with_status�s
z_Context.abort_with_status)r.r(c	Cs |jj�||j_WdQRXdS)N)r~rBr.)rVr.r+r+r,�set_code�s
z_Context.set_codecCs|jjS)N)r~r.)rVr+r+r,r.�sz
_Context.code)r9r(c	Cs&|jj�t�|�|j_WdQRXdS)N)r~rBrr�r9)rVr9r+r+r,�set_details�s
z_Context.set_detailsr&cCs|jjS)N)r~r9)rVr+r+r,r9�sz_Context.detailscCsdS)Nr+)rVr+r+r,�_finalize_state�sz_Context._finalize_stateN)r<r=r>rXrWr�r�r�r�r�r@r�r�r�r�r�rr�rJr�r�r�r.r�r9r�r+r+r+r,r|5s2

r|c@s�eZdZUded<ded<ded<dddd�dd	�Zd
d�dd
�Zdd�dd�Zdd�dd�Zdd�dd�Zdd�dd�Z	dd�dd�Z
dS)�_RequestIteratorr3r~zcygrpc.Call�_callzOptional[DeserializingFunction]r�)r4rhrucCs||_||_||_dS)N)r~r�r�)rVr4rhrur+r+r,rW�sz_RequestIterator.__init__rY)r(cCs`|jjtkrt|j�nDt|j�s*t��n2|j�t�	t
�ft|j|j|j��|jj
�t�dS)N)r~rErir\r_�
StopIterationr�rmr�ReceiveMessageOperationrerxr�rTrnrv)rVr+r+r,�_raise_or_start_receive_message�s

z0_RequestIterator._raise_or_start_receive_messagercCsV|jjtkrt|j�n4|jjdkr8t|jjkr8t��n|jj}d|j_|St��dS)N)	r~rErir\rCrvrTr��AssertionError)rVrCr+r+r,�_look_for_request�sz"_RequestIterator._look_for_requestc	CsF|jj�4|��x$|jj��|��}|dk	r|SqWWdQRXdS)N)r~rBr��waitr�)rVrCr+r+r,�_next�s
z_RequestIterator._nextcCs|S)Nr+)rVr+r+r,�__iter__�sz_RequestIterator.__iter__cCs|��S)N)r�)rVr+r+r,�__next__�sz_RequestIterator.__next__cCs|��S)N)r�)rVr+r+r,�next�sz_RequestIterator.nextN)r<r=r>rXrWr�r�r�r�r�r�r+r+r+r,r��s

	r�zCallable[[], Any])rr4rur(cs���fdd�}|S)Nc	s��j��t��sdS�j�t�t�ft��j����j�	t
�xn�j���jdkr��j
tkr�d��jj�}t��jtjjt�|��dS�j
tkr�dSqB�j}d�_|SqBWWdQRXdS)Nz*"{}" requires exactly one request message.)rBr_rhrmrr�rerxrTrnrvr�rCrErq�formatr�r?rpr0�
unimplementedrr�ri)r9rC)rurr4r+r,�
unary_request�s2





z%_unary_request.<locals>.unary_requestr+)rr4rur�r+)rurr4r,�_unary_request�s!r�rrz(Optional[Callable[[ResponseType], None]]z8Tuple[Union[ResponseType, Iterator[ResponseType]], bool])rr4�behavior�argumentru�send_response_callbackr(cCs"ddlm}||||����}y,d}|dk	r8||||�}n
|||�}|dfStk
�r}	z�|j��|jr�t||jtjj	d�nx|	|j
kr�yd�|	�}
Wn:tk
r�d}
t�
t�t|	�|	|	j��t��YnXt�
|
�t||jtjj	t�|
��WdQRXdSd}	~	XYnXWdQRXdS)Nr)�_create_servicer_contextTsRPC Abortedz!Exception calling application: {}z1Calling application raised unprintable Exception!)NF)rZr�r�rBrNrprhrr0r1rLr�r��	exception�	traceback�format_exception�type�
__traceback__�	print_excrr�)rr4r�r�rur�r�rAZresponse_or_iteratorr�r9r+r+r,�_call_behaviorsL




r�zIterator[ResponseType]zTuple[ResponseType, bool])rr4�response_iteratorr(cCs�yt|�dfStk
r dStk
r�}zj|j�Z|jrTt||jtjj	d�n8||j
kr�d�|�}t�
|�t||jtjj	t�|��WdQRXdSd}~XYnXdS)NT)NTsRPC Abortedz!Exception iterating responses: {})NF)r�r�r�rBrNrprhrr0r1rLr�r�r�rr�)rr4r�r�r9r+r+r,�%_take_response_from_response_iteratorQs*


r�zOptional[SerializingFunction]zOptional[bytes])rr4�response�response_serializerr(c	CsFt�||�}|dkr>|j�t||jtjjd�WdQRXdS|SdS)NsFailed to serialize response!)r�	serializerBrprhrr0rw)rr4r�r��serialized_responser+r+r,�_serialize_responseosr�zUnion[int, cygrpc.WriteFlag]cCs|jrtjjStSdS)N)rIrZ	WriteFlagZno_compressre)r4r+r+r,�%_get_send_message_op_flags_from_state�sr�c	Cs|j�d|_WdQRXdS)NF)rBrI)r4r+r+r,�_reset_per_message_state�sr�rF)rr4r�r(c	Cs�|j��t|�sdS|jr@t|d�t�|t|��f}d|_t}nt�|t|��f}t}|j	�
|t||��|j�
|�t|�x |j��||jkr�t|�Sq�WWdQRXdS)NF)rBr_rGrgr�SendMessageOperationr��-_SEND_INITIAL_METADATA_AND_SEND_MESSAGE_TOKEN�_SEND_MESSAGE_TOKENrhrmr{rTrnr�r�)rr4r�ror]r+r+r,�_send_response�s,

r�c	Cs�|j��|jtk	r�t|�}t|�}t�|j||t�g}|j	rL|�
t|d��|dk	rj|�
t�|t
|���|j�|t|t��d|_t|�|j�t�WdQRXdS)NT)rBrErir6r:rrjrJrerGr[rgr�r�rhrmrarlrKr�rTrn)rr4r�r.r9ror+r+r,�_status�s&
r�)rr4r��argument_thunkrur�r(c
Cs�t�|�znyL|�}|dk	rVt|||||�\}}|rVt||||�}	|	dk	rVt|||	�Wntk
rtt��YnXWdt��XdS)N)	r�'install_context_from_request_call_eventr�r�r�r�r�r��uninstall_context)
rr4r�r�rur�r�r��proceedr�r+r+r,�_unary_response_in_pool�s
r�c
s�t���ddd����fdd�}z�y^|�}|dk	r�t|d�rZ|jrZt��||||d�n&t��|||�\}}	|	r�t��||�Wntk
r�t��YnXWdt�	�XdS)NrrY)r�r(cs<|dkrt��d�n"t��|��}|dk	r8t��|�dS)N)r�r�r�)r�r�)r�rr4r+r,�
send_response�sz/_stream_response_in_pool.<locals>.send_response�experimental_non_blocking)r�)
rr��hasattrr�r��3_send_message_callback_to_blocking_iterator_adapterr�r�r�r�)
rr4r�r�rur�r�r�r�r�r+)r�rr4r,�_stream_response_in_pool�s,



r�cCs|jtk	o|jS)N)rErirK)r4r+r+r,r_"sr_zCallable[[ResponseType], None])rr4r�r�r(cCs4x.t|||�\}}|r*||�t|�s,PqPqWdS)N)r�r_)rr4r�r�r�r�r+r+r,r�&sr�zfutures.ThreadPoolExecutor)r��default_thread_poolr(cCs&t|d�rt|jtj�r|jS|SdS)N�experimental_thread_pool)r��
isinstancer�rZThreadPoolExecutor)r�r�r+r+r,� _select_thread_pool_for_behavior8sr�zgrpc.RpcMethodHandlerzfutures.Future)rr4�method_handlerr�r(c
Cs<t|||j�}t|j|�}|�|jjt|||j||j|j�S)N)	r�rur�Zunary_unary�submitrA�runr�r�)rr4r�r�r��thread_poolr+r+r,�_handle_unary_unaryDs
r�c
Cs<t|||j�}t|j|�}|�|jjt|||j||j|j�S)N)	r�rur�Zunary_streamr�rAr�r�r�)rr4r�r�r�r�r+r+r,�_handle_unary_stream\s
r�c
sFt||j|j��t|j|�}|�|jjt|||j�fdd�|j|j	�S)Ncs�S)Nr+r+)�request_iteratorr+r,�<lambda>�r8z&_handle_stream_unary.<locals>.<lambda>)
r�rhrur�Zstream_unaryr�rAr�r�r�)rr4r�r�r�r+)r�r,�_handle_stream_unaryts

r�c
sFt||j|j��t|j|�}|�|jjt|||j�fdd�|j|j	�S)Ncs�S)Nr+r+)r�r+r,r��r8z'_handle_stream_stream.<locals>.<lambda>)
r�rhrur�Z
stream_streamr�rAr�r�r�)rr4r�r�r�r+)r�r,�_handle_stream_stream�s

r�zList[grpc.GenericRpcHandler]z'Optional[_interceptor._ServicePipeline]zOptional[grpc.RpcMethodHandler])rr4�generic_handlers�interceptor_pipeliner(csVddd��fdd�}tt�|jj�|j�}|dk	rD|j�|j||�S|j�||�SdS)Nr;zOptional[grpc.RpcMethodHandler])�handler_call_detailsr(cs(x"�D]}|�|�}|dk	r|SqWdS)N)�service)r�Zgeneric_handlerr�)r�r+r,�query_handlers�s


z,_find_method_handler.<locals>.query_handlers)	r;rr�r�r?r@rAr��execute)rr4r�r�r�r�r+)r�r,�_find_method_handler�s	r�)r�	rpc_stater�r9cs<t�d�t�t�t�d||t�f}|j�|�fdd��dS)Ncs�dfS)Nr+r+)Z
ignored_event)r�r+r,r��sz_reject_rpc.<locals>.<lambda>)rgr�ReceiveCloseOnServerOperationrerjrhrm)rr�r�r9ror+)r�r,�_reject_rpc�sr�)rr4r�r�r(c	Cs�|j�x|j�t�t�ft|��|j�t	�|j
rX|jrHt||||�St
||||�Sn"|jrlt||||�St||||�SWdQRXdS)N)rBrhrmrr�rertrTrnrsZrequest_streamingZresponse_streamingr�r�r�r�)rr4r�r�r+r+r,�_handle_with_method_handler�s 

r�z4Tuple[Optional[_RPCState], Optional[futures.Future]])rr�r�r��concurrency_exceededr(c	
Cs�|js
dS|jjdk	r�t�}yt||||�}WnLtk
rz}z.d�|�}t�|�t	||t
jjd�|dfSd}~XYnX|dkr�t	||t
jj
d�|dfS|r�t	||t
jjd�|dfS|t||||�fSndSdS)N)NNzException servicing handler: {}sError in service handler!sMethod not found!sConcurrent RPC limit exceeded!)�successr�r?r3r�r�r�r�r�r�rr0r1r�Zresource_exhaustedr�)	rr�r�r�r�r�r�r�r9r+r+r,�_handle_call�sD

r�c@seZdZdZdZdZdS)�_ServerStage�stopped�started�graceN)r<r=r>�STOPPED�STARTED�GRACEr+r+r+r,r�*sr�c@s�eZdZUded<ded<ded<ded<d	ed
<ded<d
ed<ded<ded<ded<ded<ded<ded<ded<dddd	ddd�dd �Zd!S)"�_ServerStatezthreading.RLock�lockzcygrpc.CompletionQueue�completion_queuez
cygrpc.Server�serverzList[grpc.GenericRpcHandler]r�z'Optional[_interceptor._ServicePipeline]r�zfutures.ThreadPoolExecutorr�r��stagezthreading.Event�termination_eventzList[threading.Event]�shutdown_eventsz
Optional[int]�maximum_concurrent_rpcs�int�active_rpc_countzSet[_RPCState]�
rpc_stateszSet[str]rTrF�server_deallocatedz Sequence[grpc.GenericRpcHandler])rrr�r�r�rcCsnt��|_||_||_t|�|_||_||_t	j
|_t��|_
|j
g|_||_d|_t�|_t�|_d|_dS)NrF)rQ�RLockr�rr�listr�r�r�r�r�r�EventrrrrrSrrTr	)rVrrr�r�r�rr+r+r,rWBs	



z_ServerState.__init__N)r<r=r>rXrWr+r+r+r,r�1s
r�z Iterable[grpc.GenericRpcHandler])r4r�r(c	Cs"|j�|j�|�WdQRXdS)N)r�r��extend)r4r�r+r+r,�_add_generic_handlers_srr)r4�addressr(c	Cs|j�|j�|�SQRXdS)N)r�r�add_http2_port)r4rr+r+r,�_add_insecure_portfsrzgrpc.ServerCredentials)r4r�server_credentialsr(c	Cs"|j�|j�||j�SQRXdS)N)r�rrZ_credentials)r4rrr+r+r,�_add_secure_portksrcCs$|j�|j|jt�|j�t�dS)N)rrr�_REQUEST_CALL_TAGrTrn)r4r+r+r,�
_request_callvsrcCsB|js:|js:|j��x|jD]}|��qWtj|_dSdSdS)NTF)	rrTr�destroyrrSr�r�r)r4�shutdown_eventr+r+r,�
_stop_serving~s
rc	Cs$|j�|jd8_WdQRXdS)N�)r�r)r4r+r+r,�_on_call_completed�sr)r4�eventr(c	sxd}|jtkr<�j��j�t�t��r.d}WdQRX�n8|jtkr�j���j�t��jdk	on�j�jk}t	|�j
�j�j|�\}}|dk	r��j
�|�|dk	rƈjd7_|��fdd���jtjkr�t��nt��r�d}WdQRXn�|�|�\}}x:|D]2}y
|�Wn tk
�r6t�d�YnX�qW|dk	�rt�j� �j
�|�t���rjd}WdQRX|S)NTFrcst��S)N)r)Z
unused_future)r4r+r,r��r8z-_process_event_and_continue.<locals>.<lambda>zException calling callback!)�tag�
_SHUTDOWN_TAGr�rTr^rrrrr�r�r�r�rrnZadd_done_callbackrr�r�rr�r�r�)r4rZshould_continuer�r�Z
rpc_futurerMr�r+)r4r,�_process_event_and_continue�sN








rcCsPxJt��t}|j�|�}|jr(t|�|jtjj	krDt
||�sDdSd}qWdS)N)r��"_DEALLOCATED_SERVER_CHECK_PERIOD_Sr�pollr	�_begin_shutdown_once�completion_typerZCompletionTypeZ
queue_timeoutr)r4�timeoutrr+r+r,�_serve�s
r$c	CsF|j�6|jtjkr8|j�|jt�tj|_|j	�
t�WdQRXdS)N)r�rr�r�rrrrr�rTrn)r4r+r+r,r!�s
r!zOptional[float]zthreading.Event)r4r�r(c	s��j�~�jtjkr(t�������St��t����j�	���dkrX�j
��n(���fdd�}tj|d�}|�
��SWdQRX����S)Nc	s,�j�d��j��j��WdQRXdS)N)r#)r�r�r�cancel_all_callsr+)r�rr4r+r,�cancel_all_calls_after_grace�sz+_stop.<locals>.cancel_all_calls_after_grace)�target)r�rr�r�rQrrSr!rr[rr%�Thread�startr�)r4r�r&�threadr+)r�rr4r,�_stop�s r+c	Csb|j�R|jtjk	rtd��|j��tj|_t|�t	j
t|fd�}d|_|��WdQRXdS)Nz$Cannot start already-started server!)r'�argsT)
r�rr�r�r�rr)r�rrQr(r$�daemon)r4r*r+r+r,�_start�s
r.)�generic_rpc_handlersr(cCs4x.|D]&}t|dd�}|dkrtd�|���qWdS)Nr�zT"{}" must conform to grpc.GenericRpcHandler type but does not have "service" method!)�getattr�AttributeErrorr�)r/Zgeneric_rpc_handlerZservice_attributer+r+r,�_validate_generic_rpc_handlers�s
r2zSequence[ChannelArgumentType]zOptional[grpc.Compression])�base_optionsr�r(cCst�|�}t|�|S)N)rZcreate_channel_optionrc)r3r�Zcompression_optionr+r+r,�_augment_optionss
r4c@s�eZdZUded<ddddddd	d
�dd�Zd
dd�dd�Zddd�dd�Zdddd�dd�Zdd�dd�Zd)dd	d �d!d"�Z	dd#d$�d%d&�Z
d'd(�ZdS)*�_Serverr�r~zfutures.ThreadPoolExecutorz Sequence[grpc.GenericRpcHandler]z Sequence[grpc.ServerInterceptor]zSequence[ChannelArgumentType]z
Optional[int]zOptional[grpc.Compression]rF)r�r��interceptors�optionsrr��xdsc
CsBt��}t�t||�|�}	|	�|�t||	|t�|�||�|_dS)N)	rZCompletionQueue�Serverr4Zregister_completion_queuer�rZservice_pipeliner~)
rVr�r�r6r7rr�r8rrr+r+r,rWs

z_Server.__init__z Iterable[grpc.GenericRpcHandler]rY)r/r(cCst|�t|j|�dS)N)r2rr~)rVr/r+r+r,�add_generic_rpc_handlers*sz _Server.add_generic_rpc_handlersrDr)rr(cCst�|t|jt�|���S)N)r�validate_port_binding_resultrr~r�)rVrr+r+r,�add_insecure_port0sz_Server.add_insecure_portzgrpc.ServerCredentials)rrr(cCst�|t|jt�|�|��S)N)rr;rr~r�)rVrrr+r+r,�add_secure_port5sz_Server.add_secure_port)r(cCst|j�dS)N)r.r~)rVr+r+r,r)?sz
_Server.startNzOptional[float])r#r(cCstj|jjj|jjj|d�S)N)r#)rr�r~r�is_set)rVr#r+r+r,�wait_for_terminationBsz_Server.wait_for_terminationzthreading.Event)r�r(cCst|j|�S)N)r+r~)rVr�r+r+r,�stopLsz_Server.stopcCst|d�rd|j_dS)Nr~T)r�r~r	)rVr+r+r,�__del__Os
z_Server.__del__)N)r<r=r>rXrWr:r<r=r)r?r@rAr+r+r+r,r5s


r5z Sequence[grpc.GenericRpcHandler]z Sequence[grpc.ServerInterceptor]z
Optional[int])r�r/r6r7rr�r8r(cCst|�t|||||||�S)N)r2r5)r�r/r6r7rr�r8r+r+r,�
create_serverVs	rB)N)z�__doc__�
__future__r�collectionsZ
concurrentrrO�enum�loggingrQr�r��typingrrrrrr	r
rrr
rrZrrrZgrpc._cythonrZgrpc._typingrrrrrrrrr�	getLoggerr<r�rrrsryrvr�r�rlrkrUrqrirerZ_INF_TIMEOUTr-r2r6r7r:�
namedtupleZHandlerCallDetailsr;�objectr3r\r`rardrgrprtrxrzr{ZServicerContextr|r�r�r�r�r�r�r�r�r�r�r�r_r�r�r�r�r�r�r�r�r�r��unique�Enumr�r�rrrrrrrr$r!r+r.r2r4r9r5rBr+r+r+r,�<module>s�4
	
#	"
!	z?/4	$ 1 4
.1F