aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Twisted/py3/twisted/protocols/haproxy/_interfaces.py
diff options
context:
space:
mode:
authorshmel1k <shmel1k@ydb.tech>2023-11-26 18:16:14 +0300
committershmel1k <shmel1k@ydb.tech>2023-11-26 18:43:30 +0300
commitb8cf9e88f4c5c64d9406af533d8948deb050d695 (patch)
tree218eb61fb3c3b96ec08b4d8cdfef383104a87d63 /contrib/python/Twisted/py3/twisted/protocols/haproxy/_interfaces.py
parent523f645a83a0ec97a0332dbc3863bb354c92a328 (diff)
downloadydb-b8cf9e88f4c5c64d9406af533d8948deb050d695.tar.gz
add kikimr_configure
Diffstat (limited to 'contrib/python/Twisted/py3/twisted/protocols/haproxy/_interfaces.py')
-rw-r--r--contrib/python/Twisted/py3/twisted/protocols/haproxy/_interfaces.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/contrib/python/Twisted/py3/twisted/protocols/haproxy/_interfaces.py b/contrib/python/Twisted/py3/twisted/protocols/haproxy/_interfaces.py
new file mode 100644
index 0000000000..8fe90ea37a
--- /dev/null
+++ b/contrib/python/Twisted/py3/twisted/protocols/haproxy/_interfaces.py
@@ -0,0 +1,63 @@
+# -*- test-case-name: twisted.protocols.haproxy.test -*-
+# Copyright (c) Twisted Matrix Laboratories.
+# See LICENSE for details.
+
+"""
+Interfaces used by the PROXY protocol modules.
+"""
+from typing import Tuple, Union
+
+import zope.interface
+
+
+class IProxyInfo(zope.interface.Interface):
+ """
+ Data container for PROXY protocol header data.
+ """
+
+ header = zope.interface.Attribute(
+ "The raw byestring that represents the PROXY protocol header.",
+ )
+ source = zope.interface.Attribute(
+ "An L{twisted.internet.interfaces.IAddress} representing the "
+ "connection source."
+ )
+ destination = zope.interface.Attribute(
+ "An L{twisted.internet.interfaces.IAddress} representing the "
+ "connection destination."
+ )
+
+
+class IProxyParser(zope.interface.Interface):
+ """
+ Streaming parser that handles PROXY protocol headers.
+ """
+
+ def feed(data: bytes) -> Union[Tuple[IProxyInfo, bytes], Tuple[None, None]]:
+ """
+ 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.
+ """
+
+ def parse(line: bytes) -> IProxyInfo:
+ """
+ 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.
+ """