Ë
    MÞëjì	  ã                   ó@   — d dl Z d dlZd dlmZ d dlmZ  G d„ d«      Zy)é    N)ÚCallable)ÚAnyc                   óp   — e Zd Zddefd„Zddefd„Zddedeeef   de	dz  fd	„Z
d
efd„Zdeeef   fd„Zy)Ú	TaskQueueNÚmax_concurrentc                 ó°   — t        j                  «       | _        t        j                  |«      | _        || _        i | _        || _        g | _        d| _	        y )NF)
ÚasyncioÚQueueÚqueueÚ	SemaphoreÚ	semaphorer   Úactive_tasksÚ	event_busÚ_workersÚ_running)Úselfr   r   s      úB/home/oem/CyberBrain26-unified/src/cyberbrain26/core/task_queue.pyÚ__init__zTaskQueue.__init__   sF   € Ü$+§M¡M£OˆŒ
Ü ×*Ñ*¨>Ó:ˆŒØ,ˆÔØ79ˆÔØ"ˆŒØ,.ˆŒØˆ�ó    Úworker_countc                 ó\  — | j                   ry d| _         	 t        j                  «       }t        |«      D ]=  }|j                  | j                  |«      «      }| j                  j                  |«       Œ? y # t        $ r, t        j                  «       }t        j
                  |«       Y Œ€w xY w)NT)r   r	   Úget_event_loopÚRuntimeErrorÚnew_event_loopÚset_event_loopÚrangeÚcreate_taskÚ_worker_loopr   Úappend)r   r   ÚloopÚiÚts        r   ÚstartzTaskQueue.start   s–   € Ø�=Š=ØØˆŒð	)Ü×)Ñ)Ó+ˆDô �|Ó$ò 	$ˆAØ× Ñ  ×!2Ñ!2°1Ó!5Ó6ˆAØ�M‰M× Ñ  Õ#ñ	$øô ò 	)Ü×)Ñ)Ó+ˆDÜ×"Ñ" 4Ö(ð	)ús   –A6 Á62B+Â*B+Útask_idÚpayloadÚhandlerc              ƒ   óˆ   K  — |||t        j                   «       dœ}| j                  j                  |«      ƒ d {  –—†  y 7 Œ­w)N)r$   r%   r&   Úenqueued_at)Útimer   Úput)r   r$   r%   r&   Úitems        r   ÚenqueuezTaskQueue.enqueue   s4   è ø€ Ø"¨wÀ7Ô[_×[dÑ[dÓ[fÑgˆØ�j‰j�n‰n˜TÓ"×"Ò"ús   ‚8AºA »AÚ	worker_idc              ƒ   ó.  K  — | j                   �r	 | j                  j                  «       ƒ d {  –—† }|d   }|d   }|d   }| j                  4 ƒd {  –—†  |dt	        j                  «       dœ| j
                  |<   	 |r1t        j                  |«      r |||«      ƒ d {  –—†  n' |||«       nt        j                  d«      ƒ d {  –—†  | j
                  j                  |d «       d d d «      ƒd {  –—†  | j                  j                  «        | j                   r�Œy y 7 Œô7 ŒÒ7 Œ†7 Œ`# t        $ r Y Œiw xY w# | j
                  j                  |d «       w xY w7 Œf# 1 ƒd {  –—†7  sw Y   ŒvxY w# t        j                  $ r Y y t        $ r Y Œ~w xY w­w)Nr$   r%   r&   Úrunning)r-   ÚstatusÚ
started_até   )r   r   Úgetr   r)   r   r	   ÚiscoroutinefunctionÚsleepÚ	ExceptionÚpopÚ	task_doneÚCancelledError)r   r-   r+   r$   r%   r&   s         r   r   zTaskQueue._worker_loop"   sl  è ø€ Ø�m‹mðØ!ŸZ™ZŸ^™^Ó-×-�Ø˜y™/�Ø˜y™/�Ø˜y™/�àŸ>™>÷ =ñ =Ø?HÐT]Ômq×mvÑmvÓmxÑ1y�D×%Ñ% gÑ.ð=Ù"Ü&×:Ñ:¸7ÔCÙ&-¨g°wÓ&?× ?Ñ ?á '¨°Õ 9ä")§-¡-°Ó"2×2Ð2ð ×)Ñ)×-Ñ-¨g°tÔ<÷=÷ =ð —
‘
×$Ñ$Ô&ð+ �mŽmà-øð
=øð
 !@øð 3ùÜ$ò Ùðûð ×)Ñ)×-Ñ-¨g°tÕ<úð=ø÷ =÷ =ñ =ûô ×)Ñ)ò ÙÜò Ùðüsæ   ‚F‘E2 ®D#¯#E2 ÁD%ÁE2 Á&EÁ=#D+Â D'Â!'D+ÃD)Ã	D+ÃEÃ)E2 Ã4EÃ5E2 ÄFÄ!FÄ#E2 Ä%E2 Ä'D+Ä)D+Ä+	D7Ä4D:Ä6D7Ä7D:Ä:EÅEÅE2 ÅE/Å#E&Å$E/Å+E2 Å2FÆFÆFÆFÆFÆFÚreturnc                 óŽ   — | j                   j                  «       t        | j                  «      | j                  | j                  dœS )N)Úqueued_countÚactive_countr   r   )r   ÚqsizeÚlenr   r   )r   s    r   Ú
get_statuszTaskQueue.get_status>   s<   € à ŸJ™J×,Ñ,Ó.Ü × 1Ñ 1Ó2Ø ×-Ñ-Ø"×1Ñ1ñ	
ð 	
r   )é   N)rA   )N)Ú__name__Ú
__module__Ú__qualname__Úintr   r#   ÚstrÚdictr   r   r,   r   r@   © r   r   r   r      sa   „ ñ só ñ$ #ó $ñ# Sð #°4¸¸S¸±>ð #ÈHÐW[ÉOó #ð¨Có ð8
˜D  c ™Nô 
r   r   )r	   r)   Úcollections.abcr   Útypingr   r   rH   r   r   ú<module>rK      s   ðÛ Û Ý $Ý ÷=
ò =
r   