Ë
    oj  ã                   óœ   — d Z ddlZddlmZ ddlmZ ddlmZ  G d„ d«      Z eej                  «       G d„ d	ej                  «      «       Zy)
z1
Implementation of raw packet interfaces for UDP
é    N)Úimplementer)Úprotocol)Úrawc                   ó   — e Zd Zd„ Zy)Ú	UDPHeaderc                 óh   — t        j                  d|d d «      \  | _        | _        | _        | _        y )Nz!HHHHé   )ÚstructÚunpackÚsourceÚdestÚlenÚcheck)ÚselfÚdatas     ú5/usr/lib/python3/dist-packages/twisted/pair/rawudp.pyÚ__init__zUDPHeader.__init__   s,   € Ü9?¿¹Ø�T˜"˜1�Xó:
Ñ6ˆŒ�d”i ¤¨4­:ó    N)Ú__name__Ú
__module__Ú__qualname__r   © r   r   r   r      s   „ ó
r   r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚRawUDPProtocolc                 ó   — i | _         y )N)Ú	udpProtos)r   s    r   r   zRawUDPProtocol.__init__   s	   € Øˆ�r   c                 ó  — t        |t        j                  «      st        d«      ‚|dk  rt        d«      ‚|dk\  rt        d«      ‚|| j                  vrg | j                  |<   | j                  |   j                  |«       y )Nz6Added protocol must be an instance of DatagramProtocolr   z'Added protocol must be positive or zeroi   z"Added protocol must fit in 16 bits)Ú
isinstancer   ÚDatagramProtocolÚ	TypeErrorr   Úappend)r   ÚnumÚprotos      r   ÚaddProtozRawUDPProtocol.addProto   su   € Ü˜%¤×!:Ñ!:Ô;ÜÐTÓUÐUØ�Š7ÜÐEÓFÐFØ�%Š<ÜÐ@ÓAÐAØ�d—n‘nÑ$Ø"$ˆD�N‰N˜3ÑØ�‰�sÑ×"Ñ" 5Õ)r   c                 ó²   — t        |«      }| j                  j                  |j                  d«      D ]#  }|j	                  |dd  ||j
                  f«       Œ% y )Nr   r	   )r   r   Úgetr   ÚdatagramReceivedr   )r   r   Úpartialr   r   r   ÚversionÚihlÚtosÚtot_lenÚfragment_idÚfragment_offsetÚdont_fragmentÚmore_fragmentsÚttlÚheaderr#   s                    r   r'   zRawUDPProtocol.datagramReceived(   sR   € ô" ˜4“ˆØ—^‘^×'Ñ'¨¯©°RÓ8ò 	FˆEØ×"Ñ" 4¨¨ 8¨f°f·m±mÐ-DÕEñ	Fr   N)r   r   r   r   r$   r'   r   r   r   r   r      s   „ òò	*óFr   r   )Ú__doc__r
   Úzope.interfacer   Útwisted.internetr   Útwisted.pairr   r   ÚIRawDatagramProtocolÚAbstractDatagramProtocolr   r   r   r   ú<module>r9      sQ   ðñ
ó å &å %Ý ÷
ñ 
ñ ˆS×%Ñ%Ó&ô"F�X×6Ñ6ó "Fó 'ñ"Fr   