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