
    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d
S )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<   dS )
QueueChunkseqpayloadduration_secN)__name__
__module____qualname__int__annotations__bytesfloat     "src\gzzm\services\session_queue.pyr   r      s0         	HHHNNNr   r   c                   x    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dS )SessionChunkQueuez>Session-scoped FIFO queue with thread-safe put/get operations.returnNc                 ,    t                      | _        d S N)r   _queueselfs    r   __init__zSessionChunkQueue.__init__   s     %r   itemc                 :    | j                             |           d S r   )r   put)r    r"   s     r   r$   zSessionChunkQueue.put   s    r   timeoutc                 n    || j                                         S | j                             |          S )N)r%   )r   get)r    r%   s     r   r'   zSessionChunkQueue.get    s/    ?;??$$${w///r   c                 X    	 | j                                         S # t          $ r Y d S w xY wr   )r   
get_nowaitr   r   s    r   try_getzSessionChunkQueue.try_get%   s=    	;))+++ 	 	 	44	s    
))c                 4    | j                                         S r   )r   qsizer   s    r   r,   zSessionChunkQueue.qsize+       {  """r   c                 4    | 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H( ( ( ( d    0 08E? 0a 0 0 0 0
!    #s # # # ##t # # # # # #r   r   N)r0   dataclassesr   queuer   r   typingr   r   r   r	   r   r   r   r   r   <module>r5      s     " ! ! ! ! !         - - - - - - - - - -GCLL        # # # # #
 # # # # #r   