
    Wi                         d Z ddlmZ ddlmZmZ ddlmZmZm	Z	  e	d      Z
e G d d             Z G d d	ee
         Zy
)u   会话级线程安全队列。

职责概览：
- 为单个请求/连接提供 FIFO 队列。
- 支持 put/get/try_get，确保音频片段按时间顺序处理。
    )	dataclass)EmptyQueue)GenericOptionalTypeVarTc                   ,    e Zd ZU eed<   eed<   eed<   y)
QueueChunkseqpayloadduration_secN)__name__
__module____qualname__int__annotations__bytesfloat     #/app/gzzm/services/session_queue.pyr   r      s    	HNr   r   c                   j    e Zd ZdZddZdeddfdZddee   defdZ	dee   fd	Z
defd
ZdefdZy)SessionChunkQueuez>Session-scoped FIFO queue with thread-safe put/get operations.returnNc                 "    t               | _        y N)r   _queueselfs    r   __init__zSessionChunkQueue.__init__   s     %r   itemc                 :    | j                   j                  |       y r   )r   put)r    r"   s     r   r$   zSessionChunkQueue.put   s    r   timeoutc                 r    || j                   j                         S | j                   j                  |      S )N)r%   )r   get)r    r%   s     r   r'   zSessionChunkQueue.get    s-    ?;;??$${{w//r   c                 V    	 | j                   j                         S # t        $ r Y y w xY wr   )r   
get_nowaitr   r   s    r   try_getzSessionChunkQueue.try_get%   s,    	;;))++ 		s    	((c                 6    | j                   j                         S r   )r   qsizer   s    r   r,   zSessionChunkQueue.qsize+       {{  ""r   c                 6    | j                   j                         S r   )r   emptyr   s    r   r/   zSessionChunkQueue.empty.   r-   r   )r   Nr   )r   r   r   __doc__r!   r	   r$   r   r   r'   r*   r   r,   boolr/   r   r   r   r   r      s\    H( d 08E? 0a 0
! #s ##t #r   r   N)r0   dataclassesr   queuer   r   typingr   r   r   r	   r   r   r   r   r   <module>r5      sJ    "  - -CL   #
 #r   