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