o
    پi                  
   @   s   d dl Z d dlmZ d dlmZmZ d dlZd dlmZ	 G dd dZ
de	jej de	jej deee	jej  ee	jej  f fd	d
ZdS )    N)deque)ListTuplec                   @   s$   e Zd Zdd Zdd Zdd ZdS )	FastQueuec                 C   s   t  | _t | _d S N)r   _buf	threading	Condition_condself r   Z/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/disaggregation/common/utils.py__init__
   s   zFastQueue.__init__c                 C   sB   | j  | j| | j   W d    d S 1 sw   Y  d S r   )r
   r   appendnotify)r   itemr   r   r   put   s   "zFastQueue.putc                 C   sJ   | j  | js| j   | jr| j W  d    S 1 sw   Y  d S r   )r
   r   waitpopleftr   r   r   r   get   s   
$zFastQueue.getN)__name__
__module____qualname__r   r   r   r   r   r   r   r   	   s    r   src_indicesdst_indicesreturnc                 C   sx   | j dkr	g g fS tt| dkt|dkB d d }t| |}t||}dd |D }dd |D }||fS )z Vectorised NumPy implementation.r      c                 S      g | ]}|  qS r   tolist.0gr   r   r   
<listcomp>'       z/group_concurrent_contiguous.<locals>.<listcomp>c                 S   r   r   r   r!   r   r   r   r$   (   r%   )sizenpwherediffsplit)r   r   brk
src_groups
dst_groupsr   r   r   group_concurrent_contiguous   s   
*r.   )r   collectionsr   typingr   r   numpyr'   numpy.typingnptr   NDArrayint32r.   r   r   r   r   <module>   s    

"