Ϫf% ddZddlmZmZmZmZmZmZmZm Z m Z ddl m Z m Z mZmZmZmZmZmZmZddlmZddlmZddlmZmZddlmZddlmZdd l m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&dd l'm(Z(dd l)m*Z*dd l+m,Z,e rdd l-m.Z.ee#GddZ/e0eegZ1e0egee0egee1eiZ2eeeeiZ3eedZ4edediZ5eeeee6e7eee7e6fee7e6e6e6fffZ8ee"GddZ9ee"GddZ:ee%GddZ;ee&GddZ_getThreadPool _getaddrinfo)r)r=r>r s r*r+zGAIResolver.__init__ts-,  %2%:G ! !  (r,resolutionReceiverhostName portNumber addressTypestransportSemanticsr-c8 j}t|tn t| t| dt f  fd }t j||}t} j| |jdt ddffd } | S)< See L{IHostnameResolver.resolveHostName} @param resolutionReceiver: see interface @param hostName: see interface @param portNumber: see interface @param addressTypes: see interface @param transportSemantics: see interface @return: see interface Nr-cP jS#t$rgcYSwxYwr/)rBr ) addressFamilyrDrEr) socketTypesr*getz(GAIResolver.resolveHostName..gets: ((j-   s  %%resultc |D]=\}}}}}t|}j|tj|dg|?j yNr9) _afToTypeaddressResolved_socktypeToTyperMresolutionComplete)rNfamilysocktypeproto cannonamesockaddraddrTyperCs r*deliverResultsz3GAIResolver.resolveHostName..deliverResultss]@F <%H$V,"22_005AMHM   1 1 3r,) rA _typesToAF_any frozenset_transportToSocket_GETADDRINFO_RESULTr!r@r&resolutionBegan addCallback) r)rCrDrErFrGpoolrMd resolutionr[rKrLs ```` @@r*resolveHostNamezGAIResolver.resolveHostNames.""$" (Di .E ((:;  (   dmmT3 7#H- **:6  4#6 44 4  4r,rNr9)r3r4r5r6r rrr r7intr`r+rrrrrrfr8r,r*r<r<ms?CKV ( ( \)9 :;(sCc24GGH (@;?"' 2/22 2 xX78 2  2 2r,r<c deZdZdZeZdefdZ d dede de de e e ed e d ef d Zy) SimpleResolverComplexifierzF A converter from L{IResolverSimple} to L{IHostnameResolver}. simpleResolverc||_y)zW Construct a L{SimpleResolverComplexifier} with an L{IResolverSimple}. N)_simpleResolver)r)rks r*r+z#SimpleResolverComplexifier.__init__s  .r,NrCrDrErFrGr-cZ jd}t|t }j |j jjfdjfdjfd|S#t$rt}YwxYw)rIasciic<jtd|SrP)rRr)addressrErCs r*z.s 2 B Bw ;!r,c|jtrdSjjd|jS)Nz'while looking up {name} with {resolver})r'resolver)checkr_logfailurerm)errorrDr)s r*rrz.sD;;~.#YY&&=!!11 'r,c$jSr/)rT)nothingrCs r*rrz. s);)N)N)Pr,) encodeUnicodeEncodeErrorrr#r&rarm getHostByNamerb addErrback)r)rCrDrErFrGhostName_bytesres```` r*rfz*SimpleResolverComplexifier.resolveHostNames0 2%__W5N /#H- **:6  . .x 8 [ Z [P Q?" 2 (1N  2sBB*)B*rg)r3r4r5r6r"rvr r+rr7rhrrrrrrfr8r,r*rjrjst 8D..;?"' 9/99 9 xX78 9  9 9r,rjc@eZdZdZd dZdeddfdZdeddfdZd d Z y) FirstOneWinszT An L{IResolutionReceiver} which fires a L{Deferred} with its first result. c ||_d|_y)zp @param deferred: The L{Deferred} to fire when the first resolution result arrives. FN) _deferred _resolved)r)deferreds r*r+zFirstOneWins.__init__s "r,rer-Nc||_y)z See L{IResolutionReceiver.resolutionBegan} @param resolution: See L{IResolutionReceiver.resolutionBegan} N) _resolution)r)res r*razFirstOneWins.resolutionBegans &r,rqc|jryd|_t|tsJ|jj |j y)z See L{IResolutionReceiver.addressResolved} @param address: See L{IResolutionReceiver.addressResolved} NT)r isinstancerrcallbackhost)r)rqs r*rRzFirstOneWins.addressResolved%s= >> ';///  -r,c|jry|jjt|jj y)z? See L{IResolutionReceiver.resolutionComplete} N)rrerrbackrrr'r1s r*rTzFirstOneWins.resolutionComplete3s1 >>  ~d.>.>.C.CDEr,)r Deferred[str])r-N) r3r4r5r6r+rrarrRrTr8r,r*rrs8&/&d& .x .D .Fr,rc8eZdZdZdefdZd dedeeddfdZ y ) ComplexResolverSimplifierzE A converter from L{IHostnameResolver} to L{IResolverSimple} nameResolverc||_y)z Create a L{ComplexResolverSimplifier} with an L{IHostnameResolver}. @param nameResolver: The L{IHostnameResolver} to use. N) _nameResolver)r)rs r*r+z"ComplexResolverSimplifier.__init__Bs *r,r'timeoutsr-rcrt}|jjt||dtg|S)z See L{IResolverSimple.getHostByName} @param name: see L{IResolverSimple.getHostByName} @param timeouts: see L{IResolverSimple.getHostByName} @return: see L{IResolverSimple.getHostByName} r)rrrfrr)r)r'rrNs r*r}z'ComplexResolverSimplifier.getHostByNameJs1#+* **<+?q;-X r,N)r8) r3r4r5r6rr+r7rrhr}r8r,r*rr<s2*%6* # #  r,rN)=r6socketrrrrrrr r r typingr r rrrrrrrzope.interfacertwisted.internet._idnartwisted.internet.addressrrtwisted.internet.deferrtwisted.internet.errorrtwisted.internet.interfacesrrrrrr twisted.internet.threadsr!twisted.loggerr"twisted.python.compatr#twisted.python.threadpoolr$r&r^r]r\rQr_rSrhr7r`r<rjrrr8r,r*rs       '-=+17!.4 _ $ $ $ +{+,{mg {mh)  [ k         eCHouS#sC%7889  ; TT Tn FF FR !)F)F")FX _r,