3 \K@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.unregisterZwin32cCs$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) maxrMrDrEInterruptedErrorrCr;r<r@appendr) rr,readyrIrJrKrrr:rrrr-?s$ zSelectSelector.select)N)N)N) r$r%r&rr)r*sysplatformrMr- __classcell__rr)rFrrA"s    rApollcs@eZdZfddZd fdd ZfddZd dd ZZS) PollSelectorcstjtj|_dS)N)rBrr-rU_poll)r)rFrrrZs zPollSelector.__init__NcsLtj|||}d}|t@r&|tjO}|t@r8|tjO}|jj|j||S)Nr) rBr)r;r-POLLINr<POLLOUTrWr)rrrrr: poll_events)rFrrr)^s  zPollSelector.registercstj|}|jj|j|S)N)rBr*rWr)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@@) mathceilrWrUrOr-rXr<rYr;r@rPr)rr,rQ fd_event_listreventrr:rrrr-ms(   zPollSelector.select)N)N)r$r%r&rr)r*r-rTrr)rFrrVWs  rVepollcsTeZdZfddZddZdfdd Zfdd Zdd d Zfd d ZZ S) EpollSelectorcstjtj|_dS)N)rBrr-r__epoll)r)rFrrrs zEpollSelector.__init__cCs |jjS)N)rar )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<EPOLLOUTrar BaseExceptionr*)rrrrr:Z epoll_events)rFrrr)s   zEpollSelector.registerc s8tj|}y|jj|jWntk r2YnX|S)N)rBr*rarOSError)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\rNrrrarUrOr-rbr<rcr;r@rPr) rr,max_evrQr]rr^rr:rrrr-s*   zEpollSelector.selectcs|jjtjdS)N)rar.rB)r)rFrrr.s zEpollSelector.close)N)N) r$r%r&rr r)r*r-r.rTrr)rFrr`s   r`devpollcsTeZdZfddZddZdfdd Zfdd Zdd d Zfd d ZZ S)DevpollSelectorcstjtj|_dS)N)rBrr-rh_devpoll)r)rFrrrs zDevpollSelector.__init__cCs |jjS)N)rjr )rrrrr szDevpollSelector.filenoNcsLtj|||}d}|t@r&|tjO}|t@r8|tjO}|jj|j||S)Nr) rBr)r;r-rXr<rYrjr)rrrrr:rZ)rFrrr)s  zDevpollSelector.registercstj|}|jj|j|S)N)rBr*rjr)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\rjrUrOr-rXr<rYr;r@rPr)rr,rQr]rr^rr:rrrr-s(   zDevpollSelector.selectcs|jjtjdS)N)rjr.rB)r)rFrrr.s zDevpollSelector.close)N)N) r$r%r&rr r)r*r-r.rTrr)rFrris    rikqueuecsTeZdZfddZddZdfdd Zfdd Zdd d Zfd d ZZ S)KqueueSelectorcstjtj|_dS)N)rBrr-rk_kqueue)r)rFrrrs zKqueueSelector.__init__cCs |jjS)N)rmr )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_ADDrmcontrolr<KQ_FILTER_WRITErdr*)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-rnrroZ KQ_EV_DELETErmrprer<rq)rrr:rr)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)rNrrrmrprOZidentfilterr-ror;rqr<r@rPr) rr,rgrQZkev_listrrrflagrr:rrrr-<s&     zKqueueSelector.selectcs|jjtjdS)N)rmr.rB)r)rFrrr.Rs zKqueueSelector.close)N)N) r$r%r&rr r)r*r-r.rTrr)rFrrl s    rlr)rr)abcrr collectionsrrr[r-rRr;r<rr__doc__ version_inforrrrrr'r7rAhasattrrVr`rirlglobalsZDefaultSelectorrrrrsF ~U3 1 G 8 M