U
    �Acjf  ã                   @   sH   d Z ddlmZmZ ddlZG dd„ dejjƒZG dd„ dejjƒZ	dS )z0
Interfaces used by the PROXY protocol modules.
é    )ÚTupleÚUnionNc                   @   s4   e Zd ZdZej d¡Zej d¡Zej d¡Z	dS )Ú
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ÚsourceZdestination© r   r   úI/tmp/pip-unpacked-wheel-nrvc_22y/twisted/protocols/haproxy/_interfaces.pyr      s   ÿÿÿr   c                   @   sD   e Zd ZdZeeeeef ed f dœdd„Zeedœdd„Z	d	S )
ÚIProxyParserz?
    Streaming parser that handles PROXY protocol headers.
    )NN)ÚdataÚreturnc                 C   s   dS )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   r   r   r   Úfeed$   s    zIProxyParser.feed)Úliner   c                 C   s   dS )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   r   r   r   Úparse3   s    zIProxyParser.parseN)
r   r   r   r   Úbytesr   r   r   r   r   r   r   r   r   r      s   $r   )
r   Útypingr   r   Zzope.interfacer	   r
   Z	Interfacer   r   r   r   r   r   Ú<module>   s   