DecentraSanta/main.py
2025-04-18 03:08:54 +02:00

53 lines
1.5 KiB
Python

from Crypto.PublicKey.ECC import EccKey
from classes.Message import Message
from classes.MessageHandler import MessageHandler
from classes.SantasBrain import Brain
from classes.UserInterface import UserInterface
participants: list[tuple[MessageHandler, UserInterface]] = []
class TestMessageHandler(MessageHandler):
def __init__(self):
super().__init__()
def send_message(self, message: Message, signing_key: EccKey):
message_string = message.generate_and_sign(signing_key)
for message_handler, _ in participants:
if message_handler != self:
message_handler.decode_received_message(message_string)
class TestUserInterface(UserInterface):
def __init__(self, own_name, extra_info):
super().__init__()
self.received_names = []
self.own_name = own_name
self.extra_info = extra_info
def tell(self):
self.set_user_info(self.own_name, self.extra_info)
def lets_go(self):
self.start_exchange(self.received_names)
def receive_user(self, name: str):
self.received_names.append(name)
def announce_recipient(self, name: str, other_info: str):
print(f'{self.own_name}: Received {name}, {other_info}')
number_of_participants = 20
for i in range(number_of_participants):
test_message_handler = TestMessageHandler()
test_user_interface = TestUserInterface(f'User {i}', f'Lives at {i} street')
brain = Brain(test_message_handler, test_user_interface)
participants.append((test_message_handler, test_user_interface))
test_user_interface.tell()
for i in range(number_of_participants):
handler, interface = participants[i]
interface.lets_go()