3
ò\ð]²  ã               @   sZ   d dl Z d dlZd dlZd\ZZZZZZ	Z
dd	d
ddddgZejefZG dd„ deƒZdS )é    Né   é   é   é   é   é   ÚOPENÚCLOSEÚPINGÚPONGÚMESSAGEÚUPGRADEÚNOOPc               @   s8   e Zd ZdZeZedddfdd„Zddd„Zd	d
„ Z	dS )ÚPacketzEngine.IO packet.Nc             C   sZ   || _ || _|d k	r|| _n,t|tjƒr0d| _nt|tƒrBd| _nd| _|rV| j|ƒ d S )NFT)Úpacket_typeÚdataÚbinaryÚ
isinstanceÚsixÚ	text_typeÚbinary_typesÚdecode)Úselfr   r   r   Úencoded_packet© r   ú:/tmp/pip-build-mqc4i71p/python-engineio/engineio/packet.pyÚ__init__   s    
zPacket.__init__FTc             C   sæ   | j r| rtj| jƒ}ntj| jƒ}| j r8|r8d| }| j rf|rZ|tj| jƒjdƒ7 }qÈ|| j7 }nbt	| jtj
ƒr€|| j7 }nHt	| jtƒs˜t	| jtƒr°|| jj| jdd�7 }n| jdk	rÈ|t| jƒ7 }|rât	|tƒ râ|jdƒ}|S )z#Encode the packet for transmission.Úbzutf-8ú,ú:)Ú
separatorsN)r   r   )r   r   Úint2byter   r   Úbase64Ú	b64encoder   r   r   Ústring_typesÚdictÚlistÚjsonÚdumpsÚstrr   Úencode)r   Úb64Zalways_bytesr   r   r   r   r*       s&    


zPacket.encodec             C   sP  d}t |tƒs|jdƒ}nt |tƒs,t|ƒ}tj|dd… ƒ| _| jdkr„d| _|dd… }tj|dd… ƒ| _|  jd8  _d}n&| jdkr¤|  jd8  _d| _nd| _d| _t	|ƒdk�rL| jrî|rÞt
j|dd… ƒ| _n|dd… | _n^y2| jj|dd… jdƒƒ| _t | jtƒ�rt‚W n* tk
�rJ   |dd… jdƒ| _Y nX dS )	zDecode a transmitted package.Fzutf-8r   r   éb   TNé0   )r   r   r*   Úbytesr   Úbyte2intr   r   r   Úlenr"   Ú	b64decoder'   Úloadsr   ÚintÚ
ValueError)r   r   r+   r   r   r   r   8   s:    



zPacket.decode)FT)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_jsonr'   r   r   r*   r   r   r   r   r   r      s   
r   )r   r   r   r   r   r   r   )r"   r'   r9   r   r   r	   r
   r   r   r   r   Zpacket_namesÚbinary_typeÚ	bytearrayr   Úobjectr   r   r   r   r   Ú<module>   s   
