
    i                         d dl mZ d dlmZmZmZ d dlmZ  G d d          Z	 G d de          Ze	ej
        ej        eeedZd	S )
    )Event)queuesleepspawn)WebSocketWSGIc                   &    e Zd ZdZddZd Zd ZdS )EventletThreadzThread class that uses eventlet green threads.

    Eventlet's own Thread class has a strange bug that causes _DummyThread
    objects to be created and leaked, since they are never garbage collected.
    Nc                 F    || _         |pd| _        |pi | _        d | _        d S )N )targetargskwargsg)selfr   r   r   s       J/usr/local/lib/python3.11/dist-packages/engineio/async_drivers/eventlet.py__init__zEventletThread.__init__   s*    JB	l    c                 N    t          | j        g| j        R i | j        | _        d S N)r   r   r   r   r   r   s    r   startzEventletThread.start   s+    t{>TY>>>$+>>r   c                 F    | j         r| j                                         S d S r   )r   waitr   s    r   joinzEventletThread.join   s&    6 	!6;;== 	! 	!r   )NN)__name__
__module____qualname____doc__r   r   r   r   r   r   r	   r	      sP         
   ? ? ?! ! ! ! !r   r	   c                   (     e Zd Z fdZ fdZ xZS )r   c                     	 t                                          |t          |j                             n1# t          $ r$ t                                          |           Y nw xY wd | _        d S )N)max_frame_length)superr   intmax_http_buffer_size	TypeError_sock)r   handlerserver	__class__s      r   r   zWebSocketWSGI.__init__   s    	&GG#f.I*J*J  L L L L 	& 	& 	&GGW%%%%%	& 


s   59 +A'&A'c                     d|vrt          d          |d                                         | _        t                                          ||          S )Nzeventlet.inputzjYou need to use the eventlet server. See the Deployment section of the documentation for more information.)RuntimeError
get_socketr&   r"   __call__)r   environstart_responser)   s      r   r-   zWebSocketWSGI.__call__$   s^    7**  E F F F -.99;;
ww888r   )r   r   r   r   r-   __classcell__)r)   s   @r   r   r      sQ            9 9 9 9 9 9 9 9 9r   r   )threadr   queue_emptyevent	websocketr   N)eventlet.green.threadingr   eventletr   r   r   eventlet.websocketr   _WebSocketWSGIr	   QueueEmpty_asyncr   r   r   <module>r<      s    * * * * * * ( ( ( ( ( ( ( ( ( ( > > > > > >! ! ! ! ! ! ! !(9 9 9 9 9N 9 9 9( [;
 
r   