
    @OOf                         d dl Z d dlmZ d dlmZ d dlmZ  G d dej                        Z G d dej                        Z	ddgZ
y)	    N)
connection)flow)serializablec                   :    e Zd ZdZddZed        Zd Zd Zd Z	y)	
TCPMessagez
    An individual TCP "message".
    Note that TCP is *stream-based* and not *message-based*.
    For practical purposes the stream is chunked into messages here,
    but you should not rely on message boundaries.
    Nc                 Z    || _         || _        |xs t        j                         | _        y N)from_clientcontenttime	timestamp)selfr
   r   r   s       N/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/tcp.py__init__zTCPMessage.__init__   s#    &"1diik    c                      | | S r	    )clsstates     r   
from_statezTCPMessage.from_state   s    E{r   c                 H    | j                   | j                  | j                  fS r	   r
   r   r   r   s    r   	get_statezTCPMessage.get_state   s    t~~==r   c                 .    |\  | _         | _        | _        y r	   r   )r   r   s     r   	set_statezTCPMessage.set_state   s    9>6$,r   c                 j    dj                  | j                  rdndt        | j                              S )Nz{direction} {content}z->z<-)	directionr   )formatr
   reprr   r   s    r   __repr__zTCPMessage.__repr__   s2    &--"..dD$t||BT . 
 	
r   r	   )
__name__
__module____qualname____doc__r   classmethodr   r   r   r!   r   r   r   r   r      s/    2
  >?
r   r   c                        e Zd ZU dZee   ed<   	 	 ddej                  dej                  de
f fdZdej                  f fdZd	ej                  dd
f fdZd Z xZS )TCPFlowzD
    A TCPFlow is a simplified representation of a TCP session.
    messagesclient_connserver_connlivec                 6    t         |   |||       g | _        y r	   )superr   r)   )r   r*   r+   r,   	__class__s       r   r   zTCPFlow.__init__1   s     	k48r   returnc                     i t         |          d| j                  D cg c]  }|j                          c}iS c c}w Nr)   )r.   r   r)   )r   mr/   s     r   r   zTCPFlow.get_state:   s?    
g!
>1>
 	
>s   <r   Nc                     |j                  d      D cg c]  }t        j                  |       c}| _        t        |   |       y c c}w r2   )popr   r   r)   r.   r   )r   r   r3   r/   s      r   r   zTCPFlow.set_state@   s<    ;@99Z;PQa..q1Q%  Rs   A	c                 4    dt        | j                         dS )Nz
<TCPFlow (z messages)>)lenr)   r   s    r   r!   zTCPFlow.__repr__D   s    C./{;;r   )F)r"   r#   r$   r%   listr   __annotations__r   ClientServerboolr   r   Stater   r   r!   __classcell__)r/   s   @r   r(   r(   %   s|     : 	&&  && 	
<-- 
!|11 !d !<r   r(   )r   	mitmproxyr   r   mitmproxy.coretypesr   Serializabler   Flowr(   __all__r   r   r   <module>rD      sC        ,
** 
: <dii  <H r   