U
    d                     @   sJ   d Z ddlmZmZ ddlmZmZ dZG dd dZG dd	 d	eZ	d
S )zThread execution pool.    )ThreadPoolExecutorwait   )BasePoolapply_target)TaskPoolc                   @   s   e Zd Zdd ZdddZdS )ApplyResultc                 C   s   || _ | j j| _d S N)fresultget)selffuture r   =/tmp/pip-unpacked-wheel-9cz4377o/celery/concurrency/thread.py__init__   s    zApplyResult.__init__Nc                 C   s   t | jg| d S r	   )r   r
   )r   timeoutr   r   r   r      s    zApplyResult.wait)N)__name__
__module____qualname__r   r   r   r   r   r   r   
   s   r   c                       sF   e Zd ZdZdZdZ fddZ fddZdd	d
Zdd Z	  Z
S )r   zThread Task Pool.TFc                    s    t  j|| t| jd| _d S )N)max_workers)superr   r   limitexecutor)r   argskwargs	__class__r   r   r      s    zTaskPool.__init__c                    s   | j   t   d S r	   )r   shutdownr   on_stopr   r   r   r   r      s    
zTaskPool.on_stopNc                 K   s   | j t|||||}t|S r	   )r   Zsubmitr   r   )r   targetr   r   callbackZaccept_callback_r
   r   r   r   on_apply!   s
     zTaskPool.on_applyc                 C   s   | j t| jjdS )N)zmax-concurrencythreads)r   lenr   _threadsr    r   r   r   	_get_info'   s    
zTaskPool._get_info)NNNN)r   r   r   __doc__Zbody_can_be_bufferZsignal_safer   r   r$   r(   __classcell__r   r   r   r   r      s     
r   N)
r)   concurrent.futuresr   r   baser   r   __all__r   r   r   r   r   r   <module>   s
   	