
    Ϫf9                     j    d Z ddlmZ ddlmZ ddlmZ  e       Z ee       G d d             Z	d Z
y	)
z>
Implementation of an in-memory worker that defers execution.
    )implementer   )IWorker)Quitc                   &    e Zd ZdZefdZd Zd Zy)MemoryWorkerz|
    An L{IWorker} that queues work for later performance.

    @ivar _quit: a flag indicating
    @type _quit: L{Quit}
    c                 :    t               | _         |       | _        y)z+
        Create a L{MemoryWorker}.
        N)r   _quit_pending)selfpendings     :/usr/lib/python3/dist-packages/twisted/_threads/_memory.py__init__zMemoryWorker.__init__   s     V
	    c                 n    | j                   j                          | j                  j                  |       y)z}
        Queue some work for to perform later; see L{createMemoryWorker}.

        @param work: The work to perform.
        N)r
   checkr   append)r   works     r   dozMemoryWorker.do"   s&     	

T"r   c                 v    | j                   j                          | j                  j                  t               y)z#
        Quit this worker.
        N)r
   setr   r   
NoMoreWork)r   s    r   quitzMemoryWorker.quit+   s$     	

Z(r   N)__name__
__module____qualname____doc__listr   r   r    r   r   r   r      s      $ "#)r   r   c                  *    fd} t               | fS )a  
    Create an L{IWorker} that does nothing but defer work, to be performed
    later.

    @return: a worker that will enqueue work to perform later, and a callable
        that will perform one element of that work.
    @rtype: 2-L{tuple} of (L{IWorker}, L{callable})
    c                       j                   sy j                   d   t        u ry  j                   j                  d              y)NFr   T)r   r   pop)workers   r   performz#createMemoryWorker.<locals>.perform=   s;    ??1+A r   )r   )r$   r#   s    @r   createMemoryWorkerr%   3   s     ^FGr   N)r   zope.interfacer    r   _conveniencer   objectr   r   r%   r   r   r   <module>r*      s@   

 '  X
 W) ) )@r   