Ë
    ojf  ã                   óœ   — d Z ddlmZmZ ddlZ G d„ dej                  j                  «      Z G d„ dej                  j                  «      Z	y)z0
Interfaces used by the PROXY protocol modules.
é    )ÚTupleÚUnionNc                   ó²   — e Zd ZdZej
                  j                  d«      Zej
                  j                  d«      Zej
                  j                  d«      Z	y)Ú
IProxyInfoz8
    Data container for PROXY protocol header data.
    z<The raw byestring that represents the PROXY protocol header.zNAn L{twisted.internet.interfaces.IAddress} representing the connection source.zSAn L{twisted.internet.interfaces.IAddress} representing the connection destination.N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚzopeÚ	interfaceÚ	AttributeÚheaderÚsourceÚdestination© ó    úG/usr/lib/python3/dist-packages/twisted/protocols/haproxy/_interfaces.pyr   r      sV   „ ñð �^‰^×%Ñ%ØFó€Fð �^‰^×%Ñ%ð	ó€Fð —.‘.×*Ñ*ð	"ó�Kr   r   c                   óJ   — e Zd ZdZdedeeeef   ed   f   fd„Zdedefd„Z	y)	ÚIProxyParserz?
    Streaming parser that handles PROXY protocol headers.
    ÚdataÚreturn)NNc                  ó   — y)aÔ  
        Consume a chunk of data and attempt to parse it.

        @param data: A bytestring.
        @type data: bytes

        @return: A two-tuple containing, in order, an L{IProxyInfo} and any
            bytes fed to the parser that followed the end of the header.  Both
            of these values are None until a complete header is parsed.

        @raises InvalidProxyHeader: If the bytes fed to the parser create an
            invalid PROXY header.
        Nr   )r   s    r   ÚfeedzIProxyParser.feed$   ó   � r   Úlinec                  ó   — y)az  
        Parse a bytestring as a full PROXY protocol header line.

        @param line: A bytestring that represents a valid HAProxy PROXY
            protocol header line.
        @type line: bytes

        @return: An L{IProxyInfo} containing the parsed data.

        @raises InvalidProxyHeader: If the bytestring does not represent a
            valid PROXY header.
        Nr   )r   s    r   ÚparsezIProxyParser.parse3   r   r   N)
r   r   r	   r
   Úbytesr   r   r   r   r   r   r   r   r   r      sF   „ ñð�5ð ˜U 5¨°UÐ):Ñ#;¸UÀ:Ñ=NÐ#NÑOó ð�Eð ˜jô r   r   )
r
   Útypingr   r   Úzope.interfacer   r   Ú	Interfacer   r   r   r   r   ú<module>r"      s>   ðñ
÷  ã ô�—‘×)Ñ)ô ô$ �4—>‘>×+Ñ+õ  r   