ó ^ bc@sˆdddgZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z m Z ddl m Z mZmZmZddlmZmZdZd Zd ZejƒZd Zd gZeed ƒrd Zed g7Znejd kr4dZedg7Zned„Zd„Zd„Zd„Z de!fd„ƒYZ"ddd„Z$ejd krže%d„Z&nddlm'Z'e%d„Z&de!fd„ƒYZ(d„Z)ejd kr de!fd„ƒYZ*d„Z+ndZ,dZ-d Z.d!Z/d"„Z0d#„Z1d$„Z2d%e!fd&„ƒYZ3d'„Z4d(„Z5d)e"fd*„ƒYZ6d+„Z7dS(,tClienttListenertPipei’’’’N(tcurrent_processtAuthenticationError(t get_temp_dirtFinalizet sub_debugtdebug(t duplicatetclosei g4@tsha256tAF_INETtAF_UNIXtwin32tAF_PIPEcCstjƒ|S(N(ttime(ttimeout((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyt _init_timeoutMscCstjƒ|kS(N(R(tt((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyt_check_timeoutPscCs}|dkrd S|dkr5tjdddtƒƒS|dkrmtjdd tjƒtjƒfdd ƒStd ƒ‚d S(s? Return an arbitrary free address for the given family R t localhostiR tprefixs listener-tdirRs\\.\pipe\pyc-%d-%d-tsunrecognized familyN(Ri(ttempfiletmktempRtostgetpidt _mmap_countertnextt ValueError(tfamily((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pytarbitrary_addressWs     cCset|ƒtkrdSt|ƒtkr;|jdƒr;dSt|ƒtkrQdStd|ƒ‚dS(s] Return the types of the address This can be 'AF_INET', 'AF_UNIX', or 'AF_PIPE' R s\\RR saddress type of %r unrecognizedN(ttypettupletstrt startswithR(taddress((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyt address_typefs!cBsSeZdZddddd„Zd„Zd„Zed„ƒZed„ƒZ RS(s• Returns a listener object. This is a wrapper for a bound socket which is 'listening' for connections, or for a Windows named pipe. icCs›|p|rt|ƒpt}|p-t|ƒ}|dkrQt||ƒ|_nt|||ƒ|_|dk rŽt|tƒ rŽt d‚n||_ dS(NRsauthkey should be a byte string( R'tdefault_familyR!t PipeListenert _listenertSocketListenertNonet isinstancetbytest TypeErrort_authkey(tselfR&R tbacklogtauthkey((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyt__init__€s  cCs?|jjƒ}|jr;t||jƒt||jƒn|S(sz Accept a connection on the bound socket or named pipe of `self`. Returns a `Connection` object. (R*tacceptR0tdeliver_challengetanswer_challenge(R1tc((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR5s  cCs |jjƒS(sA Close the bound socket or named pipe of `self`. (R*R (R1((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR ›scCs |jjS(N(R*t_address(R1((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyt”RcCs |jjS(N(R*t_last_accepted(R1((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR:¢RN( t__name__t __module__t__doc__R,R4R5R tpropertyR&t last_accepted(((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyRys  cCsŽ|pt|ƒ}|dkr-t|ƒ}n t|ƒ}|dk rat|tƒ ratd‚n|dk rŠt||ƒt||ƒn|S(s= Returns a connection to the address of a `Listener` Rsauthkey should be a byte stringN( R't PipeClientt SocketClientR,R-R.R/R7R6(R&R R3R8((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR„s     cCsĖ|r…tjƒ\}}|jtƒ|jtƒtjtj|jƒƒƒ}tjtj|jƒƒƒ}|j ƒ|j ƒn<tj ƒ\}}tj|dt ƒ}tj|dt ƒ}||fS(sL Returns pair of connection objects at either end of a pipe twritabletreadable( tsockett socketpairt setblockingtTruet_multiprocessingt ConnectionRtduptfilenoR tpipetFalse(tduplexts1ts2tc1tc2tfd1tfd2((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR»s    (Rc CsUtdƒ}|r;tj}tjtjB}tt}}ntj}tj}dt}}tj||tjtj Btj Bd||tj tj ƒ}tj ||dtj tjdtj ƒ}tj|tj ddƒytj|tj ƒWn/tk r }|jdtjkr!‚q!nXtj|d|ƒ} tj|d|ƒ} | | fS(sL Returns pair of connection objects at either end of a pipe RiiRCRDN(R!RtPIPE_ACCESS_DUPLEXt GENERIC_READt GENERIC_WRITEtBUFSIZEtPIPE_ACCESS_INBOUNDtCreateNamedPipetPIPE_TYPE_MESSAGEtPIPE_READMODE_MESSAGEt PIPE_WAITtNMPWAIT_WAIT_FOREVERtNULLt CreateFilet OPEN_EXISTINGtSetNamedPipeHandleStateR,tConnectNamedPipet WindowsErrortargstERROR_PIPE_CONNECTEDRItPipeConnection( ROR&topenmodetaccesstobsizetibsizeth1th2teRRRS((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyRŃs2      $ R+cBs,eZdZdd„Zd„Zd„ZRS(sO Representation of a socket which is bound to an address and listening icCsötjtt|ƒƒ|_yb|jjtjtjdƒ|jjtƒ|jj|ƒ|jj |ƒ|jj ƒ|_ Wn$tj k r£|jj ƒ‚nX||_d|_|dkrét|tjd|fddƒ|_n d|_dS(NiR Rft exitpriorityi(REtgetattrt_sockett setsockoptt SOL_SOCKETt SO_REUSEADDRRGRHtbindtlistent getsocknameR9terrorR t_familyR,R;RRtunlinkt_unlink(R1R&R R2((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR4’s     $cCs›x\tr^y|jjƒ\}|_Wn2tjk rY}|jdtjkr[‚q[qXPqW|j tƒt |j ƒƒ}t j |ƒ}|jƒ|S(Ni(RHRrR5R;RERyRfterrnotEINTRRGR RLRIRJR (R1tsRotfdtconn((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR5s    cCsAz|jjƒWd|j}|dk r<d|_|ƒnXdS(N(RrR R|R,(R1R{((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR #s    (R<R=R>R4R5R (((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR+ūs  cCsźttt|ƒƒ}tƒ}xštj|ƒ}|jtƒy|j|ƒWnbtjk r²}|jƒ|j dt j kst |ƒr¢t d|ƒ‚ntjdƒq!XPq!W‚t|jƒƒ}tj|ƒ}|jƒ|S(sO Return a connection object connected to the socket given by `address` isfailed to connect to address %sg{®Gįz„?(RqRER'RRGRHtconnectRyR RfR}t ECONNREFUSEDRRRtsleepR RLRIRJ(R&R RRRoR€R((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyRB-s&   "  R)cBs2eZdZdd„Zd„Zed„ƒZRS(s0 Representation of a named pipe c Cs ||_tj|tjtjtjBtjBtjtttj tj ƒ}|g|_ d|_ td|jƒt|tjd|j |jfddƒ|_dS(Ns listener created with address=%rRfRpi(R9RR[RVR\R]R^tPIPE_UNLIMITED_INSTANCESRYR_R`t _handle_queueR,R;RRR)t_finalize_pipe_listenerR (R1R&R2thandle((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR4Ss       c CsÅtj|jtjtjtjBtjBtjtttj tj ƒ}|j j |ƒ|j j dƒ}ytj|tj ƒWn8tk r·}|jdtjtjfkrø‚qønXtj|ƒS(Ni(RR[R9RVR\R]R^R…RYR_R`R†tappendtpopRdReRfRgt ERROR_NO_DATARIRh(R1t newhandleRˆRo((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR5fs    cCs,td|ƒx|D]}t|ƒqWdS(Ns closing listener with address=%r(RR (tqueueR&Rˆ((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR‡zs  N(R<R=R>R,R4R5t staticmethodR‡(((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR)Os  cCsÉtƒ}x—yHtj|dƒtj|tjtjBdtjtjdtjƒ}WnDtk rš}|j dtj tj fks‘t |ƒrœ‚qœq XPq W‚tj |tjddƒtj|ƒS(sU Return a connection object connected to the pipe given by `address` ičiN(RRt WaitNamedPipeRaRWRXR`RbReRftERROR_SEM_TIMEOUTtERROR_PIPE_BUSYRRcR]R,RIRh(R&RthRo((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyRA€s  " is #CHALLENGE#s #WELCOME#s #FAILURE#cCsddl}t|tƒS(Ni’’’’(thashlibRqtHMAC_DIGEST_NAME(R“((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pytget_digestmod_for_hmac¤s cCs’ddl}tjtƒ}|jt|ƒ|j||tƒƒjƒ}|j dƒ}||kru|jt ƒn|jt ƒt dƒ‚dS(Ni’’’’isdigest received was wrong( thmacRturandomtMESSAGE_LENGTHt send_bytest CHALLENGEtnewR•tdigestt recv_bytestWELCOMEtFAILURER(t connectionR3R–tmessageRœtresponse((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR6Øs   cCs„ddl}|jdƒ}|ttƒ}|j||tƒƒjƒ}|j|ƒ|jdƒ}|tkr€t dƒ‚ndS(Ni’’’’isdigest sent was rejected( R–RtlenRšR›R•RœR™RžR(R R3R–R”RœR¢((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR7µs   tConnectionWrappercBs#eZd„Zd„Zd„ZRS(cCsO||_||_||_x-dD]%}t||ƒ}t|||ƒq"WdS(NRLR tpollRR™(RLR R„RR™(t_connt_dumpst_loadsRqtsetattr(R1Rtdumpstloadstattrtobj((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR4Ęs     cCs#|j|ƒ}|jj|ƒdS(N(R§R¦R™(R1R­R((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pytsendĶscCs|jjƒ}|j|ƒS(N(R¦RRØ(R1R((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pytrecvŠs(R<R=R4R®RÆ(((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR¤Ås  cCstj|fddddƒS(Ni(t xmlrpclibRŖR,(R­((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyt _xml_dumpsŌscCstj|ƒ\\}}|S(N(R°R«(RR­tmethod((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyt _xml_loads×st XmlListenercBseZd„ZRS(cCs+ddlatj|ƒ}t|ttƒS(Ni’’’’(R°RR5R¤R±R³(R1R­((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR5Üs (R<R=R5(((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyR“ŪscOs%ddlatt||ŽttƒS(Ni’’’’(R°R¤RR±R³(Rftkwds((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyt XmlClientās (8t__all__RtsysRER}RRt itertoolsRItmultiprocessingRRtmultiprocessing.utilRRRRtmultiprocessing.forkingR R RYtCONNECTION_TIMEOUTR”tcountRR(tfamiliesthasattrtplatformRRR!R'tobjectRR,RRHRRR+RBR)RAR˜RšRžRŸR•R6R7R¤R±R³R“R¶(((s?/opt/alt/python27/lib64/python2.7/multiprocessing/connection.pyt#sd        "      , *2 1