
    wg                         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y	)
    )Event)queuesleepspawn)WebSocketWSGIc                   $    e Zd ZdZddZd Zd Zy)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                 L    || _         |xs d| _        |xs i | _        d | _        y )N )targetargskwargsg)selfr   r   r   s       d/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/engineio/async_drivers/eventlet.py__init__zEventletThread.__init__   s&    JB	l    c                 h    t        | j                  g| j                  i | j                  | _        y N)r   r   r   r   r   r   s    r   startzEventletThread.start   s$    t{{>TYY>$++>r   c                 P    | j                   r| j                   j                         S y r   )r   waitr   s    r   joinzEventletThread.join   s    6666;;=  r   )NN)__name__
__module____qualname____doc__r   r   r   r   r   r   r	   r	      s    
?!r   r	   c                   (     e Zd Z fdZ fdZ xZS )r   c                     	 t         |   |t        |j                               d | _        y # t        $ r t         |   |       Y d | _        y w xY w)N)max_frame_length)superr   intmax_http_buffer_size	TypeError_sock)r   handlerserver	__class__s      r   r   zWebSocketWSGI.__init__   sY    	&G#f.I.I*J  L
 
  	&GW%
	&s   $/ AAc                 r    d|vrt        d      |d   j                         | _        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__$   sJ    7*  E F F -.99;
w88r   )r   r   r   r   r-   __classcell__)r)   s   @r   r   r      s    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<      sJ    * ( ( >! !(9N 9( [[;;
r   