o
    �õ±j¯3  ã                   @   sØ  U d dl mZmZmZmZmZmZmZ ddlT ddl	m
Z
mZ g d¢ZG dd„ deed�ZG d	d
„ d
eed�ZG dd„ deed�ZG dd„ deed�ZG dd„ deed�ZG dd„ deed�ZG dd„ deed�ZG dd„ deed�ZG dd„ deed�ZG dd„ deed�ZG dd„ deed�ZG dd„ deed�ZG dd „ d eed�Zeee eee eeee eee ee f f ee f f f 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#d!< eeee ee f eee ee f f 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%e$e#d"< G d#d$„ d$ƒZ&d%S )&é    )ÚcastÚDictÚOptionalÚSetÚTupleÚTypeÚUnioné   )Ú*)ÚLocalProtocolErrorÚSentinel)ÚCLIENTÚSERVERÚIDLEÚSEND_RESPONSEÚ	SEND_BODYÚDONEÚ
MUST_CLOSEÚCLOSEDÚMIGHT_SWITCH_PROTOCOLÚSWITCHED_PROTOCOLÚERRORc                   @   ó   e Zd ZdS )r   N©Ú__name__Ú
__module__Ú__qualname__© r   r   ú}/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/h11/_state.pyr   †   ó    r   )Ú	metaclassc                   @   r   )r   Nr   r   r   r   r   r   Š   r   r   c                   @   r   )r   Nr   r   r   r   r   r   �   r   r   c                   @   r   )r   Nr   r   r   r   r   r   “   r   r   c                   @   r   )r   Nr   r   r   r   r   r   —   r   r   c                   @   r   )r   Nr   r   r   r   r   r   ›   r   r   c                   @   r   )r   Nr   r   r   r   r   r   Ÿ   r   r   c                   @   r   )r   Nr   r   r   r   r   r   £   r   r   c                   @   r   )r   Nr   r   r   r   r   r   §   r   r   c                   @   r   )r   Nr   r   r   r   r   r   ¬   r   r   c                   @   r   )r   Nr   r   r   r   r   r   °   r   r   c                   @   r   )Ú_SWITCH_UPGRADENr   r   r   r   r   r!   ´   r   r!   c                   @   r   )Ú_SWITCH_CONNECTNr   r   r   r   r   r"   ¸   r   r"   ÚEVENT_TRIGGERED_TRANSITIONSÚSTATE_TRIGGERED_TRANSITIONSc                	   @   sÄ   e Zd Zddd„Zdee ddfdd„Zddd	„Zd
ee ddfdd„Z	ddee dee	 de
ee  ddfdd„Zdee deee	 eee	 ee f f ddfdd„Zddd„Zddd„ZdS )ÚConnectionStateÚreturnNc                 C   s    d| _ tƒ | _tttti| _d S )NT)Ú
keep_aliveÚsetÚpending_switch_proposalsr   r   r   Ústates©Úselfr   r   r   Ú__init__ú   s   zConnectionState.__init__Úrolec                 C   s   t | j|< |  ¡  d S ©N)r   r*   Ú!_fire_state_triggered_transitions)r,   r.   r   r   r   Úprocess_error  s   
zConnectionState.process_errorc                 C   s   d| _ |  ¡  d S )NF)r'   r0   r+   r   r   r   Úprocess_keep_alive_disabled  s   z+ConnectionState.process_keep_alive_disabledÚswitch_eventc                 C   s   | j  |¡ |  ¡  d S r/   )r)   Úaddr0   )r,   r3   r   r   r   Úprocess_client_switch_proposal  s   z.ConnectionState.process_client_switch_proposalÚ
event_typeÚserver_switch_eventc                 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 s5J ‚|  t ttf¡ |  ¡  d S )Nz@Received server _SWITCH_UPGRADE event without a pending proposal)	r   r)   r   ÚResponser(   Ú!_fire_event_triggered_transitionsÚRequestr   r0   )r,   r.   r6   r7   Ú_event_typer   r   r   Úprocess_event  s   
ÿzConnectionState.process_eventc              
   C   sf   | j | }z
t| | | }W n ty+   ttt |ƒ}td |j|| j | ¡ƒd ‚w || j |< d S )Nz4can't handle event type {} when role={} and state={})	r*   r#   ÚKeyErrorr   r   ÚEventr   Úformatr   )r,   r.   r6   ÚstateÚ	new_stater   r   r   r9   +  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   r$   ÚgetÚupdate)r,   Ústart_statesr.   Újoint_stateÚchangesr   r   r   r0   <  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   Ústart_next_cycled  s   
ÿ

z ConnectionState.start_next_cycle)r&   Nr/   )r   r   r   r-   r   r   r1   r2   r5   r>   r   r<   r   r   r9   r0   rH   r   r   r   r   r%   ù   s0    

üþý
ü
ûþý
ü
(r%   N)'Útypingr   r   r   r   r   r   r   Ú_eventsÚ_utilr   r   Ú__all__r   r   r   r   r   r   r   r   r   r   r   r!   r"   r>   ÚEventTransitionTyper:   ÚConnectionClosedÚDataÚEndOfMessager8   ÚInformationalResponser#   Ú__annotations__ÚStateTransitionTyper$   r%   r   r   r   r   Ú<module>   sˆ   &p*ÿÿÿÿ	ø
üüîõ!&ÿ	ö