mò óRÅDc@ssdkTeeƒdƒdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd „ƒYZd S( (t*serrno os socket time utilt LockExceptioncBstZd„ZRS(NcCs#ti||||ƒ||_dS(N(tIOErrort__init__tselfterrnotstrerrortfilenametdesc(RRRRR((t2/usr/lib/python2.4/site-packages/mercurial/lock.pyR s(t__name__t __module__R(((R R stLockHeldcBstZd„ZRS(NcCs&ti||d||ƒ||_dS(Ns Lock held(RRRRRRtlocker(RRRRR ((R Rs(R R R(((R R stLockUnavailablecBstZRS(N(R R (((R RstlockcBsGtZdddd„Zd„Zd„Zd„Zd„Zd„ZRS(NiÿÿÿÿcCsV||_d|_||_||_d|_d|_d|_ ||_ |i ƒdS(Ni( tfileRtftheldttimeoutt releasefntNonetidthosttpidRR(RRRRR((R R!s        cCs|iƒdS(N(Rtrelease(R((R t__del__,scCsœ|i}xŒy|iƒdSWq tj of}|djo/tidƒ|djo|d8}q q ntti|i |i |i ƒ‚q Xq WdS(Nii( RRttrylockR tinstttimetsleepRt ETIMEDOUTRRR (RRR((R R/s     cCs|idjo;tiƒ|_tiƒ|_d|i|if|_nx½|i p²y#t i |i|i ƒd|_ WqNt tfj ov}|itijo9|iƒ}|o"tti|i |i|ƒ‚qqt|i|i|i|iƒ‚qNXqNWdS(Ns%s:%si(RRRtsockett gethostnameRtostgetpidRRtutiltmakelockRtOSErrorRtwhyRtEEXISTttestlockR R tEAGAINRRRR(RR R'((R R>s"   cCsõti|iƒ}y|iddƒ\}}Wntj o |SnX||ijo|Snyt |ƒ}Wn |SnXti |ƒo|Sny;t |idƒ}|i ƒti|iƒ|iƒWnttfj o |SnXdS(s0return id of locker if lock is valid, else None.t:is.breakN(R$treadlockRRR tsplitRRt ValueErrortintttestpidRtlRR"tunlinkRR R(RRR R1R((R R)Qs*  cCsQ|ioCd|_|io|iƒnyti|iƒWqMqMXndS(Ni(RRRR"R2R(R((R Rns   ( R R RRRRRR)R(((R Rs      N(t demandloadtglobalsRRR RtobjectR(RRRR ((R t?s