Coverage for /pythoncovmergedfiles/medio/medio/src/aiohttp/aiohttp/tcp_helpers.py: 37%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

19 statements  

1"""Helper methods to tune a TCP connection""" 

2 

3import asyncio 

4import socket 

5from contextlib import suppress 

6 

7__all__ = ("tcp_keepalive", "tcp_nodelay") 

8 

9 

10if hasattr(socket, "SO_KEEPALIVE"): 

11 

12 def tcp_keepalive(transport: asyncio.Transport) -> None: 

13 sock = transport.get_extra_info("socket") 

14 if sock is not None: 

15 sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) 

16 

17else: 

18 

19 def tcp_keepalive(transport: asyncio.Transport) -> None: 

20 """Noop when keepalive not supported.""" 

21 

22 

23def tcp_nodelay(transport: asyncio.Transport, value: bool) -> None: 

24 sock = transport.get_extra_info("socket") 

25 

26 if sock is None: 

27 return 

28 

29 if sock.family not in (socket.AF_INET, socket.AF_INET6): 

30 return 

31 

32 value = bool(value) 

33 

34 # socket may be closed already, on windows OSError get raised 

35 with suppress(OSError): 

36 sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, value)