
    kc/                         d dl Z d dlZ G d d      Z G d de      Z G d de      Z G d d	e      Zd
 Zd Z e       reZy e       reZyeZy)    Nc                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)
BasePollerc                 2    || _         | j                          y N)options
initialize)selfr   s     3/usr/lib/python3/dist-packages/supervisor/poller.py__init__zBasePoller.__init__   s        c                      y r    r	   s    r
   r   zBasePoller.initialize
       r   c                     t         r   NotImplementedErrorr	   fds     r
   register_readablezBasePoller.register_readable       !!r   c                     t         r   r   r   s     r
   register_writablezBasePoller.register_writable   r   r   c                     t         r   r   r   s     r
   unregister_readablezBasePoller.unregister_readable   r   r   c                     t         r   r   r   s     r
   unregister_writablezBasePoller.unregister_writable   r   r   c                     t         r   r   )r	   timeouts     r
   pollzBasePoller.poll   r   r   c                      y r   r   r   s    r
   before_daemonizezBasePoller.before_daemonize   r   r   c                      y r   r   r   s    r
   after_daemonizezBasePoller.after_daemonize   r   r   c                      y r   r   r   s    r
   closezBasePoller.close"   r   r   N)__name__
__module____qualname__r   r   r   r   r   r   r    r"   r$   r&   r   r   r
   r   r      s4    """""r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
SelectPollerc                 :    t         | _        | j                          y r   )select_select_init_fdsetsr   s    r
   r   zSelectPoller.initialize(   s    r   c                 :    | j                   j                  |       y r   )	readablesaddr   s     r
   r   zSelectPoller.register_readable,       2r   c                 :    | j                   j                  |       y r   )	writablesr2   r   s     r
   r   zSelectPoller.register_writable/   r3   r   c                 :    | j                   j                  |       y r   )r1   discardr   s     r
   r   z SelectPoller.unregister_readable2       r"r   c                 :    | j                   j                  |       y r   )r5   r7   r   s     r
   r   z SelectPoller.unregister_writable5   r8   r   c                 $    | j                          y r   )r/   r   s    r
   unregister_allzSelectPoller.unregister_all8   s    r   c                    	 | j                   j                  | j                  | j                  g |      \  }}}||fS # t        j                  $ r}|j
                  d   t        j                  k(  r.| j                  j                  j                  d       g g fcY d }~S |j
                  d   t        j                  k(  r>| j                  j                  j                  d       | j                          g g fcY d }~S  d }~ww xY w)Nr   EINTR encountered in pollzEBADF encountered in poll)r.   r-   r1   r5   errorargserrnoEINTRr   loggerblatherEBADFr;   )r	   r   rwxerrs         r
   r    zSelectPoller.poll;   s    	ll))GGAq! !t || 	xx{ekk)##++,GH2vxx{ekk)##++,GH##%2v	s/   6< DAC<DAC<5D;C<<Dc                 @    t               | _        t               | _        y r   )setr1   r5   r   s    r
   r/   zSelectPoller._init_fdsetsM   s    r   N)r'   r(   r)   r   r   r   r   r   r;   r    r/   r   r   r
   r+   r+   &   s*    ##$r   r+   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)

PollPollerc                 
   t        j                         | _        t         j                  t         j                  z  t         j
                  z  | _        t         j                  | _        t               | _
        t               | _        y r   )r-   r    _pollerPOLLINPOLLPRIPOLLHUPREADPOLLOUTWRITErJ   r1   r5   r   s    r
   r   zPollPoller.initializeS   sI    {{}MMFNN2V^^C	^^
r   c                     | j                   j                  || j                         | j                  j	                  |       y r   )rN   registerrR   r1   r2   r   s     r
   r   zPollPoller.register_readableZ   s,    b$)),2r   c                     | j                   j                  || j                         | j                  j	                  |       y r   )rN   rV   rT   r5   r2   r   s     r
   r   zPollPoller.register_writable^   s,    b$**-2r   c                     | j                   j                  |       | j                  j                  |       || j                  v r'| j                  j                  || j                         y y r   )r1   r7   rN   
unregisterr5   rV   rT   r   s     r
   r   zPollPoller.unregister_readableb   sO    r"#LL!!"djj1  r   c                     | j                   j                  |       | j                  j                  |       || j                  v r'| j                  j                  || j                         y y r   )r5   r7   rN   rY   r1   rV   rR   r   s     r
   r   zPollPoller.unregister_writableh   sO    r"#LL!!"dii0  r   c                     | j                  |      }g g }}|D ]Y  \  }}| j                  ||      r|| j                  z  r|j                  |       || j                  z  sI|j                  |       [ ||fS r   )	_poll_fds_ignore_invalidrR   appendrT   )r	   r   fdsr1   r5   r   	eventmasks          r
   r    zPollPoller.polln   s    nnW%!29	  	%MB	##B	2499$  $4::%  $	% )##r   c                    	 | j                   j                  |dz        S # t        j                  $ rR}|j                  d   t
        j                  k(  r,| j                  j                  j                  d       g cY d }~S  d }~ww xY w)N  r   r=   )
rN   r    r-   r>   r?   r@   rA   r   rB   rC   )r	   r   rH   s      r
   r\   zPollPoller._poll_fdsz   si    	<<$$Wt^44|| 	xx{ekk)##++,GH			s!     BAB 9B?B  Bc                     |t         j                  z  rR| j                  j                  |       | j                  j                  |       | j                  j                  |       yy)NTF)r-   POLLNVALrN   rY   r1   r7   r5   )r	   r   r`   s      r
   r]   zPollPoller._ignore_invalid   sL    v&
 LL##B'NN""2&NN""2&r   N)r'   r(   r)   r   r   r   r   r   r    r\   r]   r   r   r
   rL   rL   Q   s*    21
$
r   rL   c                   P    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)KQueuePollerz.
    Wrapper for select.kqueue()/kevent()
    rb   c                 r    t        j                         | _        t               | _        t               | _        y r   )r-   kqueue_kqueuerJ   r1   r5   r   s    r
   r   zKQueuePoller.initialize   s!    }}r   c                     | j                   j                  |       t        j                  |t        j                  t        j
                        }| j                  ||       y N)filterflags)r1   r2   r-   keventKQ_FILTER_READ	KQ_EV_ADD_kqueue_controlr	   r   rn   s      r
   r   zKQueuePoller.register_readable   sE    2r&*?*?%+%5%57R(r   c                     | j                   j                  |       t        j                  |t        j                  t        j
                        }| j                  ||       y rk   )r5   r2   r-   rn   KQ_FILTER_WRITErp   rq   rr   s      r
   r   zKQueuePoller.register_writable   sE    2r&*@*@%+%5%57R(r   c                     t        j                  |t         j                  t         j                        }| j                  j                  |       | j                  ||       y rk   )r-   rn   ro   KQ_EV_DELETEr1   r7   rq   rr   s      r
   r   z KQueuePoller.unregister_readable   sE    r&*?*?%+%8%8:r"R(r   c                     t        j                  |t         j                  t         j                        }| j                  j                  |       | j                  ||       y rk   )r-   rn   rt   rv   r5   r7   rq   rr   s      r
   r   z KQueuePoller.unregister_writable   sE    r&*@*@%+%8%8:r"R(r   c                     	 | j                   j                  |gd       y # t        $ rQ}|j                  t        j                  k(  r)| j
                  j                  j                  d|z         n Y d }~y d }~ww xY w)Nr   z7EBADF encountered in kqueue. Invalid file descriptor %s)ri   controlOSErrorr@   rD   r   rB   rC   )r	   r   rn   r>   s       r
   rq   zKQueuePoller._kqueue_control   sp    	LL  &1- 	{{ekk)##++ -IKM-N O O	s     	A:AA55A:c                    g g }}	 | j                   j                  d | j                  |      }|D ]s  }|j                  t        j                  k(  r|j                  |j                         |j                  t        j                  k(  sY|j                  |j                         u ||fS # t        $ rQ}|j                  t        j
                  k(  r.| j                  j                  j                  d       ||fcY d }~S  d }~ww xY w)Nr=   )ri   ry   
max_eventsrz   r@   rA   r   rB   rC   rl   r-   ro   r^   identrt   )r	   r   r1   r5   keventsr>   rn   s          r
   r    zKQueuePoller.poll   s    !29		ll**4'JG  	/F}} 5 55  .}} 6 66  .		/ )##  	{{ekk)##++,GH )++		s$   'B) )	D2AC>7D=C>>Dc                 $    | j                          y r   )r&   r   s    r
   r"   zKQueuePoller.before_daemonize   s    

r   c                     t        j                         | _        | j                  D ]  }| j	                  |        | j
                  D ]  }| j                  |        y r   )r-   rh   ri   r1   r   r5   r   r   s     r
   r$   zKQueuePoller.after_daemonize   sQ    }}.. 	'B""2&	'.. 	'B""2&	'r   c                 F    | j                   j                          d | _         y r   )ri   r&   r   s    r
   r&   zKQueuePoller.close   s    r   N)r'   r(   r)   __doc__r|   r   r   r   r   r   rq   r    r"   r$   r&   r   r   r
   rf   rf      s@     J
))))$&'r   rf   c                  "    t        t        d      S )Nr    hasattrr-   r   r   r
   implements_pollr      s    66""r   c                  "    t        t        d      S )Nrh   r   r   r   r
   implements_kqueuer      s    68$$r   )	r-   r@   r   r+   rL   rf   r   r   Pollerr   r   r
   <module>r      sf      D): )V< <|M: M^#% FFFr   