r47169 - use Constants, don't depend on AF_UNIX
glyph-TA+aISz0psMTMxyoc4vAAJOcrHinNvQL0E9HWUfgJXw@public.gmane.org Tue, 5 Apr 2016 19:07:34 -0600 (MDT)
| Newsgroups | gmane.comp.python.twisted.commits |
|---|---|
| Message-ID | <[email protected]> |
Author: glyph
Date: Tue Apr 5 19:07:30 2016
New Revision: 47169
Modified:
branches/haproxy-endpoint-8203-2/twisted/protocols/haproxy/_v2parser.py
Log:
use Constants, don't depend on AF_UNIX
it doesn't exist on Windows
Modified: branches/haproxy-endpoint-8203-2/twisted/protocols/haproxy/_v2parser.py
==============================================================================
--- branches/haproxy-endpoint-8203-2/twisted/protocols/haproxy/_v2parser.py (original)
+++ branches/haproxy-endpoint-8203-2/twisted/protocols/haproxy/_v2parser.py Tue Apr 5 19:07:30 2016
@@ -8,12 +8,12 @@
"""
import binascii
-import socket
import struct
from zope.interface import implementer
from twisted.internet import address
from twisted.python import compat
+from twisted.python.constants import Values, ValueConstant
from ._exceptions import (
convertError, InvalidProxyHeader, InvalidNetworkProtocol,
@@ -22,10 +22,28 @@
from . import _info
from . import _interfaces
+class NetFamily(Values):
+ """
+ Values for the 'family' field.
+ """
+ UNSPEC = ValueConstant(0x00)
+ INET = ValueConstant(0x10)
+ INET6 = ValueConstant(0x20)
+ UNIX = ValueConstant(0x30)
+
+
+
+class NetProtocol(Values):
+ """
+ Values for 'protocol' field.
+ """
+ UNSPEC = ValueConstant(0)
+ STREAM = ValueConstant(1)
+ DGRAM = ValueConstant(2)
+
_HIGH = 0b11110000
_LOW = 0b00001111
-_UNSPECPROTO = 'UNSPEC'
_LOCALCOMMAND = 'LOCAL'
_PROXYCOMMAND = 'PROXY'
@@ -38,19 +56,8 @@
"""
PREFIX = b'\x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A'
- VERSIONS = (32,)
+ VERSIONS = [32]
COMMANDS = {0: _LOCALCOMMAND, 1: _PROXYCOMMAND}
- NETFAMILIES = {
- 0: socket.AF_UNSPEC,
- 16: socket.AF_INET,
- 32: socket.AF_INET6,
- 48: socket.AF_UNIX,
- }
- NETPROTOCOLS = {
- 0: _UNSPECPROTO,
- 1: socket.SOCK_STREAM,
- 2: socket.SOCK_DGRAM,
- }
ADDRESSFORMATS = {
# TCP4
17: '!4s4s2H',
@@ -167,18 +174,18 @@
return _info.ProxyInfo(line, None, None)
family, netproto = familyProto & _HIGH, familyProto & _LOW
- if family not in cls.NETFAMILIES or netproto not in cls.NETPROTOCOLS:
- raise InvalidNetworkProtocol()
-
+ with convertError(ValueError, InvalidNetworkProtocol):
+ family = NetFamily.lookupByValue(family)
+ netproto = NetProtocol.lookupByValue(netproto)
if (
- cls.NETFAMILIES[family] == socket.AF_UNSPEC or
- cls.NETPROTOCOLS[netproto] == _UNSPECPROTO
+ family is NetFamily.UNSPEC or
+ netproto is NetProtocol.UNSPEC
):
return _info.ProxyInfo(line, None, None)
addressFormat = cls.ADDRESSFORMATS[familyProto]
addrInfo = line[16:16+struct.calcsize(addressFormat)]
- if cls.NETFAMILIES[family] == socket.AF_UNIX:
+ if family is NetFamily.UNIX:
with convertError(struct.error, MissingAddressData):
source, dest = struct.unpack(addressFormat, addrInfo)
return _info.ProxyInfo(
@@ -188,11 +195,11 @@
)
addrType = 'TCP'
- if cls.NETPROTOCOLS[netproto] == socket.SOCK_DGRAM:
+ if netproto is NetProtocol.DGRAM:
addrType = 'UDP'
addrCls = address.IPv4Address
addrParser = cls._bytesToIPv4
- if cls.NETFAMILIES[family] == socket.AF_INET6:
+ if family is NetFamily.INET6:
addrCls = address.IPv6Address
addrParser = cls._bytesToIPv6