
    i~                     X    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dS )    N)json)r                     )OPENCLOSEPINGPONGMESSAGEUPGRADENOOPc                   2    e Zd ZdZeZeddfdZddZd Z	dS )PacketzEngine.IO packet.Nc                 0   || _         || _        d | _        t          |t                    rd| _        n$t          |t                    rd| _        nd| _        | j        r| j         t          k    rt          d          || 	                    |           d S d S )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       :/usr/local/lib/python3.11/dist-packages/engineio/packet.py__init__zPacket.__init__   s    &	 dC   	 DKKl++ 	 DKKDK; 	K4+w66IJJJ%KK''''' &%    Fc                    | j         r| j         S | j        r:|r0dt          j        | j                                      d          z   }n| j        }nt          | j                  }t          | j        t                    r|| j        z  }nwt          | j        t                    st          | j        t                    r%|| 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     	%$$; 	1 +!$v'7	'B'B'I'I( ( " "& !122N$)S)) 1$)+DIt,, 1
49d0K0K 1$)//$)=G #2 #I #I I&#di..0*r!   c                    t          |t                    | _        | j        s"t          |          dk    rt	          d          | j         o|d         dk    }|r6d| _        t
          | _        t          j        |dd                   | _	        dS | j        r$t          |t                    st          |          }| j        rt
          | _        || _	        dS t          |d                   | _        	 |d                                         rt          | j                            |dd                   | _	        dS # t          t          f$ r |dd         | _	        Y dS 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int	isnumericr   loads
IndexError)r   r   r,   s      r   r   zPacket.decode8   sd    >>{ 	>s>22a77<===+o:."3s": 	3DK&D();<<DIII{ 7:ne#D#D 7!&~!6!6{ 3#* *			#&~a'8#9#9 3%a(2244 ) )( $	qrr0B C CDIII"J/ 3 3 3 .qrr 2DIIII3s   2AD< < E E )F)
__name__
__module____qualname____doc___jsonr   r   r    r-   r    r!   r   r   r   
   s]        D#'d4 ( ( ( (   43 3 3 3 3r!   r   )r'   engineior   r:   r
   r   r   r   r   r   r   packet_namesr1   	bytearrayr   r   r;   r!   r   <module>r?      s     " " " " " "4I 1udD'7DNNNy!H3 H3 H3 H3 H3 H3 H3 H3 H3 H3r!   