o
    Dh/                     @   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e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   E/var/www/html/env_mimamsha/lib/python3.10/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   switch_eventr   r   r   process_client_switch_proposal   s   z.ConnectionState.process_client_switch_proposalNc                 C   s   |d ur|t u s
J || jvrtd|||f}|d u r&|tu r&t | _| || |tu r>|tu s6J | 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_typeserver_switch_eventr   r   r   process_event   s    
zConnectionState.process_eventc              
   C   sV   | j | }z
t| | | }W n ty#   td|j|| j | w || j |< d S )Nz4can't handle event type {} when role={} and state={})r   EVENT_TRIGGERED_TRANSITIONSKeyErrorr   r$   __name__)r   r   r(   state	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s$| jt tu r$t| jt< | js:ttfD ]}| j| tu r9t| j|< q+| jt | jt f}t	
|i }| j| | j|krWd S qr   )dictr   r   r   r
   r   r   r   r   STATE_TRIGGERED_TRANSITIONSgetupdate)r   start_statesr   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rJ 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_cycler   )r-   
__module____qualname__r   r   r    r#   r*   r&   r   r7   r   r   r   r   r      s    
(r   N)_events_utilr   r   __all__r   r   r   r   r	   r
   r   r   r   r   r   r   r   r'   ConnectionClosedDataEndOfMessager%   InformationalResponser+   r1   objectr   r   r   r   r   <module>   sn   q
&