o
    wvXjL  ã                   @   sR   d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 dZ
G dd	„ d	ejƒZd
S )zYWorker Event Dispatcher Bootstep.

``Events`` -> :class:`celery.events.EventDispatcher`.
é    )Úabsolute_importÚunicode_literals)Úignore_errors)Ú	bootstepsé   )Ú
Connection)ÚEventsc                       sN   e Zd ZdZefZ			d‡ fdd„	Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
‡  ZS )r   z+Service used for sending monitoring events.TFc                    sL   |rd ndg| _ |p| p| | _| j| _d |_tt| ƒj|fi |¤Ž d S )NÚworker)ÚgroupsÚsend_eventsÚenabledÚevent_dispatcherÚsuperr   Ú__init__)ÚselfÚcÚtask_eventsÚwithout_heartbeatÚwithout_gossipÚkwargs©Ú	__class__© úZ/var/www/html/myproject/venv/lib/python3.10/site-packages/celery/worker/consumer/events.pyr      s   ÿýzEvents.__init__c                 C   sj   |   |¡}|jjj| ¡ |j| j| j|jrdgnd |jr|j	nd d� }|_
|r3| |¡ | ¡  d S d S )NÚtask)Úhostnamer   r
   Úbuffer_groupÚon_send_buffered)Ú_closeÚappÚeventsÚ
DispatcherÚconnection_for_writer   r   r
   ÚhubÚon_send_event_bufferedr   Úextend_bufferÚflush)r   r   ÚprevÚdisr   r   r   Ústart$   s   
ø

þzEvents.startc                 C   s   d S ©Nr   ©r   r   r   r   r   Ústop5   s   zEvents.stopc                 C   sB   |j r|j }|j| _|jrt||jjƒ t||jƒ d |_ |S d S r*   )r   r
   Ú
connectionr   Úclose)r   r   Ú
dispatcherr   r   r   r   8   s   özEvents._closec                 C   s   |   |¡ d S r*   )r   r+   r   r   r   ÚshutdownE   s   zEvents.shutdown)TFF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úrequiresr   r)   r,   r   r0   Ú__classcell__r   r   r   r   r      s    ýr   N)r4   Ú
__future__r   r   Úkombu.commonr   Úceleryr   r-   r   Ú__all__ÚStartStopStepr   r   r   r   r   Ú<module>   s    