;idZddlmZddlZddlZddlmZddlZddlZddl Z ddl Z ddl Z ddl Z ddl mZmZmZmZmZmZmZmZmZmZmZmZddlZddlmZddlmZddlmZdd lmZdd lm Z dd l!m"Z"dd l!m#Z#dd l!m$Z$ddl!m%Z%ddl!m&Z&ddl!m'Z'ddl!m(Z(ddl!m)Z)ddl!m*Z*ddl+m,Z,e j-e.Z/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:d Z;dZdd'Z?dd+Z@dd.ZAdd/ZBdd0ZCGd1d2ejDd2d3ejEZFGd4d5ejGZHGd6d7eHZIGd8d9eHZJGd:d-eKZLdd<ZMdd@ZNddBZOddEZPddGZQddKZRddLZSddOZTddPZUddQZVGdRdSejWZXGdTdUeKZYddXZZ ddd`Z[dddZ\ddiZ]ddkZ^ddlZ_ddoZ`ddpZaddrZbddsZcddtZdddvZeddyZfdd}Zgdd~ZhddZiddZjddZkddZlddZmddZnejoGddejpZqGddeKZrddZsddZtddZuddZvddZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~ddZddZddZGddejZddZdS)z+Service-side implementation of gRPC Python.) annotationsN)futures) AnyCallableDictIterableIteratorListMappingOptionalSequenceSetTupleUnion)_common) _compression) _interceptor)_observability)cygrpc)ArityAgnosticMethodHandler)ChannelArgumentType)DeserializingFunction) MetadataType)NullaryCallbackType) ResponseType)SerializingFunction)ServerCallbackTag)ServerTagCallbackType)overrideshutdown request_callreceive_close_on_serversend_initial_metadatareceive_message send_messagez$send_initial_metadata * send_messagesend_status_from_serverz/send_initial_metadata * send_status_from_serveropenclosed cancelledg?geA request_eventcygrpc.BaseEventreturnbytesc@|jdSNr)batch_operationsmessage)r*s @C:\PYTHON\MyICR_Workspace\venv\Lib\site-packages\grpc/_server.py_serialized_requestr3Vs  )! , 4 4 6 66codegrpc.StatusCodecygrpc.StatusCodecjtj|}|tjjn|SN)r!STATUS_CODE_TO_CYGRPC_STATUS_CODEgetr StatusCodeunknown)r5 cygrpc_codes r2_application_coder?Zs.;??EEK(3(;6  $ $Lr4state _RPCStatecZ|jtjjSt |jSr9)r5rr<okr?r@s r2_completion_coderE_s& z ## UZ ( ((r4c<|j|St|jSr9)r5r?)r@r5s r2_abortion_coderGes! z UZ ( ((r4c"|jdn|jS)Nr4)detailsrDs r2_detailsrJms-'33U]:r4ceZdZdS)_HandlerCallDetailsN)__name__ __module__ __qualname__r4r2rLrLqs Dr4rL)methodinvocation_metadatacReZdZejd dZejd dZdS) _Methodr, Optional[str]ctr9NotImplementedErrorselfs r2namez _Method.names!###r4handler_call_detailsrLOptional[grpc.RpcMethodHandler]ctr9rWrZr\s r2handlerz_Method.handlers"###r4Nr,rUr\rLr,r])rMrNrOabcabstractmethodr[r`rPr4r2rTrT~sZ$$$$ $$$$$$r4rTcFeZdZd dZeddZedd Zd S)_RegisteredMethodr[strregistered_handlerr]c"||_||_dSr9)_name_registered_handler)rZr[rhs r2__init__z_RegisteredMethod.__init__s  #5   r4r,rUc|jSr9)rjrYs r2r[z_RegisteredMethod.names zr4r\rLc|jSr9)rkr_s r2r`z_RegisteredMethod.handlers ''r4N)r[rgrhr]rarbrMrNrOrlrr[r`rPr4r2rfrfsh6666X(((X(((r4rfcFeZdZd dZed dZedd Zd S)_GenericMethodgeneric_handlersList[grpc.GenericRpcHandler]c||_dSr9)_generic_handlers)rZrrs r2rlz_GenericMethod.__init__s"2r4r,rUcdSr9rPrYs r2r[z_GenericMethod.namestr4r\rLr]cP|jD]}||}||cSdSr9)ruservice)rZr\generic_handlermethod_handlers r2r`z_GenericMethod.handlersF $5 & &O,445IJJN)%%%%*tr4N)rrrsrarbrorPr4r2rqrqsh2222 X   X   r4rqceZdZUded<ded<eeZded<ded<d ed <d ed <d ed <ded<ded<ded<d ed<ded<ded<d ed<dZdS)rAzcontextvars.Contextcontextzthreading.Condition conditionrrequestrgclientboolinitial_metadata_allowedOptional[grpc.Compression]compression_algorithmdisable_next_compressionOptional[MetadataType]trailing_metadatazOptional[grpc.StatusCode]r5Optional[bytes]rIstatusedzList[Exception] rpc_errorsz#Optional[List[NullaryCallbackType]] callbacksabortedc>tj|_tj|_t |_d|_t|_ d|_ d|_ d|_ d|_d|_d|_d|_g|_g|_d|_dSNTF) contextvarsContextr| threading Conditionr}setduer~_OPENrrrrrr5rIrrrrrYs r2rlz_RPCState.__init__s"*,, ",..55  (,%%)"(-%!%    r4N)rMrNrO__annotations__rrgrrlrPr4r2rArAs    """" c(CLLLKKK""""5555""""----####NNN2222MMMr4Nonec`tj}|j||r9)grpcRpcErrorrappend)r@ rpc_errors r2_raise_rpc_errorrs) I I&&& Or4tokenrgrc|j|t|s|js|j}d|_||fSdS)NNrP)rremove_is_rpc_state_activer)r@rrs r2_possibly_finish_callrsQ IU  & & uy O i 8r4rcfd}|S)Ncfj5tcdddS#1swxYwYdSr9)r}r)$unused_send_status_from_server_eventr@rs r2r&z9_send_status_from_server..send_status_from_servers| _ 7 7(66 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s &**rP)r@rr&s`` r2_send_status_from_serverrs*777777 #"r4metadatarc|j5|jrHtj|jf}||cdddS|t |zcdddS|cdddS#1swxYwYdSr9)r}rr!compression_algorithm_to_metadatatuple)r@rcompression_metadatas r2_get_initial_metadatars      & :>/$ +        (%//9                          s%A&A&A&&A*-A*cygrpc.OperationcVtjt||t}|Sr9)rSendInitialMetadataOperationr _EMPTY_FLAGS)r@r operations r2_get_initial_metadata_operationrs-3eX.. I r4call cygrpc.CallrIc|jturt||}|j|n|j}|jr9t |dt j|j||tf}t}n)t j|j||tf}t}| |t||d|_|j|dSdSNT)r _CANCELLEDrGrIrrrSendStatusFromServerOperationrr8_SEND_INITIAL_METADATA_AND_SEND_STATUS_FROM_SERVER_TOKEN_SEND_STATUS_FROM_SERVER_TOKENstart_server_batchrrradd)r@rr5rIeffective_codeeffective_details operationsrs r2_abortr s |:%%'t44',}'>    e9&%r4cfd}|S)Nc.j5|jdr t_njt ur t _jttcdddS#1swxYwYdSr/) r}r0r)rrr_CLOSED notify_allr_RECEIVE_CLOSE_ON_SERVER_TOKEN)receive_close_on_server_eventr@s r2r"z9_receive_close_on_server..receive_close_on_server.s _ P P,=a@JJLL ') &&& O & & ( ( ((0NOO  P P P P P P P P P P P P P P P P P PsA4B  BBrP)r@r"s` r2_receive_close_on_serverr-s)PPPPP #"r4request_deserializerOptional[DeserializingFunction]cfd}|S)Nct|}|ij5jtur t_jt tcdddS#1swxYwYdStj |}j5|"ttj j dn|_jt tcdddS#1swxYwYdS)Ns Exception deserializing request!)r3r}rrrrr_RECEIVE_MESSAGE_TOKENr deserializerrr<internalr~)receive_message_eventserialized_requestr~rrr@s r2r$z)_receive_message..receive_message?s01FGG  % L L<5((#*EL**,,,,U4JKK  L L L L L L L L L L L L L L L L L L )"$8G L L?)2; %,EM**,,,,U4JKK L L L L L L L L L L L L L L L L L Ls%AA//A36A3AC>>DDrP)r@rrr$s``` r2_receive_messager:s7 LLLLLLL2 r4cfd}|S)Ncpj5ttcdddS#1swxYwYdSr9)r}r_SEND_INITIAL_METADATA_TOKEN)"unused_send_initial_metadata_eventr@s r2r#z5_send_initial_metadata..send_initial_metadata\s _ N N(0LMM N N N N N N N N N N N N N N N N N Ns +//rP)r@r#s` r2_send_initial_metadatar[s)NNNNN ! r4cfd}|S)Ncj5jtcdddS#1swxYwYdSr9)r}rr)unused_send_message_eventr@rs r2r%z#_send_message..send_messageds _ 7 7 O & & ( ( ((66 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s)?AArP)r@rr%s`` r2 _send_messagercs*777777 r4ceZdZUded<ded<ded<d6d Zd7d Zd8dZd9dZd:dZd9dZ d;dZ ddZ d?dZd@d!ZdAd$ZdBd&Zd;d'ZdCd+ZdDd.ZdEd/ZdFd0ZdGd1ZdHd3Zd9d4Zd5S)I_Contextr+ _rpc_eventrA_staterr rpc_eventr@c0||_||_||_dSr9)rr_request_deserializer)rZrr@rs r2rlz_Context.__init__qs $ %9"""r4r,rcv|jj5t|jcdddS#1swxYwYdSr9)rr}rrYs r2 is_activez_Context.is_active{s~ [ " 5 5' 44 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s .22floatcht|jjjt jz dSr/)maxr call_detailsdeadlinetimerYs r2time_remainingz_Context.time_remainings%4?/849;;FJJJr4rcB|jjdSr9)rrcancelrYs r2rz_Context.cancels ##%%%%%r4callbackrc|jj5|jj ddddS|jj| ddddS#1swxYwYdS)NFT)rr}rr)rZrs r2 add_callbackz_Context.add_callbacks [ "  {$,         K ! ( ( 2 2 2                   sA AAAch|jj5d|j_ddddS#1swxYwYdSr)rr}rrYs r2 disable_next_message_compressionz)_Context.disable_next_message_compressions{ [ " 8 837DK 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 '++rc|jjSr9)rrRrYs r2rRz_Context.invocation_metadatas 22r4rgcbtj|jjSr9)rdecoderrpeerrYs r2rz _Context.peers#~do27799:::r4Optional[Sequence[bytes]]c>tj|jjSr9)rpeer_identitiesrrrYs r2rz_Context.peer_identitiess%do&:;;;r4rUcntj|jj}||nt j|Sr9)rpeer_identity_keyrrrr)rZid_keys r2rz_Context.peer_identity_keys/)$/*>??vvW^F-C-CCr4Mapping[str, Sequence[bytes]]ctj|jj}|in|}d|DS)Nc>i|]\}}tj||SrP)rr).0keyvalues r2 z)_Context.auth_context..s8   U N3     r4)r auth_contextrritems)rZrauth_context_dicts r2rz_Context.auth_contextsS*4?+?@@ "."6BBL  /5577    r4 compressiongrpc.Compressionch|jj5||j_ddddS#1swxYwYdSr9)rr}r)rZrs r2set_compressionz_Context.set_compressions{ [ " < <0;DK - < < < < < < < < < < < < < < < < < CC Crch|jj5||j_ddddS#1swxYwYdSr9)rr}r)rZrs r2set_trailing_metadataz_Context.set_trailing_metadatas{ [ " > >,=DK ) > > > > > > > > > > > > > > > > > >rc|jjSr9)rrrYs r2rz_Context.trailing_metadatas {,,r4r5r6rIcB|tjjkr-tdtjj}d}|jj5||j_tj ||j_ d|j_ t#1swxYwYdS)Nz4abort() called with StatusCode.OK; returning UNKNOWNT)rr<OK_LOGGERerrorUNKNOWNrr}r5rencoderIr Exception)rZr5rIs r2abortz_Context.aborts 4?% % % MMF   ?*DG [ "  #DK ")."9"9DK "&DK ++            sABBBstatus grpc.Statusch|j|j_||j|jdSr9)rrrr5rI)rZrs r2abort_with_statusz_Context.abort_with_statuss-(.(@ % 6;/////r4ch|jj5||j_ddddS#1swxYwYdSr9)rr}r5)rZr5s r2set_codez_Context.set_codes{ [ " $ $#DK  $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $rc|jjSr9)rr5rYs r2r5z _Context.codes {r4c|jj5tj||j_ddddS#1swxYwYdSr9)rr}rrrI)rZrIs r2 set_detailsz_Context.set_detailss [ " : :")."9"9DK  : : : : : : : : : : : : : : : : : :s 9==r-c|jjSr9)rrIrYs r2rIz_Context.detailss {""r4cdSr9rPrYs r2_finalize_statez_Context._finalize_states r4N)rr+r@rArr)r,r)r,rr,r)rrr,r)r,r)r,rg)r,rra)r,r)rrr,r)r rr,r)rrr,r)r5r6rIrgr,r)rrr,r)r5r6r,r)r,r6)rIrgr,r)r,r-)rMrNrOrrlrrrrrrRrrrrr r#rrrrr r5r#rIr&rPr4r2rrls    9999::::5555KKKK&&&&88883333;;;;<<<<DDDD    <<<<,,,,">>>>----    0000$$$$    ::::####      r4rcfeZdZUded<ded<ded<dd Zdd ZddZddZddZddZ ddZ dS)_RequestIteratorrArr_callrrr@rrc0||_||_||_dSr9)rr*r)rZr@rrs r2rlz_RequestIterator.__init__s   %9"""r4r,rc|jjturt|jdSt |jst |jtj tft|j|j|j |jj tdSr9)rrrrr StopIterationr*rrReceiveMessageOperationrrrrrrrYs r2_raise_or_start_receive_messagez0_RequestIterator._raise_or_start_receive_messages ;  + + T[ ) ) ) ) )%dk22 8// ! J ) )/ ==? KT-G    KO   6 7 7 7 7 7r4rc|jjturt|jnG|jj!t |jjvrt|jj}d|j_|Str9) rrrrr~rrr-AssertionErrorrZr~s r2_look_for_requestz"_RequestIterator._look_for_requestsn ;  + + T[ ) ) ) ) K  '&dko==// !k)G"&DK Nr4c|jj5| |jj|}||cdddSC#1swxYwYdSr9)rr}r/waitr3r2s r2_nextz_RequestIterator._nexts [ " # #  0 0 2 2 2 # %**,,,0022&"  # # # # # # # # # # # # # # # # # # #sA A&%A&&A*-A*c|Sr9rPrYs r2__iter__z_RequestIterator.__iter__s r4c*|Sr9r6rYs r2__next__z_RequestIterator.__next__zz||r4c*|Sr9r:rYs r2nextz_RequestIterator.next r<r4N)r@rArrrrr')r,r)r,r)) rMrNrOrrlr/r3r6r8r;r>rPr4r2r)r)s:::::::: 8 8 8 8    ####r4r)rCallable[[], Any]cfd}|S)Nc j5ts ddddSjt jt ftjj t j j j turedjj}t%jtjjt+j| ddddSj t.ur ddddSnj }d_ |cdddS#1swxYwYdS)NTz*"{}" requires exactly one request message.)r}rrrrr.rrrrrr5r~rrformatrrQrr< unimplementedrrr)rIr~rrr@s r2 unary_requestz%_unary_request..unary_request)s _ # #'..  # # # # # # # # N - -/ ==?  8LMM    IMM0 1 1 1 #$$&&&=(|w..HOO ) 6 = !%N"-;#N733  $/ # # # # # # # #0|z11#3 # # # # # # # #02$mG$(EM"; # # # # # # # # # # # # # # # # # # #s)EC-E!E=EEE"ErP)rr@rrDs``` r2_unary_requestrE$s1 #######@ r4behaviorrargumentrsend_response_callback(Optional[Callable[[ResponseType], None]]8Tuple[Union[ResponseType, Iterator[ResponseType]], bool]c 2ddlm}||||5} d}|||||}n |||}|dfcdddS#t$r:} |j5|jr't ||jtjj dn| |j vr d | } ne#t$rXd} t tjt!| | | jtjYnwxYwt | t ||jtjj t'j| dddn #1swxYwYYd} ~ ddddSd} ~ wwxYw#1swxYwYdS)Nr)_create_servicer_contextT RPC Abortedz!Exception calling application: {}z1Calling application raised unprintable Exception!NF)rrLrr}rrrrr<r=rrBr exception tracebackformat_exceptiontype __traceback__ print_excrr) rr@rFrGrrHrLr|response_or_iteratorrOrIs r2_call_behaviorrVLs.----- ! !5.  - * #' %1'/xg'=(($$(0x''B'B$'---------! ! !   =!)1&  e&666."E"L"L%##% . . .O  ))%6 $Y ) ) 7"+----- .%%g...!)1w// 5               @;;;[--------! ----------s~F !A F F8E(B%$E(%AD E(D AE( F(E, ,F/E, 0F3F F  F  FFresponse_iteratorIterator[ResponseType]Tuple[ResponseType, bool]c  t|dfS#t$rYdSt$r}|j5|jr't ||jtjj dnp||j vrgd |}t |t ||jtjj tj|dddn #1swxYwYYd}~dSd}~wwxYw)NTrrMz!Exception iterating responses: {}rN)r>r-rr}rrrrr<r=rrBrrOrr)rr@rWrOrIs r2%_take_response_from_response_iteratorr[s[ %&&,, zz  _  } N%-"  %"222=DDYOO!!'***N%-N7++                "{{{{{%s= C1 C1C,BC C,C C,"C #C,,C1responseresponse_serializerOptional[SerializingFunction]rctj||}|G|j5t||jt jjddddn #1swxYwYdS|S)NsFailed to serialize response!)r serializer}rrrr<r)rr@r\r]serialized_responses r2_serialize_responserbs "+H6IJJ" _   !*0                   t s'AAAUnion[int, cygrpc.WriteFlag]c@|jrtjjStSr9)rr WriteFlag no_compressrrDs r2%_get_send_message_op_flags_from_statergs! %,++ r4cT|j5d|_ddddS#1swxYwYdSrN)r}rrDs r2_reset_per_message_staterisv //).&//////////////////s !!rarcl|j5t|s ddddS|jrAt|dt j|t |f}d|_t}n*t j|t |f}t}|j |t|||j |t| |j||j vrt|cdddS>#1swxYwYdSrN)r}rrrrSendMessageOperationrg-_SEND_INITIAL_METADATA_AND_SEND_MESSAGE_TOKEN_SEND_MESSAGE_TOKENrrrrrrir5)rr@rarrs r2_send_responserns 33#E** 33333333  ) (/t<<+'9%@@J.3E *AEE+'9%@@J (E))  eU33     e ''' 3 O " " "EI%%+E22;333333334 353333333333sD)C5D)(D))D-0D-c l|j5|jturt|}t |}t j|j||tg}|j r#| t|d|5| t j |t||j|t!|t"d|_t'||jt"ddddS#1swxYwYdSr)r}rrrErJrrrrrrrrkrgrrrrrrirr)rr@rar5rIrs r2_statusrpsz :: ##   .5(H6J!! Hg C&9uh0C''#'2Iu.ABBB   """"" """"s*A A B B=B?BBB-ctjdfd } |}|Wt|dr|jrt ||||n*t |||\}} | rt ||n##t $rtjYnwxYwtj dS#tj wxYw) Nr\rr,rc|tddSt|}|t|dSdSr9)rprbrn)r\rar]rr@s r2 send_responsez/_stream_response_in_pool..send_response-sd   Iud + + + + +"55(,?## #.y%1DEEEEE/.r4experimental_non_blocking)rH)r\rr,r) rrshasattrrzrV3_send_message_callback_to_blocking_iterator_adapterrrPrTrt) rr@rFrqrr]ryrGrWrus `` ` r2_stream_response_in_poolr}#sV 29===FFFFFFFF#!>##  "=>> 6 (+8 .<uh:N..*!7G!5-9J   """"" """"s*A#BB=B%"B=$B%%B==Cc.|jtuo|j Sr9)rrrrDs r2rrTs z&_handle_stream_unary.. r4) r)rrr stream_unaryrr|rrvr]rr@rzrrrs @r2_handle_stream_unaryrs ( y~~B3#%8K     #    +*   r4c t||j|jt|j|}||jjt|||jfd|j|j S)NcSr9rPrsr2rz'_handle_stream_stream..rr4) r)rrr stream_streamrr|rr}r]rs @r2_handle_stream_streamrs ( y~~B3$&9K      $    +*   r4method_with_handlerinterceptor_pipeline'Optional[_interceptor._ServicePipeline]r]cdfd }}|stj|jj}t ||j}|!|j|j ||S|j||S)Nr\rLr,r]c.|Sr9)r`)r\rs r2query_handlersz,_find_method_handler..query_handlerss#**+?@@@r4rb) r[rrrrQrLrRr|rexecute)rr@rrr method_namer\s ` r2_find_method_handlerrs AAAAAA &**,,K DnY%;%BCC .% '}  (.:N    =  ^-A B BBr4 rpc_staterctdtjttjd||tf}|j|fddS)Nc dfSrrP)_ignored_eventrs r2rz_reject_rpc..s   r4)rrReceiveCloseOnServerOperationrrrr)rrrrIrs ` r2 _reject_rpcrs} ( 488,\::, &'<  JN%%    r4rc|j5|jtjt ft ||jt|j rC|j rt||||cdddSt||||cdddS|j rt||||cdddSt||||cdddS#1swxYwYdSr9)r}rrrrrrrrrrequest_streamingresponse_streamingrrrr)rr@rzrs r2_handle_with_method_handlerrs   ))  1, ? ? A $U + +     4555  + 0 ,unk        (5.+          , '5.+        $# unk  %                  s$A?C5C52C5C55C9<C9concurrency_exceeded4Tuple[Optional[_RPCState], Optional[futures.Future]]c6|jsdS|jjs|rt } t ||||}nk#t $r^}d|}t |t||tj j d|dfcYd}~Sd}~wwxYw|%t||tj jd|dfS|r%t||tj jd|dfS|t!||||fSdS)aHandles RPC based on provided handlers. When receiving a call event from Core, registered method will have its 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. )NNzException servicing handler: {}sError in service handler!NsMethod not found!sConcurrent RPC limit exceeded!)successrrQr[rArrrBrrOrrr<r=rCresource_exhaustedr) rrrrrrrzrOrIs r2 _handle_callr#s$  z$( (;(@(@(B(B( KK  #1#$ NN  # # #7>>yIIG   g & & & !),     d? " " " " " " #  ! !/$     d? "  # !41     d? "  '9nk    :sA B4AB/)B4/B4ceZdZdZdZdZdS) _ServerStagestoppedstartedgraceN)rMrNrOSTOPPEDSTARTEDGRACErPr4r2rrcsGG EEEr4rceZdZUded<ded<ded<ded<d ed <d ed <d ed<ded<ded<ded<ded<ded<ded<ded<ded<d"d Zd!S)# _ServerStatezthreading.RLocklockcygrpc.CompletionQueuecompletion_queue cygrpc.Serverserverrsrr Dict[str, grpc.RpcMethodHandler]registered_method_handlersrrrrrstagethreading.Eventtermination_eventzList[threading.Event]shutdown_events Optional[int]maximum_concurrent_rpcsintactive_rpc_countzSet[_RPCState] rpc_stateszSet[str]rrserver_deallocated Sequence[grpc.GenericRpcHandler]ctj|_||_||_t ||_||_||_tj |_ tj |_ |j g|_||_d|_i|_t%|_t%|_d|_dS)NrF)rRLockrrrlistrrrrrrrEventrrrrrrrrr)rZrrrrrrrs r2rlz_ServerState.__init__|sO%% 0 $%5 6 6$8!&!) !*!2!2 $ 67'>$ !*,'%%55#(r4N) rrrrrrrrrrrrr)rMrNrOrrlrPr4r2rrjs,,,,2222@@@@AAAA++++&&&&********MMM((((((r4rrr Iterable[grpc.GenericRpcHandler]cz|j5|j|ddddS#1swxYwYdSr9)rrrextend)r@rrs r2_add_generic_handlersrs 88 %%&6777888888888888888888 044method_handlersrcz|j5|j|ddddS#1swxYwYdSr9)rrupdate)r@rs r2_add_registered_method_handlersrs AA (//@@@AAAAAAAAAAAAAAAAAAraddressrcx|j5|j|cdddS#1swxYwYdSr9)rradd_http2_port)r@rs r2_add_insecure_portrs 44|**733444444444444444444s /33server_credentialsgrpc.ServerCredentialsc|j5|j||jcdddS#1swxYwYdSr9)rrr _credentials)r@rrs r2_add_secure_portrs   |** '4                    s 599c|j|j|jt|jtdSr9)rr!r_REQUEST_CALL_TAGrrrDs r2 _request_callrsG L  68I IMM#$$$$$r4rQc|}|j|j|j|||j|dSr9)rrequest_registered_callrrr)r@rQregistered_call_tags r2_request_registered_callrsQ  L((     IMM%&&&&&r4c|jsQ|jsJ|j|jD]}|t j|_dSdSr) rrrdestroyrrrrr)r@shutdown_events r2 _stop_servingrse  EI #3 ! !N    "* t 5r4cf|j5|xjdzc_ddddS#1swxYwYdS)N)rrrDs r2_on_call_completedrs $$ !#$$$$$$$$$$$$$$$$$$s &**eventcnd}|jturQj5jtt rd}dddn #1swxYwYnR|jt us!|jjvrd}|jjvr1|j}t|j |d}ntj }j5j|jj duojj k}t||jj|\}}|j||(xjdz c_|fdjt,jur<|jvrt1|n!t3nt rd}dddn #1swxYwYn||\}}|D]7} | #t4$rt6dY4wxYw|Jj5j|t rd}dddn #1swxYwY|S)NTFrc"tSr9)r)_unused_futurer@s r2rz-_process_event_and_continue..s+=e+D+Dr4zException calling callback!)tag _SHUTDOWN_TAGrrrrrrkeysrfr;rqrrrrrrrrradd_done_callbackrrrrrrrrO) r@rshould_continueregistered_method_namerrr rpc_futurerrs ` r2_process_event_and_continuersO yM!! Z ( ( I  ] + + +U## ("' ( ( ( ( ( ( ( ( ( ( ( ( ( ( (  &&& 98==?? ? ?!% 98==?? ? ?%*Y ""3&044*D##  #1&## Z ( ( I  UY ' ' '-T9L*e.KK !%1#*!$ %% !Iz$ $$Y///%&&!+&&,,DDDD{l222*7<<>>??-U4JKKKK!%((((u%% ("'; ( ( ( ( ( ( ( ( ( ( ( ( ( ( (> %yy// 9! A AH A  A A A!!"?@@@@@ A   , , '' 222 '',&+O , , , , , , , , , , , , , , , sH1AAAC?H  HH4 H??$I&%I&2,J**J.1J.c tjtz}|j|}|jrt ||jtjj krt||sdSd}zr9) r"_DEALLOCATED_SERVER_CHECK_PERIOD_Srpollr_begin_shutdown_oncecompletion_typerCompletionType queue_timeoutr)r@timeoutrs r2_server"s~ )++ BB&++G44  # (  ' ' '  F$9$G G G.ue<<  r4c|j5|jtjurU|j|jttj|_|j tddddS#1swxYwYdSr9) rrrrrr rrrrrrDs r2r r 1s )) ;,. . . L ! !%"8- H H H&,EK IMM- ( ( ( ))))))))))))))))))sA)A>>BBrOptional[float]rc0j5jtjur5t jcdddStt jj j n>fd}t j |}| cdddS dddn #1swxYwYS)Ncj5jddddS#1swxYwYdSN)r )r5rrcancel_all_calls)rrr@sr2cancel_all_calls_after_gracez+_stop..cancel_all_calls_after_graceFs##E#222Z44L11333444444444444444444sAA  A )target)rrrrrrrr rrrrThreadstartr5)r@rrthreadrs`` @r2_stopr9s "" ;,. . .&_..N    ! """""""" U###"** $$^444 = L ) ) + + + + 4 4 4 4 4 4 4 %-IJJJF LLNNN!'"""""""" ,"""""""""""""""( sC;c|j5|jtjurd}t ||jtj|_|j D]}t||t|tj t|f}d|_|ddddS#1swxYwYdS)Nz$Cannot start already-started server!)rargsT)rrrrr rrrrrrrrrrdaemon)r@rrQrs r2_startrRs    ;l2 2 2>IY'' ' "* 6;;== 4 4F $UF 3 3 3 3e!uh???                    sCCCCgeneric_rpc_handlersc`|D]*}t|dd}|d|d}t|+dS)Nrx"zP" must conform togrpc.GenericRpcHandler type but does not have "service" method!)getattrAttributeError)rgeneric_rpc_handlerservice_attributers r2_validate_generic_rpc_handlersr&csl 4,,#$7DII  $R'RRR !++ + %,,r4 base_optionsSequence[ChannelArgumentType]rrxdsc|tj|}tj|}t ||z|zSr9)rcreate_channel_optionr(create_server_call_tracer_factory_optionr)r'rr)compression_option'maybe_server_call_tracer_factory_options r2_augment_optionsr/psJ &;KHH?DD, l   1 2r4cbeZdZUded<d+dZd,dZd-dZd.dZd/d!Zd0d"Z d1d2d&Z d3d)Z d*Z d#S)4_Serverrrrrrrr interceptors Sequence[grpc.ServerInterceptor]optionsr(rrrrr)rctj}tjt||||} | |t || |t j||||_| |_ dSr9) rCompletionQueueServerr/register_completion_queuerrservice_pipeliner _cy_server) rZrrrr2r4rrr)rrs r2rlz_Server.__init__s"133/cJJCPP(()9:::"     ), 7 7  #    !r4rrr,rcNt|t|j|dSr9)r&rr)rZrs r2add_generic_rpc_handlersz _Server.add_generic_rpc_handlerss, '';<<<dk+?@@@@@r4 service_namergrrcj|jj5|jjtjur ddddS dddn #1swxYwYfd|D}|D]}|j|t|j|dS)NcBi|]\}}tj||SrP)rfully_qualified_method)rrQrzr=s r2rz:_Server.add_registered_method_handlers..s<   &  *< @ @.   r4) rrrrrrrr:register_methodr)rZr=rmethod_to_handlersr@s ` r2add_registered_method_handlersz&_Server.add_registered_method_handlerss. [   { L$888        8                    *9*?*?*A*A   '9&=&=&?&? D D " O + +,B C C C C' 5GHHHHHsAA Arrc vtj|t|jtj|Sr9)rvalidate_port_binding_resultrrr)rZrs r2add_insecure_portz_Server.add_insecure_ports33 ' W^G5L5LMM   r4rrc xtj|t|jtj||Sr9)rrErrr)rZrrs r2add_secure_portz_Server.add_secure_ports=3   W^G446H     r4c.t|jdSr9)rrrYs r2rz _Server.startst{r4Nr rcltj|jjj|jjj|Sr)rr5rris_set)rZr s r2wait_for_terminationz_Server.wait_for_terminations6| K ) . K ) 0    r4rrc,t|j|Sr9)rr)rZrs r2stopz _Server.stopsT[%(((r4cBt|drd|j_dSdS)NrT)r{rrrYs r2__del__z_Server.__del__s0 4 " " 2.2DK * * * 2 2r4)rrrrrr2r3r4r(rrrrr)rrrr,r)r=rgrrr,r)rrgr,r)rrgrrr,rr'r9)r rr,r)rrr,r) rMrNrOrrlr<rCrFrHrrLrNrPrPr4r2r1r1s!!!!.AAAA IIII&             ))))22222r4r1rr2r3r4rrc Jt|t|||||||Sr9)r&r1)rrr2r4rrr)s r2 create_serverrSs:##7888    r4)r*r+r,r-)r5r6r,r7)r@rAr,r7)r@rAr5r7r,r7)r@rAr,r-)r@rAr,r)r@rArrgr,r)r@rArrgr,r)r@rArrr,r)r@rArrr,r) r@rArrr5r7rIr-r,r)r@rAr,r)r@rArrrrr,r)rr+r@rArrr,r?r9)rr+r@rArFrrGrrrrHrIr,rJ)rr+r@rArWrXr,rY) rr+r@rAr\rr]r^r,r)r@rAr,rc)rr+r@rArar-r,r)rr+r@rArarr,r)rr+r@rArFrrqr?rr^r]r^r,r)rr+r@rArFrrqr?rrr]r^r,r)r@rAr,r) rr+r@rArHrrWrXr,r)rFrrrr,r) rr+r@rArzrrrr,r) rr+r@rArrTrrr,r])rr+rrArr7rIr-) rr+r@rArzrrrr,r) rr+rrTrrrrrrr,r)r@rrrrr,r)r@rrrr,r)r@rrr-r,r)r@rrr-rrr,r)r@rr,r)r@rrQrgr,r)r@rr,r)r@rrr+r,r)r@rrrr,rrQ)r'r(rrr)rr,r()rrrrr2r3r4r(rrrrr)rr,r1)__doc__ __future__rrc collections concurrentrrenumloggingrrrPtypingrrrrr r r r r rrrrrrrr grpc._cythonr grpc._typingrrrrrrrrrtyping_extensionsr getLoggerrMrrrrrrrmrlrrrrrrr _INF_TIMEOUTr3r?rErGrJ namedtupleHandlerCallDetailsrLABCrTrfrqobjectrArrrrrrrrrrServicerContextrr)rErVr[rbrgrirnrprvr}rr|rrrrrrrrruniqueEnumrrrrrrrrrrrrr rrr&r/r7r1rSrPr4r2rgs21""""""                                333333,,,,,,......%%%%%%,,,,,,%%%%%%,,,,,,******......&&&&&& ' H % % "!:6*$*.";59     %(" 7777MMMM )))) ))));;;;      K       $ $ $ $ $cg $ $ $(((((((((W0        F ####     D # # # #B!!!!v v v v v t#v v v r<<<<<v<<<~%%%%\HL 77777t<&//// 3 3 3 3F::::@####8.#.#.#.#bAAAA$0000CCCC6,    :====@49  -(-(-(-(-(6-(-(-(`8888AAAA4444     %%%%''''$$$$ DDDDN    ))))2" , , , ,     W2W2W2W2W2dkW2W2W2tr4