From 0fe8f5c0cda9a2e489970fec476cdb5a1b32cbcf Mon Sep 17 00:00:00 2001 From: leberr <robin.leber@student.reutlingen-university.de> Date: Wed, 10 Jan 2024 17:14:46 +0100 Subject: [PATCH] ring formation and getting neighbour (from slides) --- voting.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 voting.py diff --git a/voting.py b/voting.py new file mode 100644 index 0000000..71bb3de --- /dev/null +++ b/voting.py @@ -0,0 +1,29 @@ +import socket + +def form_ring(members): + sorted_binary_ring = sorted([socket.inet_aton(member) for member in members]) + sorted_ip_ring = [socket.inet_ntoa(node) for node in sorted_binary_ring] + return sorted_ip_ring + +members = ['192.168.0.1', '130.234.204.2', '130.234.203.2', '130.234.204.1', '182.4.3.111'] +ring = form_ring(members) +print(ring) + + +def get_neighbour(ring, current_node_ip, direction='left'): + current_node_index = ring.index(current_node_ip) if current_node_ip in ring else -1 + if current_node_index != -1: + if direction == 'left': + if current_node_index + 1 == len(ring): + return ring[0] + else: + return ring[current_node_index + 1] + else: + if current_node_index == 0: + return ring[len(ring) - 1] + else: + return ring[current_node_index - 1] + else: + return None +neighbour = get_neighbour(ring, '130.234.204.2', 'rigth') +print(neighbour) \ No newline at end of file -- GitLab