ó ¿œ^c@s=ddlZddlZddlZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZdZdZdZdZdZdejfd „ƒYZd efd „ƒYZd efd „ƒYZdefd„ƒYZdejfd„ƒYZd„Zd„Zd„Z da!d„Z"ddCd„ƒYZ#d„Z$d„Z%d„Z&d„Z'da)d„Z*de#fd„ƒYZ+de#fd „ƒYZ,d!e,fd"„ƒYZ-d#Z.dZ/d$Z0dZ1dZ2dZ3dZ4dZ5dZ6d%Z7d&Z8d'efd(„ƒYZ9d)efd*„ƒYZ:d+dDd,„ƒYZ;d-e;e+fd.„ƒYZ<d/e;e,fd0„ƒYZ=d1e;e-fd2„ƒYZ>d3e+fd4„ƒYZ?d5e,fd6„ƒYZ@d7e#fd8„ƒYZAd9dEd:„ƒYZBd;eBfd<„ƒYZCd=eBfd>„ƒYZDd?„ZEd@„ZFdA„ZGdB„ZHdS(FiÿÿÿÿNiiiiiitPackercBs,eZd„Zd„Zd„Zd„ZRS(cCs*|\}}|j|ƒ|j|ƒdS(N(t pack_enumt pack_opaque(tselftauthtflavortstuff((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt pack_auth0s  cCsi|j|ƒ|j|ƒ|j|ƒ|j|ƒ|jt|ƒƒx|D]}|j|ƒqNWdS(N(t pack_uintt pack_stringtlen(Rtstampt machinenametuidtgidtgidsti((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytpack_auth_unix5s     cCsl|j|ƒ|jtƒ|jtƒ|j|ƒ|j|ƒ|j|ƒ|j|ƒ|j|ƒdS(N(RRtCALLt RPCVERSIONR(Rtxidtprogtverstproctcredtverf((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytpack_callheader>s       cCsE|j|ƒ|jtƒ|jtƒ|j|ƒ|jtƒdS(N(RRtREPLYt MSG_ACCEPTEDRtSUCCESS(RRR((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytpack_replyheaderIs     (t__name__t __module__RRRR(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR.s  t BadRPCFormatcBseZRS((RR (((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR!Sst BadRPCVersioncBseZRS((RR (((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR"Tst GarbageArgscBseZRS((RR (((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR#UstUnpackercBs#eZd„Zd„Zd„ZRS(cCs"|jƒ}|jƒ}||fS(N(t unpack_enumt unpack_opaque(RRR((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt unpack_authYs  cCs´|jƒ}|jƒ}|tkr7td|f‚n|jƒ}|tkrbtd|f‚n|jƒ}|jƒ}|jƒ}|jƒ}|jƒ}||||||fS(Nsno CALL but %rsbad RPC version %r(t unpack_uintR%RR!RR"R'(RRttempRRRRR((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytunpack_callheader^s          cCs»|jƒ}|jƒ}|tkr7td|f‚n|jƒ}|tkrÖ|jƒ}|tkr˜|jƒ}|jƒ}td||ff‚n|tkrÃ|jƒ}td|f‚ntd|f‚n|tkrõtd|f‚n|jƒ}|jƒ}|t kr%td‚n|t krb|jƒ}|jƒ}td||ff‚n|t krztd‚n|t kr’td ‚n|t kr±td |f‚n||fS( Nsno REPLY but %rsMSG_DENIED: RPC_MISMATCH: %rsMSG_DENIED: AUTH_ERROR: %rsMSG_DENIED: %rs'Neither MSG_DENIED nor MSG_ACCEPTED: %rscall failed: PROG_UNAVAILscall failed: PROG_MISMATCH: %rscall failed: PROC_UNAVAILscall failed: GARBAGE_ARGSscall failed: %r(R(R%Rt RuntimeErrort MSG_DENIEDt RPC_MISMATCHt AUTH_ERRORRR't PROG_UNAVAILt PROG_MISMATCHt PROC_UNAVAILt GARBAGE_ARGSR(RRtmtypetstattlowthighR((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytunpack_replyheadernsH                        (RR R'R*R7(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR$Ws  cCsdS(Nt((((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytmake_auth_null˜scCs,tƒ}|j|||||ƒ|jƒS(N(RRtget_buf(tseedthostR Rtgroupstp((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytmake_auth_unix›s cCs…y,ddlm}m}|ƒ}|ƒ}Wntk rId}}nXddl}tt|jƒtƒƒtj ƒ||gƒS(Niÿÿÿÿ(tgetuidtgetgidi( tosR@RAt ImportErrorttimeR?tintt unix_epochtsockett gethostname(R@RAR RRD((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytmake_auth_unix_default s    c CstdkrtSddl}|jƒ}|j|ƒ}|j|ƒ}|j|ƒ|j|ƒ}d \}}}}} } t| |dƒ\}} t| |dƒ\}} t||dƒ\}}||}|j||||| | dddf ƒadG|jtƒGHtS( s9Very painful calculation of when the Unix Epoch is. This is defined as the return value of time.time() on Jan 1st, 1970, 00:00:00 GMT. On a Unix system, this should always return 0.0. On a Mac, the calculations are needed -- and hard because of integer overflow and other limitations. iiÿÿÿÿNi²ii<is Unix epoch:(i²iiiii(t _unix_epochRDt localtimetgmtimetmktimetdivmodtctime( RDtnowtlocalttgmttoffsettytmtdthhtmmtss((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRF¬s    *tClientcBsteZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z RS( cCsk||_||_||_||_|jƒ|jƒ|jƒd|_|jƒd|_ d|_ dS(Ni( R<RRtportt makesockett bindsockett connsockettlastxidt addpackerstNoneRR(RR<RRR[((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt__init__Ìs          cCs|jjƒdS(N(tsocktclose(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRdÙscCs td‚dS(Nsmakesocket not defined(R+(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR\ÜscCs |jj|j|jfƒdS(N(RctconnectR<R[(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR^àscCs|jjdƒdS(NR8i(R8i(Rctbind(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR]äscCstƒ|_tdƒ|_dS(NR8(RtpackerR$tunpacker(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR`ès cCsw|dkr$|dk r$td‚n|j|ƒ|rD||ƒn|jƒ|r`|ƒ}nd}|jjƒ|S(Ns!non-null args with null pack_func(Rat TypeErrort start_calltdo_callRhtdone(RRtargst pack_funct unpack_functresult((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt make_callís      cCse|jd|_}|jƒ}|jƒ}|j}|jƒ|j||j|j|||ƒdS(Ni(R_tmkcredtmkverfRgtresetRRR(RRRRRR>((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRjüs     cCs td‚dS(Nsdo_call not defined(R+(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRkscCs+|jdkr$ttƒf|_n|jS(N(RRat AUTH_NULLR9(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRr scCs+|jdkr$ttƒf|_n|jS(N(RRaRuR9(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRsscCs|jddddƒS(Ni(RqRa(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytcall_0s(RR RbRdR\R^R]R`RqRjRkRrRsRv(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRZÊs         cCs’t|ƒ}|r|dB}ntt|d?d@ƒƒtt|d?d@ƒƒtt|d?d@ƒƒtt|d@ƒƒ}|j||ƒdS(Nliiÿii(R tchrREtsend(Rctlasttfragtxtheader((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytsendfrags   ^cCst|d|ƒdS(Ni(R}(Rctrecord((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt sendrecord"scCsñ|jdƒ}t|ƒdkr*t‚ntt|dƒƒd>t|dƒd>Bt|dƒd>Bt|dƒB}|d @dk}t|d @ƒ}d }xH|dkræ|j|ƒ}|sÉt‚n|t|ƒ}||}qŸW||fS( NiiiiiiiiI€iÿÿÿR8(trecvR tEOFErrortlongtordRE(RcR|R{RytnRztbuf((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytrecvfrag%s L cCs9d}d}x&|s4t|ƒ\}}||}qW|S(NR8i(R†(RcR~RyRz((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt recvrecord5s  cCsÔd\}}tdkr?ddl}||jƒ||anx…tt|ƒt|tƒD]g}|ay|j||fƒtSWq\tjk rÂ\}}|dkrÃtj||f‚qÃq\Xq\Wtd‚dS(NiXiiÿÿÿÿirscan't assign reserved port(iXi( tlast_resv_port_triedRaRBtgetpidtrangeRfRGterrorR+(RcR<tFIRSTtLASTRBRterrnotmsg((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt bindresvportAs    t RawTCPClientcBseZd„Zd„ZRS(cCstjtjtjƒ|_dS(N(RGtAF_INETt SOCK_STREAMRc(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR\WscCs‚|jjƒ}t|j|ƒt|jƒ}|j}|j|ƒ|jƒ\}}||jkr~t d||jf‚ndS(Ns#wrong xid in reply %r instead of %r( RgR:RRcR‡RhRtR7R_R+(RtcalltreplytuRR((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRkZs  (RR R\Rk(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR‘Us t RawUDPClientcBseZd„Zd„ZRS(cCstjtjtjƒ|_dS(N(RGR’t SOCK_DGRAMRc(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR\ksc Cs`|jjƒ}|jj|ƒyddlm}Wntk rQdGHd}nXd}d}d}xõ|jggg}}}|r¨|||||ƒ\}}}n|j|kr|d}|dkrÙtd‚n|d krò|d }n|jj|ƒqgn|jj|ƒ} |j } | j | ƒ| j ƒ\} } | |j krWqgnPqgWdS( Niÿÿÿÿ(tselects'WARNING: select not found, RPC may hangi iiittimeoutii( RgR:RcRxR™RCRaR+R€RhRtR7R_( RR”R™tBUFSIZERštcounttrtwR{R•R–RR((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRkns:  !     (RR R\Rk(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR—is tRawBroadcastUDPClientcBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCs/tj|||||ƒd|_d|_dS(Ni(R—RbRat reply_handlerRš(Rt bcastaddrRRR[((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRb’s cCs |jjtjtjdƒdS(Ni(Rct setsockoptRGt SOL_SOCKETt SO_BROADCAST(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR^—scCs ||_dS(N(R (RR ((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytset_reply_handler›scCs ||_dS(N(Rš(RRš((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt set_timeoutžscCsø|dkr$|dk r$td‚n|j|ƒ|rD||ƒn|jjƒ}|jj||j|jfƒyddl m }Wnt k r¤dGHd}nXd}g}|dkrÏd„} | }nx"|jggg} } } |rC|j dkr|| | | ƒ\} } } qC|| | | |j ƒ\} } } n|j| krVPn|jj |ƒ\} }|j }|j| ƒ|jƒ\}}||jkr«qÒn|ƒ} |j jƒ|j| |fƒ|jrÒ|j| |ƒqÒqÒW|S(Ns!non-null args with null pack_funciÿÿÿÿ(R™s.WARNING: select not found, broadcast will hangi cSsdS(N((((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytdummy±R8(RaRiRjRgR:RctsendtoR<R[R™RCRštrecvfromRhRtR7R_RltappendR (RRRmRnRoR”R™R›trepliesR§R�RžR{R•tfromaddrR–RR((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRq¡sJ        $     (RR RbR^R¥R¦Rq(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRŸ�s     i †ioiitPortMapperPackercBs#eZd„Zd„Zd„ZRS(cCsJ|\}}}}|j|ƒ|j|ƒ|j|ƒ|j|ƒdS(N(R(RtmappingRRtprotR[((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt pack_mappingès    cCs|j||jƒdS(N(t pack_listR°(Rtlist((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt pack_pmaplistïscCsJ|\}}}}|j|ƒ|j|ƒ|j|ƒ|j|ƒdS(N(RR(RtcaRRRRm((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytpack_call_argsòs    (RR R°R³Rµ(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR­æs  tPortMapperUnpackercBs#eZd„Zd„Zd„ZRS(cCs@|jƒ}|jƒ}|jƒ}|jƒ}||||fS(N(R((RRRR¯R[((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytunpack_mappingüs     cCs|j|jƒS(N(t unpack_listR·(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytunpack_pmaplistscCs"|jƒ}|jƒ}||fS(N(R(R&(RR[tres((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytunpack_call_results  (RR R·R¹R»(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR¶ús  tPartialPortMapperClientcBs>eZd„Zd„Zd„Zd„Zd„Zd„ZRS(cCstƒ|_tdƒ|_dS(NR8(R­RgR¶Rh(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR`s cCs"|jt||jj|jjƒS(N(Rqt PMAPPROC_SETRgR°RhR((RR®((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytSets  cCs"|jt||jj|jjƒS(N(RqtPMAPPROC_UNSETRgR°RhR((RR®((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytUnsets  cCs"|jt||jj|jjƒS(N(RqtPMAPPROC_GETPORTRgR°RhR((RR®((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytGetports  cCs|jtdd|jjƒS(N(Rqt PMAPPROC_DUMPRaRhR¹(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytDump!s cCs"|jt||jj|jjƒS(N(RqtPMAPPROC_CALLITRgRµRhR»(RR´((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytCallit&s  (RR R`R¾RÀRÂRÄRÆ(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR¼ s      tTCPPortMapperClientcBseZd„ZRS(cCstj||tttƒdS(N(R‘Rbt PMAP_PROGt PMAP_VERSt PMAP_PORT(RR<((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRb.s (RR Rb(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRÇ,stUDPPortMapperClientcBseZd„ZRS(cCstj||tttƒdS(N(R—RbRÈRÉRÊ(RR<((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRb5s (RR Rb(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRË3stBroadcastUDPPortMapperClientcBseZd„ZRS(cCstj||tttƒdS(N(RŸRbRÈRÉRÊ(RR¡((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRb=s (RR Rb(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRÌ:st TCPClientcBseZd„ZRS(cCsft|ƒ}|j||tdfƒ}|jƒ|dkrItd‚ntj|||||ƒdS(Nisprogram not registered(RÇRÂt IPPROTO_TCPRdR+R‘Rb(RR<RRtpmapR[((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRbFs     (RR Rb(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRÍDst UDPClientcBseZd„ZRS(cCsft|ƒ}|j||tdfƒ}|jƒ|dkrItd‚ntj|||||ƒdS(Nisprogram not registered(RËRÂt IPPROTO_UDPRdR+R—Rb(RR<RRRÏR[((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRbQs     (RR Rb(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRÐOstBroadcastUDPClientcBs>eZd„Zd„Zd„Zd„Zd„Zd„ZRS(cCsKt|ƒ|_|jj|jƒ||_||_d|_|jƒdS(N( RÌRÏR¥tmy_reply_handlerRRRatuser_reply_handlerR`(RR¡RR((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRb\s    cCs|jjƒdS(N(RÏRd(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRddscCs ||_dS(N(RÔ(RR ((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR¥gscCs|jj|ƒdS(N(RÏR¦(RRš((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR¦jscCsq|\}}|jj|ƒ|jƒ}|jjƒ|jj||fƒ|jdk rm|j||ƒndS(N(RhRtRoRlR«RªRÔRa(RR•R¬R[RºRp((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRÓms   cCs�|jjƒ|r ||ƒn|dkrAd„}||_n ||_g|_|jjƒ}|jj|j|j ||fƒ}|jS(NcSsdS(N((((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR§{R8( RgRtRaRoR«R:RÏRÆRR(RRRmRnRoR§t packed_argst dummy_replies((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRqvs        (RR RbRdR¥R¦RÓRq(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRÒZs      tServercBsYeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z RS( cCsa||_||_||_||_|jƒ|jƒ|jjƒ\|_|_|jƒdS(N( R<RRR[R\R]Rct getsocknameR`(RR<RRR[((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRb�s      cCsL|j|j|j|jf}t|jƒ}|j|ƒsHtd‚ndS(Nsregister failed(RRR¯R[RÇR<R¾R+(RR®R>((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytregister—scCsL|j|j|j|jf}t|jƒ}|j|ƒsHtd‚ndS(Nsunregister failed(RRR¯R[RÇR<RÀR+(RR®R>((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt unregister�sc Cs®|jj|ƒ|jjƒ|jjƒ}|jj|ƒ|jjƒ}|tkr[dS|jjtƒ|jjƒ}|t krÓ|jjt ƒ|jjt ƒ|jjt ƒ|jjt ƒ|jj ƒS|jjt ƒ|jjttƒfƒ|jjƒ}||jkr7|jjtƒ|jj ƒS|jjƒ}||jkr˜|jjtƒ|jj|jƒ|jj|jƒ|jj ƒS|jjƒ}dt|ƒ}yt||ƒ}Wn+tk r÷|jjtƒ|jj ƒSX|jjƒ} |jjƒ} y |ƒWn}ttfk r |jjƒ|jj|ƒ|jjtƒ|jjt ƒ|jjttƒfƒ|jjtƒnX|jj ƒS(Nthandle_(RhRtRgR(RR%RRaRRR,R-R:RRRuR9RR/RR0treprtgetattrtAttributeErrorR1R'R�R#R2( RR”RR)RRRtmethnametmethRR((s$/usr/lib64/python2.7/Demo/rpc/rpc.pythandle£s\         cCs?y|jjƒWntk r*t‚nX|jjtƒdS(N(RhRlR+R#RgRR(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt turn_aroundÖs   cCs|jƒdS(N(Râ(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pythandle_0ÝscCs td‚dS(Nsmakesocket not defined(R+(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR\àscCs |jj|j|jfƒdS(N(RcRfR<R[(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR]äscCstƒ|_tdƒ|_dS(NR8(RRgR$Rh(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR`ès ( RR RbRÙRÚRáRâRãR\R]R`(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR׋s   3    t TCPServercBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCs(tjtjtjƒ|_t|_dS(N(RGR’R“RcRÎR¯(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR\ðscCs1|jjdƒx|j|jjƒƒqWdS(Ni(Rctlistentsessiontaccept(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytloopôscCsŒ|\}\}}xsyt|ƒ}Wn1tk r9Pn tjk rX}dG|GHPnX|j|ƒ}|dk rt||ƒqqWdS(Ns socket error:(R‡R�RGR‹RáRaR(Rt connectionRcR<R[R”R�R•((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRæùs   cCs1|jjdƒx|j|jjƒƒqWdS(Ni(RcRåt forksessionRç(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt forkingloopscCs¥ddl}y#x|jddƒ\}}qWWn|jk rEnXd}z5|jƒ}|rs|djƒdS|j|ƒWd|dkr |jdƒnXdS(Niÿÿÿÿii(RBtwaitpidR‹RatforkRdRæt_exit(RRéRBtpidtsts((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRê s    (RR R\RèRæRëRê(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRäîs     t UDPServercBs#eZd„Zd„Zd„ZRS(cCs(tjtjtjƒ|_t|_dS(N(RGR’R˜RcRÑR¯(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyR\&scCsx|jƒqWdS(N(Ræ(R((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRè*scCsM|jjdƒ\}}|j|ƒ}|dk rI|jj||ƒndS(Ni (RcR©RáRaR¨(RR”t host_portR•((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRæ.s (RR R\RèRæ(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRñ$s  cCsztdƒ}|jƒ}|jƒxQ|D]I\}}}}|G|G|tkrVdGn|tkridGn|G|GHq)WdS(NR8ttcptudp(RËRÄtsortRÎRÑ(RÏR²RRR¯R[((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyttest7s     cCs}ddl}|jdr)|jd}nd}d„}t|ƒ}|j|ƒ|jdƒ|jddtdfƒ}dS(Niÿÿÿÿis cSs#|\}}|dt|ƒGHdS(Ns (RÜ(R•R¬R<R[((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytrhKs ii¢†i(tsystargvRÌR¥R¦RÂRÑ(RøR¡R÷RÏR«((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt testbcastEs      cCs�dtfd„ƒY}|ddddƒ}y|jƒWn tk r[}dG|GdGHnX|jƒd GHz|jƒWd|jƒd GHXdS( NtScBseZd„ZRS(cSs@|jjƒ}|jƒdGt|ƒGH|jj||ƒdS(NsRPC function 1 called, arg(Rht unpack_stringRâRÜRgR (Rtarg((s$/usr/lib64/python2.7/Demo/rpc/rpc.pythandle_1\s (RR Rþ(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRû[sR8i iis RuntimeError:s (ignored)sService started...sService interrupted.(RñRÚR+RÙRè(RûtsR�((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyttestsvrYs  cCs~ddl}|jdr)|jd}nd}dtfd„ƒY}||ddƒ}dGH|jdƒ}d Gt|ƒGHdS( NiÿÿÿÿiR8tCcBseZd„ZRS(cSs"|jd||jj|jjƒS(Ni(RqRgR RhRü(RRý((s$/usr/lib64/python2.7/Demo/rpc/rpc.pytcall_1vs  (RR R(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyRusi smaking call...shello, world, s call returned(RøRùRÐRRÜ(RøR<RtcR•((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyttestcltps  ((((ItxdrRGRBRRRRut AUTH_UNIXt AUTH_SHORTtAUTH_DESRR,RR/R0R1R2R-R.t AUTH_BADCREDtAUTH_REJECTEDCREDt AUTH_BADVERFtAUTH_REJECTEDVERFt AUTH_TOOWEAKRt ExceptionR!R"R#R$R9R?RIRJRFRZR}RR†R‡RaRˆR�R‘R—RŸRÈRÉRÊt PMAPPROC_NULLR½R¿RÁRÃRÅRÎRÑR­R¶R¼RÇRËRÌRÍRÐRÒR×RäRñRöRúRR(((s$/usr/lib64/python2.7/Demo/rpc/rpc.pyt sŽ   %A    Q     '>     1c6