Source code for torx.performance.networking_m

"""Contains functionality related to networks and port numbers."""
import socket

from torx.autodoc_decorators_m import autodoc_function

default_port = 14415

[docs] @autodoc_function def set_default_port(port: int): """Set the default port used in providing open ports.""" global default_port assert (type(port) == int), "Please provide port as an integer!" default_port = port
[docs] @autodoc_function def get_next_free_port(): """Return the next free port number starting from the default.""" for i in range(10000): port_to_try = default_port + i if not check_port_in_use(port_to_try): return port_to_try assert False, "Could not find free port in range " + \ f"[{default_port}, {port_to_try}]!"
[docs] @autodoc_function def check_port_in_use(port: int): """Return if the port to test is already in use or not.""" with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: return s.connect_ex(('localhost', port)) == 0