a oe@sddlZddlZddlZddlmZzddlmZWneyRddlmZYn0gdZGddde Z ej dkrd d Z nd d Z dd dZ dddZddZddZddadddZdddZdS)N)partial) monotonic)time)NoWayToWaitForSocketError wait_for_readwait_for_writec@s eZdZdS)rN)__name__ __module__ __qualname__r r 2C:\Program Files\Certbot\pkgs\urllib3\util\wait.pyrsr)cCs||S)Nr )fntimeoutr r r _retry_on_intr*src Cs|durtd}n t|}z ||WSttjfy}zR|jdtjkrPn2|t}|dkrfd}|tdkrvd}WYd}~qWYd}~qd}~00qdS)Ninfr)floatrOSErrorselecterrorargserrnoZEINTR)rrZdeadlineer r r r/s     Fc Csd|s|stdg}g}|r&|||r4||ttj|||}t||\}}} t|p`|p`| S)N2must specify at least one of read=True, write=True) RuntimeErrorappendrrrbool) sockreadwriterZrcheckZwcheckrZrreadyZwreadyZxreadyr r r select_wait_for_socketFs  r!cs^|s|stdd}|r"|tjO}|r0|tjO}t||fdd}tt||S)Nrrcs|dur|d9}|S)Ni)poll)tZpoll_objr r do_pollesz%poll_wait_for_socket..do_poll)rrZPOLLINZPOLLOUTr"registerrr)rrr rmaskr%r r$r poll_wait_for_socketYs    r(cOs tddS)Nzno select-equivalent available)rrkwargsr r r null_wait_for_socketmsr+c Cs:zt}t|jdWnttfy0YdS0dSdS)NrFT)rr"rAttributeErrorrr$r r r _have_working_pollqs r-cOs.tr tanttdrtantat|i|S)Nr)r-r(wait_for_sockethasattrrr!r+r)r r r r.~s  r.cCst|d|dS)zWaits for reading to be available on a given socket. Returns True if the socket is readable, or False if the timeout expired. T)rrr.rrr r r rsrcCst|d|dS)zWaits for writing to be available on a given socket. Returns True if the socket is readable, or False if the timeout expired. T)r rr0r1r r r rsr)FFN)FFN)N)N)rrsys functoolsrrr ImportError__all__ Exceptionr version_inforr!r(r+r-r.rrr r r r s&