
    wgm                     P    d dl Z d dlmZ d\  ZZZZZZ	Z
g dZeefZ G d d      Zy)    N)json)r                     )OPENCLOSEPINGPONGMESSAGEUPGRADENOOPc                   0    e Zd ZdZeZeddfdZddZd Z	y)PacketzEngine.IO packet.Nc                    || _         || _        d | _        t        |t              rd| _        nt        |t              rd| _        nd| _        | j
                  r| j                   t        k7  rt        d      || j                  |       y y )NFTz*Binary packets can only be of type MESSAGE)
packet_typedataencode_cache
isinstancestrbinarybinary_typesr   
ValueErrordecode)selfr   r   encoded_packets       T/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/engineio/packet.py__init__zPacket.__init__   sy    &	 dC DKl+DKDK;;4++w6IJJ%KK' &    c                 b   | j                   r| j                   S | j                  rA|r2dt        j                  | j                        j                  d      z   }n| j                  }nt        | j                        }t        | j                  t              r|| j                  z  }nt        | j                  t              st        | j                  t              r+|| j                  j                  | j                  d      z  }n$| j                  |t        | j                        z  }|| _         |S )zEncode the packet for transmission.

        Note: as a performance optimization, subsequent calls to this method
        will return a cached encoded packet, even if the data has changed.
        bzutf-8),:)
separators)r   r   base64	b64encoder   r   r   r   r   dictlistr   dumps)r   b64r   s      r   encodezPacket.encode   s     $$$;;!$v'7'7		'B'I'I( " "& !1!12N$))S)$))+DIIt,
499d0K$))//$))=G #2 #I I&#dii.0*r!   c                 v   t        |t              | _        | j                  st        |      dk(  rt	        d      | j                   xr |d   dk(  }|r0d| _        t
        | _        t        j                  |dd       | _	        y| j                  rt        |t              st        |      }| j                  rt
        | _        || _	        yt        |d         | _        	 | j                  j                  |dd       | _	        t        | j                  t              rt        y# t        $ r |dd | _	        Y yw xY w)zDecode a transmitted package.r   zInvalid empty packet receivedr#   Tr   N)r   r   r   lenr   r   r   r'   	b64decoder   bytesintr   loads)r   r   r,   s      r   r   zPacket.decode8   s    >{{s>2a7<==++o:."3s":DK&D(();<DI{{:ne#D!&~!6{{#* *	#&~a'8#9 3 $		qr0B CDI!$))S1 )(	 2
 " 3 .qr 2DI3s   AD" "D87D8)F)
__name__
__module____qualname____doc___jsonr   r   r    r-   r    r!   r   r   r   
   s     D#'d4 (43r!   r   )r'   engineior   r8   r
   r   r   r   r   r   r   packet_namesr1   	bytearrayr   r   r9   r!   r   <module>r=      s:     "4I 1udD'7DNy!H3 H3r!   