bac@sddlZddlZddlZddlmZyddlmZWn!ek rkddlmZnXdddgZde fdYZ ej dkrd Z n d Z e e dd Ze e ddZdZdZdaddZddZdS(iN(tpartial(t monotonic(ttimetNoWayToWaitForSocketErrort wait_for_readtwait_for_writecBseZRS((t__name__t __module__(((s2/usr/lib/fence-agents/bundled/urllib3/util/wait.pyRsiicCs ||S(N((tfnttimeout((s2/usr/lib/fence-agents/bundled/urllib3/util/wait.pyt_retry_on_intr*scCs|dkrtd}n t|}xtry||SWq+ttjfk r}|jdtj krvq|t}|dkrd}n|tdkr+d}q+q+q+Xq+WdS(Ntinfi( tNonetfloatRtTruetOSErrortselectterrortargsterrnotEINTR(RR tdeadlinete((s2/usr/lib/fence-agents/bundled/urllib3/util/wait.pyR 0s       c Cs| r| rtdng}g}|r?|j|n|rU|j|nttj|||}t||\}}} t|p|p| S(Ns2must specify at least one of read=True, write=True(t RuntimeErrortappendRRR tbool( tsocktreadtwriteR trchecktwcheckRtrreadytwreadytxready((s2/usr/lib/fence-agents/bundled/urllib3/util/wait.pytselect_wait_for_socketGscs| r| rtdnd}|r9|tjO}n|rO|tjO}ntjj||fd}tt||S(Ns2must specify at least one of read=True, write=Trueics&|dk r|d9}nj|S(Ni(R tpoll(tt(tpoll_obj(s2/usr/lib/fence-agents/bundled/urllib3/util/wait.pytdo_pollfs  (RRtPOLLINtPOLLOUTR#tregisterRR (RRRR tmaskR&((R%s2/usr/lib/fence-agents/bundled/urllib3/util/wait.pytpoll_wait_for_socketZs cOstddS(Nsno select-equivalent available(R(Rtkwargs((s2/usr/lib/fence-agents/bundled/urllib3/util/wait.pytnull_wait_for_socketnscCsCy tj}t|jdWnttfk r:tSXtSdS(Ni(RR#R tAttributeErrorRtFalseR(R%((s2/usr/lib/fence-agents/bundled/urllib3/util/wait.pyt_have_working_pollrs  cOs=trtanttdr*tantat||S(NR(R0R+twait_for_socketthasattrRR"R-(RR,((s2/usr/lib/fence-agents/bundled/urllib3/util/wait.pyR1s    cCst|dtd|S(sWaits for reading to be available on a given socket. Returns True if the socket is readable, or False if the timeout expired. RR (R1R(RR ((s2/usr/lib/fence-agents/bundled/urllib3/util/wait.pyRscCst|dtd|S(sWaits for writing to be available on a given socket. Returns True if the socket is readable, or False if the timeout expired. RR (R1R(RR ((s2/usr/lib/fence-agents/bundled/urllib3/util/wait.pyRs(ii(RRtsyst functoolsRRRt ImportErrort__all__t ExceptionRt version_infoR R/R R"R+R-R0R1RR(((s2/usr/lib/fence-agents/bundled/urllib3/util/wait.pyts&