
    tf9                         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
d	S )
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dS )MemoryWorkerz|
    An L{IWorker} that queues work for later performance.

    @ivar _quit: a flag indicating
    @type _quit: L{Quit}
    c                 J    t                      | _         |            | _        dS )z+
        Create a L{MemoryWorker}.
        N)r   _quit_pending)selfpendings     W/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/_threads/_memory.py__init__zMemoryWorker.__init__   s      VV
		    c                 l    | j                                          | j                            |           dS )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"   s4     	
T"""""r   c                 v    | j                                          | j                            t                     dS )z#
        Quit this worker.
        N)r
   setr   r   
NoMoreWork)r   s    r   quitzMemoryWorker.quit+   s2     	
Z(((((r   N)__name__
__module____qualname____doc__listr   r   r    r   r   r   r      sU           $ " " " "# # #) ) ) ) )r   r   c                  2    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dS  j         d         t          u rdS   j                             d                       dS )NFr   T)r   r   pop)workers   r   performz#createMemoryWorker.<locals>.perform=   sL     	5?1++5A   tr   )r   )r$   r#   s    @r   createMemoryWorkerr%   3   s2         ^^FGr   N)r   zope.interfacer    r   _conveniencer   objectr   r   r%   r   r   r   <module>r*      s   
 
 ' & & & & &            VXX
 W) ) ) ) ) ) ) )@    r   