diff --git a/stacks_and_queues/logger_rate_limiter.py b/stacks_and_queues/logger_rate_limiter.py new file mode 100644 index 0000000..4b35009 --- /dev/null +++ b/stacks_and_queues/logger_rate_limiter.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# author: bt3gl + +class Logger: + + def __init__(self): + + self.msg_set = set() + self.msg_queue = deque() + + def print_message(self, timestamp: int, message: str) -> bool: + + while self.msg_queue: + msg, msg_timestamp = self.msg_queue[0] + if timestamp - msg_timestamp >= 10: + self.msg_queue.popleft() + self.msg_set.remove(msg) + else: + break + + if message not in self.msg_set: + self.msg_set.add(message) + self.msg_queue.append((message, timestamp)) + return True + else: + return False +