Ñò ¶ÓòKc @s”ddkZddkiZddkiiZddkiii Z yddk Z Wne e fj onXddkZdefd„ƒYZdS(iÿÿÿÿNtMirrorDetectorcBsDeZdZd„Zd„Zd„Zd„Zd„Zd„ZRS(svThis class uses mDNS and DNS-SD to find link-local content mirrors that may be present on the client's subnet.cCsg|_d|_d|_dS(Nis _pkg5._tcp(t_mirrorst_MirrorDetector__timeoutt_MirrorDetector__service(tself((sB/usr/lib/python2.6/vendor-packages/pkg/client/transport/mdetect.pyt__init__-s  cCs ||ijS(N(R(Rtkey((sB/usr/lib/python2.6/vendor-packages/pkg/client/transport/mdetect.pyt __contains__2scCs |i|S(N(R(Rtpos((sB/usr/lib/python2.6/vendor-packages/pkg/client/transport/mdetect.pyt __getitem__5sccsQt|iƒ}tit|ƒt|dƒƒ}x|D]}|i|Vq7WdS(suEach time iterator is invoked, randomly select up to five mirrors from the list of available mirrors.iN(tlenRtrandomtsampletxrangetmin(Rtlistlentiterlsttv((sB/usr/lib/python2.6/vendor-packages/pkg/client/transport/mdetect.pyt__iter__8s !csygˆ_dtƒjodSt}ˆi}‡fd†}ytidˆid|ƒ}Wn9tij o*}d|dd}ti |ƒ‚nXzÐy\xU|pMt i |ggg|ƒ}||djoti |ƒd}q t }q WWnmt i j o&}d |d}ti |ƒ‚n:tij o*}d |dd}ti |ƒ‚nXWd|iƒXdS( s‚When invoked, this populates the MirrorDetector object with URLs that name dynamically discovered content mirrors.t pybonjourNcsE|tijodS|ti@pdSˆi|||||ƒdS(N(RtkDNSServiceErr_NoErrortkDNSServiceFlagsAddt_resolve_server(tsd_hdltflagst interface_idxt error_codet service_nametregtypet reply_domain(R(sB/usr/lib/python2.6/vendor-packages/pkg/client/transport/mdetect.pyt browse_cbOs  RtcallBacksmDNS Service Browse Failed: %s iisSelect failed: %s smDNS Process Result failed: %s (RtglobalstFalseRRtDNSServiceBrowseRt BonjourErrorttxt mDNSExceptiontselecttDNSServiceProcessResulttTrueterrortclose(RttimedoutttvalRRteterrstrtavail((RsB/usr/lib/python2.6/vendor-packages/pkg/client/transport/mdetect.pytlocateBs:     c s^t}ˆi}‡fd†}y"tid|||||ƒ} Wn9tij o*} d| dd} ti| ƒ‚nXzÐy\xU|pMti| ggg|ƒ} | | djoti| ƒd}q…t }q…WWnmti j o&} d| d} ti| ƒ‚n:tij o*} d| dd} ti| ƒ‚nXWd| i ƒXdS(siInvoked to resolve mDNS information about a service that was discovered by a Browse call.c st|tijodStii|ƒ}d|jo<|d} ti| ƒpdSˆiiti | ƒƒndS(Nturl( RRt TXTRecordtparsetmisct valid_pub_urlRtappendtpubt RepositoryURI( RRRRt full_namet host_targettportt txt_recordttrR1(R(sB/usr/lib/python2.6/vendor-packages/pkg/client/transport/mdetect.pyt resolve_cb|s  is mDNS Service Resolve Failed: %s isSelect failed; %s smDNS Process Result Failed: %s N( R!RRtDNSServiceResolveR#R$R%R&R'R(R)R*( Rtif_idxtecRRRR+R,R>RR-R.R/((RsB/usr/lib/python2.6/vendor-packages/pkg/client/transport/mdetect.pyRts4    ( t__name__t __module__t__doc__RRR RR0R(((sB/usr/lib/python2.6/vendor-packages/pkg/client/transport/mdetect.pyR)s    2(R tpkg.miscR4tpkg.client.publishertclientt publisherR7tpkg.client.transport.exceptiont transportt exceptionR$RtOSErrort ImportErrorR&tobjectR(((sB/usr/lib/python2.6/vendor-packages/pkg/client/transport/mdetect.pyts