
    7i                         d dl Z d dlZd dlZd dlZddlmZ  G d d      Zej                  dk(  r G d deej                        Z	y G d	 deej                        Z	y)
    N   )	wasyncorec                   F    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
dd	Zd
 Zy)_triggerbasez9OS-independent base class for OS-dependent trigger class.Nc                 R    d| _         t        j                         | _        g | _        y NF)_closed	threadingLocklockthunksselfs    C/var/www/html/venv/lib/python3.12/site-packages/waitress/trigger.py__init__z_triggerbase.__init__:   s"     NN$	
     c                      yNT r   s    r   readablez_triggerbase.readableF   s    r   c                      yr   r   r   s    r   writablez_triggerbase.writableI   s    r   c                      y Nr   r   s    r   handle_connectz_triggerbase.handle_connectL   s    r   c                 $    | j                          y r   )closer   s    r   handle_closez_triggerbase.handle_closeO   s    

r   c                 l    | j                   s(d| _         | j                          | j                          y y r   )r	   del_channel_closer   s    r   r   z_triggerbase.closeV   s*    ||DLKKM r   c                     |r0| j                   5  | j                  j                  |       d d d        | j                          y # 1 sw Y   xY wr   )r   r   append_physical_pull)r   thunks     r   pull_triggerz_triggerbase.pull_trigger\   s?     *""5)** *s   AAc                 >   	 | j                  d       | j                  5  | j                  D ]
  }	  |         g | _        d d d        y # t        $ r Y y w xY w#  t	        j
                         \  }}}}| j                  d| d| d| d       Y dxY w# 1 sw Y   y xY w)Ni    zexception in trigger thunk: (: ))recvOSErrorr   r   r   compact_tracebacklog_info)r   r%   niltvtbinfos         r   handle_readz_triggerbase.handle_readb   s    	IIdO YY 	 UUGU DK	 	  		U(1(C(C(E%CAvMM$A!AaS&QR"ST	 	s2   A	 BA	B		AA6BBBr   )__name__
__module____qualname____doc__kindr   r   r   r   r   r   r&   r3   r   r   r   r   r   5   s2    CD
r   r   posixc                   "    e Zd ZdZd Zd Zd Zy)triggerpipec                     t         j                  |        t        j                         x\  }| _        | _        t        j                  j                  | ||       y )Nmap)r   r   osr<   r;   _fdsr   file_dispatcher)r   r?   rs      r   r   ztrigger.__init__v   sC    !!$'*,'')3OAt|di%%..tQC.@r   c                     | j                   D ]  }t        j                  |        g | _         t        j                  j                  |        y r   )rA   r@   r   r   rB   )r   fds     r   r!   ztrigger._close{   s;    ii DI%%++D1r   c                 D    t        j                  | j                  d       y N   x)r@   writer;   r   s    r   r$   ztrigger._physical_pull   s    HHT\\4(r   Nr4   r5   r6   r8   r   r!   r$   r   r   r   r;   r;   s   s    	A
	2	)r   r;   c                   "    e Zd ZdZd Zd Zd Zy)r;   loopbackc                    t         j                  |        t        j                         }|j                  t        j                  t        j
                  d       d}	 |dz  }t        j                         }|j                  d       |j                         }|j                  d       	 |j                  |       	 |j!                         \  }}|j                          || _        t$        j&                  j                  | ||       y # t        $ ri}t        |dd       t        j                  k7  r |dk\  r+|j                          |j                          t        d      |j                          Y d }~nd }~ww xY w")Nr   r   )z	127.0.0.1r   winerror
   zCannot bind trigger!r>   )r   r   socket
setsockoptIPPROTO_TCPTCP_NODELAYbindgetsocknamelistenconnectr,   getattrerrnoWSAEADDRINUSEr   RuntimeErroracceptr;   r   
dispatcher)	r   r?   wcountaconnect_addressdetailrC   addrs	            r   r   ztrigger.__init__   s3   !!$' A LL++V-?-?CE
 MMO'("#--/IIo." hhjGAtGGIDL  ))$s);'  vz48E<O<OO  {		*+ABB GGII' s   (D 	E9AE44E9c                 l    | j                   j                          | j                  j                          y r   )rP   r   r;   r   s    r   r!   ztrigger._close   s"    KKLL r   c                 :    | j                   j                  d       y rG   )r;   sendr   s    r   r$   ztrigger._physical_pull   s    LLd#r   NrJ   r   r   r   r;   r;      s    5	<n	!
	$r   )rY   r@   rP   r
    r   r   namerB   r;   r]   r   r   r   <module>ri      sZ     	   B9 9x 77g),	 9 9 )*@$,	 4 4 @$r   