3 2aK@sddlmZmZddlmZmZddlZddlZddlZd(Z d)Z ddZ eddd d d gZ d e _ ejd*krde j_ de j_ de j_ de j_ GdddeZGdddedZGdddeZGdddeZeedrGdddeZeedrGd d!d!eZeed"rGd#d$d$eZeed%r:Gd&d'd'eZd'ekrLeZn:d!ekr^eZn(d$ekrpeZndekreZneZdS)+)ABCMetaabstractmethod) namedtupleMappingNc Csft|tr|}nsz_SelectorMapping.__init__cCs t|jjS)N)lenr _fd_to_key)rrrr__len__Asz_SelectorMapping.__len__c CsBy|jj|}|jj|Stk r<tdj|dYnXdS)Nz{!r} is not registered)r_fileobj_lookuprKeyErrorr )rrrrrr __getitem__Ds   z_SelectorMapping.__getitem__cCs t|jjS)N)iterrr)rrrr__iter__Ksz_SelectorMapping.__iter__N)__name__ __module__ __qualname__rrr!r#rrrrr;src@sjeZdZedddZeddZdddZeddd Zd d Zd d Z eddZ ddZ ddZ dS) BaseSelectorNcCstdS)N)NotImplementedError)rrrrrrrregister^szBaseSelector.registercCstdS)N)r()rrrrr unregisteruszBaseSelector.unregistercCs|j||j|||S)N)r*r))rrrrrrrmodifys zBaseSelector.modifycCstdS)N)r()rtimeoutrrrselectszBaseSelector.selectcCsdS)Nr)rrrrcloseszBaseSelector.closec CsJ|j}|dkrtdy||Stk rDtdj|dYnXdS)NzSelector is closedz{!r} is not registered)get_map RuntimeErrorr r )rrmappingrrrget_keyszBaseSelector.get_keycCstdS)N)r()rrrrr/szBaseSelector.get_mapcCs|S)Nr)rrrr __enter__szBaseSelector.__enter__cGs |jdS)N)r.)rargsrrr__exit__szBaseSelector.__exit__)N)N)N) r$r%r&rr)r*r+r-r.r2r/r3r5rrrrr'Os     r') metaclassc@sPeZdZddZddZdddZdd Zdd d Zd d ZddZ ddZ dS)_BaseSelectorImplcCsi|_t||_dS)N)rr_map)rrrrrsz_BaseSelectorImpl.__init__c CsHyt|Stk rBx"|jjD]}|j|kr$|jSq$WYnXdS)N)rr rvaluesrr)rrkeyrrrrs   z!_BaseSelectorImpl._fileobj_lookupNcCsd| s|ttB@r"tdj|t||j|||}|j|jkrTtdj||j||j|j<|S)NzInvalid events: {!r}z"{!r} (FD {}) is already registered) EVENT_READ EVENT_WRITEr r rrrrr )rrrrr:rrrr)s   z_BaseSelectorImpl.registerc Cs@y|jj|j|}Wn$tk r:tdj|dYnX|S)Nz{!r} is not registered)rpoprr r )rrr:rrrr*s z_BaseSelectorImpl.unregisterc Csy|j|j|}Wn$tk r8tdj|dYnX||jkr^|j||j|||}n"||jkr|j|d}||j|j <|S)Nz{!r} is not registered)r) rrr r rr*r)r_replacer)rrrrr:rrrr+s     z_BaseSelectorImpl.modifycCs|jjd|_dS)N)rclearr8)rrrrr. s z_BaseSelectorImpl.closecCs|jS)N)r8)rrrrr/sz_BaseSelectorImpl.get_mapc Cs$y |j|Stk rdSXdS)N)rr )rrrrr _key_from_fds  z_BaseSelectorImpl._key_from_fd)N)N) r$r%r&rrr)r*r+r.r/r@rrrrr7s  r7cs\eZdZfddZd fdd ZfddZejdkrDdd d Zne j Zdd d Z Z S)SelectSelectorcstjt|_t|_dS)N)superrset_readers_writers)r) __class__rrr%s zSelectSelector.__init__Ncs@tj|||}|t@r&|jj|j|t@r<|jj|j|S)N)rBr)r;rDaddrr<rE)rrrrr:)rFrrr)*s zSelectSelector.registercs,tj|}|jj|j|jj|j|S)N)rBr*rDdiscardrrE)rrr:)rFrrr*2s zSelectSelector.unregisterwin32cCs$tj||||\}}}|||gfS)N)r-)rrw_r,xrrr_select9szSelectSelector._selectc Cs|dkr dnt|d}g}y|j|j|jg|\}}}Wntk rL|SXt|}t|}xV||BD]J}d}||kr|tO}||kr|tO}|j|}|rh|j |||j @fqhW|S)Nr) maxrNrDrEInterruptedErrorrCr;r<r@appendr) rr,readyrJrKrLrrr:rrrr-?s$ zSelectSelector.select)N)N)N) r$r%r&rr)r*sysplatformrNr- __classcell__rr)rFrrA"s    rApollcs@eZdZfddZd fdd ZfddZd dd ZZS) PollSelectorcstjtj|_dS)N)rBrr-rV_poll)r)rFrrrZs zPollSelector.__init__NcsLtj|||}d}|t@r&|tjO}|t@r8|tjO}|jj|j||S)Nr) rBr)r;r-POLLINr<POLLOUTrXr)rrrrr: poll_events)rFrrr)^s  zPollSelector.registercstj|}|jj|j|S)N)rBr*rXr)rrr:)rFrrr*hs zPollSelector.unregisterc Cs|dkrd}n|dkrd}ntj|d}g}y|jj|}Wntk rR|SXx^|D]V\}}d}|tj@rz|tO}|tj@r|t O}|j |}|rZ|j |||j @fqZW|S)Nrg@@) mathceilrXrVrPr-rYr<rZr;r@rQr)rr,rR fd_event_listreventrr:rrrr-ms(   zPollSelector.select)N)N)r$r%r&rr)r*r-rUrr)rFrrWWs  rWepollcsTeZdZfddZddZdfdd Zfdd Zdd d Zfd d ZZ S) EpollSelectorcstjtj|_dS)N)rBrr-r`_epoll)r)rFrrrs zEpollSelector.__init__cCs |jjS)N)rbr )rrrrr szEpollSelector.filenoNc sttj|||}d}|t@r&|tjO}|t@r8|tjO}y|jj|j|Wn"t k rntj |YnX|S)Nr) rBr)r;r-EPOLLINr<EPOLLOUTrbr BaseExceptionr*)rrrrr:Z epoll_events)rFrrr)s   zEpollSelector.registerc s8tj|}y|jj|jWntk r2YnX|S)N)rBr*rbrOSError)rrr:)rFrrr*s  zEpollSelector.unregisterc Cs|dkrd}n |dkrd}ntj|dd}tt|jd}g}y|jj||}Wntk rh|SXx^|D]V\}}d}|tj @r|t O}|tj @r|t O}|j |}|rp|j|||j@fqpW|S)Nrrg@@gMbP?)r\r]rOrrrbrVrPr-rcr<rdr;r@rQr) rr,max_evrRr^rr_rr:rrrr-s*   zEpollSelector.selectcs|jjtjdS)N)rbr.rB)r)rFrrr.s zEpollSelector.close)N)N) r$r%r&rr r)r*r-r.rUrr)rFrras   radevpollcsTeZdZfddZddZdfdd Zfdd Zdd d Zfd d ZZ S)DevpollSelectorcstjtj|_dS)N)rBrr-ri_devpoll)r)rFrrrs zDevpollSelector.__init__cCs |jjS)N)rkr )rrrrr szDevpollSelector.filenoNcsLtj|||}d}|t@r&|tjO}|t@r8|tjO}|jj|j||S)Nr) rBr)r;r-rYr<rZrkr)rrrrr:r[)rFrrr)s  zDevpollSelector.registercstj|}|jj|j|S)N)rBr*rkr)rrr:)rFrrr*s zDevpollSelector.unregisterc Cs|dkrd}n|dkrd}ntj|d}g}y|jj|}Wntk rR|SXx^|D]V\}}d}|tj@rz|tO}|tj@r|t O}|j |}|rZ|j |||j @fqZW|S)Nrg@@) r\r]rkrVrPr-rYr<rZr;r@rQr)rr,rRr^rr_rr:rrrr-s(   zDevpollSelector.selectcs|jjtjdS)N)rkr.rB)r)rFrrr.s zDevpollSelector.close)N)N) r$r%r&rr r)r*r-r.rUrr)rFrrjs    rjkqueuecsTeZdZfddZddZdfdd Zfdd Zdd d Zfd d ZZ S)KqueueSelectorcstjtj|_dS)N)rBrr-rl_kqueue)r)rFrrrs zKqueueSelector.__init__cCs |jjS)N)rnr )rrrrr szKqueueSelector.filenoNc stj|||}y`|t@r@tj|jtjtj}|jj |gdd|t @rntj|jtj tj}|jj |gddWn"t k rtj |YnX|S)Nr)rBr)r;r-keventrKQ_FILTER_READZ KQ_EV_ADDrncontrolr<KQ_FILTER_WRITErer*)rrrrr:kev)rFrrr)s   zKqueueSelector.registercstj|}|jt@rVtj|jtjtj}y|j j |gddWnt k rTYnX|jt @rtj|jtj tj}y|j j |gddWnt k rYnX|S)Nr)rBr*rr;r-rorrpZ KQ_EV_DELETErnrqrfr<rr)rrr:rs)rFrrr*'s      zKqueueSelector.unregisterc Cs|dkr dnt|d}t|j}g}y|jjd||}Wntk rL|SXxb|D]Z}|j}|j}d}|tj krz|t O}|tj kr|t O}|j |} | rT|j| || j@fqTW|S)Nr)rOrrrnrqrPZidentfilterr-rpr;rrr<r@rQr) rr,rhrRZkev_listrsrflagrr:rrrr-<s&     zKqueueSelector.selectcs|jjtjdS)N)rnr.rB)r)rFrrr.Rs zKqueueSelector.close)N)N) r$r%r&rr r)r*r-r.rUrr)rFrrm s    rmr)rr)abcrr collectionsrrr\r-rSr;r<rr__doc__ version_inforrrrrr'r7rAhasattrrWrarjrmglobalsZDefaultSelectorrrrrsF ~U3 1 G 8 M