Ñò 6ÕUc@sdddgZddkZddkZddkZddkZddkZddkZddkZddkZddk l Z l Z ddk l Z lZlZlZddklZlZdZd ZeiƒZd Zd gZeed ƒod Zed g7Zneid jod Zed g7Zned„Zd„Zd„Zd„Zde fd„ƒYZ!ddd„Z#eid joe$d„Z%nddkl&Z&e$d„Z%de fd„ƒYZ'd„Z(eid jo#de fd„ƒYZ)d„Z*ndZ+dZ,dZ-d Z.d!„Z/d"„Z0d#e fd$„ƒYZ1d%„Z2d&„Z3d'e!fd(„ƒYZ4d)„Z5dS(*tClienttListenertPipeiÿÿÿÿN(tcurrent_processtAuthenticationError(t get_temp_dirtFinalizet sub_debugtdebug(t duplicatetclosei g4@tAF_INETtAF_UNIXtwin32tAF_PIPEcCstiƒ|S(N(ttime(ttimeout((s0/usr/lib/python2.6/multiprocessing/connection.pyt _init_timeout/scCstiƒ|jS(N(R(tt((s0/usr/lib/python2.6/multiprocessing/connection.pyt_check_timeout2scCs}|djod S|djotidddtƒƒS|djo'tidd tiƒtiƒfƒStd ƒ‚d S( s? Return an arbitrary free address for the given family R t localhostiR tprefixs listener-tdirRs\\.\pipe\pyc-%d-%d-sunrecognized familyN(Ri(ttempfiletmktempRtostgetpidt _mmap_countertnextt ValueError(tfamily((s0/usr/lib/python2.6/multiprocessing/connection.pytarbitrary_address9s    cCslt|ƒtjodSt|ƒtjo|idƒodSt|ƒtjodStd|ƒ‚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((s0/usr/lib/python2.6/multiprocessing/connection.pyt address_typeHs#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|o t|ƒpt}|p t|ƒ}|djot||ƒ|_nt|||ƒ|_|dj ot|tƒ o t d‚n||_ dS(NRsauthkey should be a byte string( R%tdefault_familyRt PipeListenert _listenertSocketListenertNonet isinstancetbytest TypeErrort_authkey(tselfR$Rtbacklogtauthkey((s0/usr/lib/python2.6/multiprocessing/connection.pyt__init__bs  cCsA|iiƒ}|io$t||iƒt||iƒn|S(sz Accept a connection on the bound socket or named pipe of `self`. Returns a `Connection` object. (R(tacceptR.tdeliver_challengetanswer_challenge(R/tc((s0/usr/lib/python2.6/multiprocessing/connection.pyR3qs  cCs |iiƒS(sA Close the bound socket or named pipe of `self`. (R(R (R/((s0/usr/lib/python2.6/multiprocessing/connection.pyR }scCs |iiS((R(t_address(R/((s0/usr/lib/python2.6/multiprocessing/connection.pytƒscCs |iiS((R(t_last_accepted(R/((s0/usr/lib/python2.6/multiprocessing/connection.pyR8„sN( t__name__t __module__t__doc__R*R2R3R tpropertyR$t last_accepted(((s0/usr/lib/python2.6/multiprocessing/connection.pyR[s  cCs–|p t|ƒ}|djot|ƒ}n t|ƒ}|dj ot|tƒ o td‚n|dj ot||ƒ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-R5R4(R$RR1R6((s0/usr/lib/python2.6/multiprocessing/connection.pyR‡s     cCs³|oftiƒ\}}titi|iƒƒƒ}titi|iƒƒƒ}|iƒ|iƒn=tiƒ\}}ti|dt ƒ}ti|dt ƒ}||fS(sL Returns pair of connection objects at either end of a pipe twritabletreadable( tsockett socketpairt_multiprocessingt ConnectionRtduptfilenoR tpipetFalse(tduplexts1ts2tc1tc2tfd1tfd2((s0/usr/lib/python2.6/multiprocessing/connection.pyRs (R c Cs[tdƒ}|o*ti}titiB}tt}}n ti}ti}dt}}ti||titi Bti Bd||ti ti ƒ}ti ||dti tidti ƒ}ti|ti ddƒyti|ti ƒWn3tj o'}|idtijo‚q'nXti|d|ƒ} ti|d|ƒ} | | fS(sL Returns pair of connection objects at either end of a pipe RiiRARBN(RR tPIPE_ACCESS_DUPLEXt GENERIC_READt GENERIC_WRITEtBUFSIZEtPIPE_ACCESS_INBOUNDtCreateNamedPipetPIPE_TYPE_MESSAGEtPIPE_READMODE_MESSAGEt PIPE_WAITtNMPWAIT_WAIT_FOREVERtNULLt CreateFilet OPEN_EXISTINGtSetNamedPipeHandleStateR*tConnectNamedPipet WindowsErrortargstERROR_PIPE_CONNECTEDREtPipeConnection( RKR$topenmodetaccesstobsizetibsizeth1th2teRNRO((s0/usr/lib/python2.6/multiprocessing/connection.pyR²s2      $ R)cBs,eZdZdd„Zd„Zd„ZRS(sO Representation of a socket which is bound to an address and listening icCs½titt|ƒƒ|_|iititidƒ|ii|ƒ|ii|ƒ|iiƒ|_ ||_ d|_ |djo(t |tid|fddƒ|_n d|_dS(NiR Rbt exitpriorityi(RCtgetattrt_sockett setsockoptt SOL_SOCKETt SO_REUSEADDRtbindtlistent getsocknameR7t_familyR*R9RRtunlinkt_unlink(R/R$RR0((s0/usr/lib/python2.6/multiprocessing/connection.pyR2às   %cCsG|iiƒ\}|_t|iƒƒ}ti|ƒ}|iƒ|S(N(RnR3R9R RHRERFR (R/tstfdtconn((s0/usr/lib/python2.6/multiprocessing/connection.pyR3ðs  cCs/|iiƒ|idj o|iƒndS(N(RnR RwR*(R/((s0/usr/lib/python2.6/multiprocessing/connection.pyR ÷s (R:R;R<R2R3R (((s0/usr/lib/python2.6/multiprocessing/connection.pyR)Üs  cCs×t|ƒ}titt|ƒƒ}tƒ}xxy|i|ƒWn]tij oN}|idtijp t |ƒot d|ƒ‚nt i dƒq0XPq0‚t |iƒƒ}ti|ƒ}|iƒ|S(sO Return a connection object connected to the socket given by `address` isfailed to connect to address %sg{®Gáz„?(R%RCRmRtconnectterrorRbterrnot ECONNREFUSEDRRRtsleepR RHRERFR (R$RRxRRkRyRz((s0/usr/lib/python2.6/multiprocessing/connection.pyR@ýs"  $  R'cBs2eZdZdd„Zd„Zed„ƒZRS(s0 Representation of a named pipe c Cs ||_ti|tititiBtiBtittti ti ƒ}|g|_ d|_ td|iƒt|tid|i |ifddƒ|_dS(Ns listener created with address=%rRbRli(R7R RWRRRXRYRZtPIPE_UNLIMITED_INSTANCESRUR[R\t _handle_queueR*R9RRR't_finalize_pipe_listenerR (R/R$R0thandle((s0/usr/lib/python2.6/multiprocessing/connection.pyR2!s       c CsÀti|itititiBtiBtittti ti ƒ}|i i |ƒ|i i dƒ}yti|ti ƒWn3tj o'}|idtijo‚q³nXti|ƒS(Ni(R RWR7RRRXRYRZR€RUR[R\RtappendtpopR`RaRbRcRERd(R/t newhandleRƒRk((s0/usr/lib/python2.6/multiprocessing/connection.pyR34s    cCs,td|ƒx|D]}t|ƒqWdS(Ns closing listener with address=%r(RR (tqueueR$Rƒ((s0/usr/lib/python2.6/multiprocessing/connection.pyR‚Es N(R:R;R<R*R2R3t staticmethodR‚(((s0/usr/lib/python2.6/multiprocessing/connection.pyR's  c CsÍtƒ}x›yHti|dƒti|titiBdtitidtiƒ}WnItj o=}|i dti ti fjp t |ƒo‚q¡q XPq ‚ti |tiddƒti|ƒS(sU Return a connection object connected to the pipe given by `address` ièiN(RR t WaitNamedPipeR]RSRTR\R^RaRbtERROR_SEM_TIMEOUTtERROR_PIPE_BUSYRR_RYR*RERd(R$RthRk((s0/usr/lib/python2.6/multiprocessing/connection.pyR?Ks  " is #CHALLENGE#s #WELCOME#s #FAILURE#cCs¥ddk}t|tƒpt‚titƒ}|it|ƒ|i ||ƒi ƒ}|i dƒ}||jo|it ƒn|it ƒtdƒ‚dS(Niÿÿÿÿisdigest received was wrong(thmacR+R,tAssertionErrorRturandomtMESSAGE_LENGTHt send_bytest CHALLENGEtnewtdigestt recv_bytestWELCOMEtFAILURER(t connectionR1RtmessageR”tresponse((s0/usr/lib/python2.6/multiprocessing/connection.pyR4os   cCs¼ddk}t|tƒpt‚|idƒ}|ttƒ tjptd|‚|ttƒ}|i||ƒiƒ}|i |ƒ|idƒ}|t jot dƒ‚ndS(Niÿÿÿÿis message = %rsdigest sent was rejected( RR+R,RŽR•tlenR’R“R”R‘R–R(R˜R1RR™R”Rš((s0/usr/lib/python2.6/multiprocessing/connection.pyR5|s %  tConnectionWrappercBs#eZd„Zd„Zd„ZRS(cCsO||_||_||_x-dD]%}t||ƒ}t|||ƒq"WdS(NRHR tpollR•R‘(sfilenoscloseRs recv_bytess send_bytes(t_connt_dumpst_loadsRmtsetattr(R/Rztdumpstloadstattrtobj((s0/usr/lib/python2.6/multiprocessing/connection.pyR2s   cCs#|i|ƒ}|ii|ƒdS(N(RŸRžR‘(R/R¥Rx((s0/usr/lib/python2.6/multiprocessing/connection.pytsend”scCs|iiƒ}|i|ƒS(N(RžR•R (R/Rx((s0/usr/lib/python2.6/multiprocessing/connection.pytrecv—s(R:R;R2R¦R§(((s0/usr/lib/python2.6/multiprocessing/connection.pyRœŒs  cCs%ti|fddddƒidƒS(Nitutf8(t xmlrpclibR¢R*tencode(R¥((s0/usr/lib/python2.6/multiprocessing/connection.pyt _xml_dumps›scCs%ti|idƒƒ\\}}|S(NR¨(R©R£tdecode(RxR¥tmethod((s0/usr/lib/python2.6/multiprocessing/connection.pyt _xml_loadsžs!t XmlListenercBseZd„ZRS(cCs+ddkati|ƒ}t|ttƒS(Niÿÿÿÿ(R©RR3RœR«R®(R/R¥((s0/usr/lib/python2.6/multiprocessing/connection.pyR3£s (R:R;R3(((s0/usr/lib/python2.6/multiprocessing/connection.pyR¯¢scOs%ddkatt||ŽttƒS(Niÿÿÿÿ(R©RœRR«R®(Rbtkwds((s0/usr/lib/python2.6/multiprocessing/connection.pyt XmlClient©s (6t__all__RtsysRCR}RRt itertoolsREtmultiprocessingRRtmultiprocessing.utilRRRRtmultiprocessing.forkingR R RUtCONNECTION_TIMEOUTtcountRR&tfamiliesthasattrtplatformRRRR%tobjectRR*RtTrueRR R)R@R'R?RR’R–R—R4R5RœR«R®R¯R±(((s0/usr/lib/python2.6/multiprocessing/connection.pyt s`        "      , *! .