Skip to content
Snippets Groups Projects
Commit bd155005 authored by Alexander Schulz's avatar Alexander Schulz
Browse files

reassign clients when new leader

parent 2d192dab
No related branches found
No related tags found
No related merge requests found
......@@ -101,4 +101,4 @@ class Client(multiprocessing.Process):
connection, addr = client_receive_message_socket.accept()
message = connection.recv(1024)
print(f"New server: {message.decode('utf-8')}")
self.registered_server = message.decode('utf-8')
\ No newline at end of file
self.registered_server_address = message.decode('utf-8')
......@@ -139,21 +139,27 @@ class Server(multiprocessing.Process):
heartbeat_send_thread = threading.Thread(target=self.send_heartbeat)
heartbeat_send_thread.start()
else:
self.cache_update_listener_thread = threading.Thread(target=self.listen_for_cache_update)
self.client_message_listener_thread = threading.Thread(target=self.listen_for_client_messages)
self.heartbeat_receive_thread = threading.Thread(target=self.listen_for_heartbeats)
self.heartbeat_timeout_thread = threading.Thread(target=self.check_heartbeat_timeout)
self.leader_election_thread = threading.Thread(target=self.leader_election)
self.cache_update_listener_thread.start()
self.client_message_listener_thread.start()
self.heartbeat_receive_thread.start()
self.heartbeat_timeout_thread.start()
self.leader_election_thread.start()
self.is_admin_of_groupchat = True
self.group_server_threads()
def start_listen_client_message_thread(self):
self.client_message_listener_thread = threading.Thread(target=self.listen_for_client_messages)
self.client_message_listener_thread.start()
self.is_admin_of_groupchat = True
def get_broadcast_address(self):
IP = self.server_address
......@@ -252,6 +258,10 @@ class Server(multiprocessing.Process):
update_cache_thread2.start()
update_group_server_of_client_thread.start()
# if server is not already a groupchat server start threads for groupchat tasks
if self.is_admin_of_groupchat == False:
self.start_listen_client_message_thread()
# find out which clients need to be informed about their groupchat server change
def update_group_server_of_client(self, reassigned_groups):
......@@ -547,7 +557,7 @@ class Server(multiprocessing.Process):
server_socket.bind((self.server_address, PORT))
server_socket.listen()
print(self.server_id+": "+"Group-chat server is listening for client messages at port: ", self.server_port)
print(self.server_id+": "+"Group-chat server is listening for client messages at port: ", PORT)
while True:
connection, addr = server_socket.accept()
......@@ -723,7 +733,11 @@ class Server(multiprocessing.Process):
def handle_leader_tasks(self):
# Perform leader-specific tasks here
print(self.server_address, " is now the leader.")
old_server_id = self.server_id
self.server_id = "MAIN"
# check if new MAIN server was leader of any groupchats and reassign these to serverID MAIN
self.reassign_chat_groups(old_server_id)
self.stop_threads()
self.run()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment