shared_simple.py 808 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # SPDX-License-Identifier: AGPL-3.0-or-later
  2. import threading
  3. from typing import Optional
  4. from . import shared_abstract
  5. class SimpleSharedDict(shared_abstract.SharedDict):
  6. __slots__ = ('d',)
  7. def __init__(self):
  8. self.d = {}
  9. def get_int(self, key: str) -> Optional[int]:
  10. return self.d.get(key, None)
  11. def set_int(self, key: str, value: int):
  12. self.d[key] = value
  13. def get_str(self, key: str) -> Optional[str]:
  14. return self.d.get(key, None)
  15. def set_str(self, key: str, value: str):
  16. self.d[key] = value
  17. def schedule(delay, func, *args):
  18. def call_later():
  19. t = threading.Timer(delay, wrapper)
  20. t.daemon = True
  21. t.start()
  22. def wrapper():
  23. call_later()
  24. func(*args)
  25. call_later()
  26. return True