a
    þ
þd‡/  ã                   @   s–  d dl T d dlmZmZ g d¢ZedƒZedƒZedƒZedƒZedƒZ	ed	ƒZ
ed
ƒZedƒZedƒZedƒZedƒZedƒZedƒZeeee	eeie	ee	ee
ie
eeieeeieeeiei ei ei ieeeeee	eefeieeeee	eefeeefeie	ee	ee
ie
eeieeeieeeiei ei iiZeefeeiee
feeieefeeiee
feeie
efeeieefeeie
efeeiiZG dd„ dƒZdS )é   )Ú*)ÚLocalProtocolErrorÚmake_sentinel)ÚCLIENTÚSERVERÚIDLEÚSEND_RESPONSEÚ	SEND_BODYÚDONEÚ
MUST_CLOSEÚCLOSEDÚMIGHT_SWITCH_PROTOCOLÚSWITCHED_PROTOCOLÚERRORr   r   r   r   r	   r
   r   r   r   r   r   Ú_SWITCH_UPGRADEÚ_SWITCH_CONNECTc                   @   sN   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zdd
d„Zdd„ Zdd„ Z	dd„ Z
d	S )ÚConnectionStatec                 C   s    d| _ tƒ | _tttti| _d S )NT)Ú
keep_aliveÚsetÚpending_switch_proposalsr   r   r   Ústates©Úself© r   úS/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/h11/_state.pyÚ__init__É   s    zConnectionState.__init__c                 C   s   t | j|< |  ¡  d S ©N)r   r   Ú!_fire_state_triggered_transitions)r   Úroler   r   r   Úprocess_errorÖ   s    
zConnectionState.process_errorc                 C   s   d| _ |  ¡  d S )NF)r   r   r   r   r   r   Úprocess_keep_alive_disabledÚ   s    z+ConnectionState.process_keep_alive_disabledc                 C   s   | j  |¡ |  ¡  d S r   )r   Úaddr   )r   Zswitch_eventr   r   r   Úprocess_client_switch_proposalÞ   s    z.ConnectionState.process_client_switch_proposalNc                 C   sˆ   |d ur4|t u sJ ‚|| jvr,td |¡ƒ‚||f}|d u rL|tu rLtƒ | _|  ||¡ |tu r||tu slJ ‚|  t ttf¡ |  	¡  d S )Nz3Received server {} event without a pending proposal)
r   r   r   ÚformatÚResponser   Ú!_fire_event_triggered_transitionsÚRequestr   r   )r   r   Ú
event_typeZserver_switch_eventr   r   r   Úprocess_eventâ   s     
ÿÿzConnectionState.process_eventc              
   C   sZ   | j | }zt| | | }W n, tyJ   td |j|| j | ¡ƒ‚Y n0 || j |< d S )Nz4can't handle event type {} when role={} and state={})r   ÚEVENT_TRIGGERED_TRANSITIONSÚKeyErrorr   r#   Ú__name__)r   r   r'   ÚstateZ	new_stater   r   r   r%   ö   s    
ÿÿ
z1ConnectionState._fire_event_triggered_transitionsc                 C   s²   t | jƒ}| jr(| jt tu r(t| jt< | jsF| jt tu rFt| jt< | jsrttfD ]}| j| tu rTt| j|< qT| jt | jt f}t	 
|i ¡}| j |¡ | j|kr d S q d S r   )Údictr   r   r   r
   r   r   r   r   ÚSTATE_TRIGGERED_TRANSITIONSÚgetÚupdate)r   Zstart_statesr   Zjoint_stateÚchangesr   r   r   r     s     



z1ConnectionState._fire_state_triggered_transitionsc                 C   sH   | j ttttikr"td | j ¡ƒ‚| js,J ‚| jr6J ‚tttti| _ d S )Nz'not in a reusable state. self.states={})	r   r   r
   r   r   r#   r   r   r   r   r   r   r   Ústart_next_cycle*  s    
ÿ

z ConnectionState.start_next_cycle)N)r+   Ú
__module__Ú__qualname__r   r   r    r"   r(   r%   r   r2   r   r   r   r   r   È   s   
(r   N)Z_eventsZ_utilr   r   Ú__all__r   r   r   r   r	   r
   r   r   r   r   r   r   r   r&   ZConnectionClosedZDataZEndOfMessager$   ZInformationalResponser)   r.   r   r   r   r   r   Ú<module>r   sl   ø
üüîõ&ö