
    ̺i]                     8    S SK r S SKJr  SSKJr   " S S5      rg)    N)RLock   )Parserc                   B    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ParserQueue   a7  
Thread safe message queue with built in MIDI parser.

This should be avaiable to other backend implementations and perhaps
also in the public API, but the API needs a bit of review. (Ideally This
would replace the parser.)

q = ParserQueue()

q.put(msg)
q.put_bytes([0xf8, 0, 0])

msg = q.get()
msg = q.poll()
c                 t    [         R                  " 5       U l        [        5       U l        [        5       U l        g N)queueQueue_queuer   _parserr   _parser_lockselfs    Z/var/www/piano.thomer.com/venv/lib/python3.13/site-packages/mido/backends/_parser_queue.py__init__ParserQueue.__init__   s"    kkmx!G    c                 :    U R                   R                  U5        g r
   )r   putr   msgs     r   r   ParserQueue.put    s    r   c                     U R                      U R                  R                  U5        U R                   H  nU R                  U5        M     S S S 5        g ! , (       d  f       g = fr
   )r   r   feedr   )r   	msg_bytesr   s      r   	put_bytesParserQueue.put_bytes#   sB    LLi(|| $ s   A A
A$c                 6    U R                   R                  5       $ r
   )r   getr   s    r   r!   ParserQueue.get*   s    {{  r   c                 l     U R                   R                  5       $ ! [        R                   a     g f = fr
   )r   
get_nowaitr   Emptyr   s    r   pollParserQueue.poll-   s0    	;;))++{{ 		s    33c                 $     U R                  5       $ r
   )r!   r   s    r   __iter__ParserQueue.__iter__3   s    88:r   c              #   @   #     U R                  5       nUc  g Uv   M  7fr
   )r&   r   s     r   iterpollParserQueue.iterpoll7   s%     ))+C{	 s   )r   r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r   r!   r&   r)   r,   __static_attributes__ r   r   r   r      s*    $
!r   r   )r   	threadingr   parserr   r   r4   r   r   <module>r7      s   
   2 2r   