
    h                         S r SSKrSSKJr  SSKJr  SSKJr   " S S5      r\" \R                  5       " S S	\R                  5      5       rg)
z1
Implementation of raw packet interfaces for UDP
    N)implementer)protocol)rawc                       \ rS rSrS rSrg)	UDPHeader   c                 j    [         R                  " SUS S 5      u  U l        U l        U l        U l        g )Nz!HHHH   )structunpacksourcedestlencheck)selfdatas     Z/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/twisted/pair/rawudp.py__init__UDPHeader.__init__   s,    9?T"1X:
6di4:    )r   r   r   r   N)__name__
__module____qualname____firstlineno__r   __static_attributes__ r   r   r   r      s    
r   r   c                   &    \ rS rSrS rS rS rSrg)RawUDPProtocol   c                     0 U l         g )N	udpProtos)r   s    r   r   RawUDPProtocol.__init__   s	    r   c                    [        U[        R                  5      (       d  [        S5      eUS:  a  [        S5      eUS:  a  [        S5      eXR                  ;  a  / U R                  U'   U R                  U   R                  U5        g )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   addProtoRawUDPProtocol.addProto   sv    %!:!:;;TUU7EFF%<@AAnn$"$DNN3s""5)r   c                     [        U5      nU R                  R                  UR                  S5       H#  nUR	                  USS  X?R
                  45        M%     g )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/   RawUDPProtocol.datagramReceived(   sI    " 4^^''R8E""48fmm-DE 9r   r!   N)r   r   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>rB      sQ   
  & % 
 
 S%%&"FX66 "F '"Fr   