U mfM @sdZddlZddlZddlZddlZddlZddlZddlZej dsPe dddZ ej jZGdddejjZGd d d ejjZej d rddlZddlZddlZejZejjjZdd lmZmZmZGd ddeZGdddej Z!nejj"Z!Gdddejj#Z#dS)z$trio async I/O library query supportNtrioztrio not found or too oldcCs |dk rt|StjSdSN)rZ move_on_afterdns _asyncbackendZ NullContexttimeoutr?/opt/hc_python/lib/python3.8/site-packages/dns/_trio_backend.py_maybe_timeouts r csLeZdZfddZddZddZddZd d Zd d Zd dZ Z S)DatagramSocketcst|j||_dSr)super__init__familysocket)selfr __class__rr r !szDatagramSocket.__init__c sBt|"|j||IdHW5QRSQRXtjj|ddSNr)r rsendtor exceptionTimeout)rwhat destinationrrrr r%s  &zDatagramSocket.sendtoc s@t| |j|IdHW5QRSQRXtjj|ddSr)r rrecvfromrrrrsizerrrr r,s $zDatagramSocket.recvfromcs|jdSr)rcloserrrr r1szDatagramSocket.closecs |jSr)r getpeernamerrrr r4szDatagramSocket.getpeernamecs |jSr)r getsocknamerrrr r7szDatagramSocket.getsocknamecstdSrNotImplementedErrorrrrrr getpeercert:szDatagramSocket.getpeercert) __name__ __module__ __qualname__r rrrrrr# __classcell__rrrr r s r c@sFeZdZdddZddZddZdd Zd d Zd d ZddZ dS) StreamSocketFcCs||_||_||_dSr)rstreamtls)rrr)r*rrr r ?szStreamSocket.__init__c s@t| |j|IdHW5QRSQRXtjj|ddSr)r r)Zsend_allrrr)rrrrrr sendallDs $zStreamSocket.sendallc s@t| |j|IdHW5QRSQRXtjj|ddSr)r r)Z receive_somerrrrrrr recvIs $zStreamSocket.recvcs|jIdHdSr)r)acloserrrr rNszStreamSocket.closecs$|jr|jjjS|jjSdSr)r*r)transport_streamrrrrrr rQszStreamSocket.getpeernamecs$|jr|jjjS|jjSdSr)r*r)r.rrrrrr rWszStreamSocket.getsocknamec s<|jr4t||jIdHW5QRX|jStdSr)r*r r) do_handshaker#r!r"rrr r#]s   zStreamSocket.getpeercertN)F) r$r%r&r r+r,rrrr#rrrr r(>s r(Zdoh)_compute_times_expiration_for_this_attempt _remainingcs8eZdZfddZd ddZd ddZdd ZZS) _NetworkBackendcs&t||_||_||_||_dSr)r r _local_port _resolver_bootstrap_address_family)rresolver local_portbootstrap_addressrrrr r qs  z_NetworkBackend.__init__Nc s$g}t|\}}tj|r(||nV|jdk r@||jn>t|}|j} |r^tj|} |j j || |dIdH} | }|D]} zvtj| } |dk s|j dkr||j f} nd} | |f}t d|}t|}t| tjd| ||IdH}t|jWStk rYqYqXqtjdS)N)rZlifetimerg@)r0rinetZ is_addressappendr6r2r7Zaf_for_addressr5 resolve_name addressesr4r1Backend make_socketr SOCK_STREAM_CoreTrioStreamr) ExceptionhttpcoreZ ConnectError)rhostportrZ local_addresssocket_optionsr>_Z expirationrZanswersaddressafsourcerZattempt_expirationsockrrr connect_tcpxsJ           z_NetworkBackend.connect_tcpcstdSrr )rpathrrGrrr connect_unix_socketsz#_NetworkBackend.connect_unix_socketcst|IdHdSrrsleep)rsecondsrrr rQsz_NetworkBackend.sleep)N)N)r$r%r&r rMrOrQr'rrrr r3ps   % r3cs*eZdZdddejdfdd ZZS)_HTTPTransportrN)r9r:r8rcs>|dkrddl}|j}tj||t|||||j_dS)Nr)Zdns.asyncresolverZ asyncresolverResolverr r r3_poolZ_network_backend)rr9r:r8rargskwargsrrrr r s  z_HTTPTransport.__init__)r$r%r&r AF_UNSPECr r'rrrr rSs rSc@s6eZdZddZd ddZddZd d Zd d ZdS)r?cCsdS)Nrrrrrr namesz Backend.namerNc s4tj|||} d} zl|r0| t||IdH|tjkr~d} t| | t||IdHd} W5QRX| s~tjj |dWnt k r| YnX|tj krt | S|tjkrt| } d} |rd} ztj| ||d} Wn&t k r| IdHYnXt|| | Stdd|dS)NFTr)server_hostnamezunsupported socket ztype )rrbind_lltuplerAr connectrrrrCr SOCK_DGRAMr Z SocketStreamZ SSLStreamr-r(r!) rrJsocktypeprotorKrr ssl_contextrZsr) connectedr*rrr r@sJ          zBackend.make_socketcst|IdHdSrrP)rintervalrrr rQsz Backend.sleepcCstSr)rSrrrr get_transport_classszBackend.get_transport_classc s8t||IdHW5QRSQRXtjj|ddSr)r rrr)rZ awaitablerrrr wait_fors  zBackend.wait_for)rNNNNN)r$r%r&rYr@rQrerfrrrr r?s /r?)$__doc__rrZ trio.socketZdns._asyncbackendrZ dns._featuresZ dns.exceptionZdns.inetZ _featuresZhave ImportErrorr r;Zlow_level_address_tupler\rr r(rDZhttpcore._backends.trioZhttpxZAsyncNetworkBackendZ_CoreAsyncNetworkBackendZ _backendsZ TrioStreamrBZ dns.queryr0r1r2r3ZAsyncHTTPTransportrSZ NullTransportr?rrrr s0 (  4