Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/aiohttp/tcp_helpers.py: 40%

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

20 statements  

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

2 

3import asyncio 

4import socket 

5from contextlib import suppress 

6from typing import Optional # noqa 

7 

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

9 

10 

11if hasattr(socket, "SO_KEEPALIVE"): 

12 

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

14 sock = transport.get_extra_info("socket") 

15 if sock is not None: 

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

17 

18else: 

19 

20 def tcp_keepalive(transport: asyncio.Transport) -> None: # pragma: no cover 

21 pass 

22 

23 

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

25 sock = transport.get_extra_info("socket") 

26 

27 if sock is None: 

28 return 

29 

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

31 return 

32 

33 value = bool(value) 

34 

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

36 with suppress(OSError): 

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