Timer.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/RefCounted.h>
  8. #include <LibJS/SafeFunction.h>
  9. namespace Web::Platform {
  10. class Timer : public RefCounted<Timer> {
  11. public:
  12. static NonnullRefPtr<Timer> create();
  13. static NonnullRefPtr<Timer> create_repeating(int interval_ms, JS::SafeFunction<void()>&& timeout_handler);
  14. static NonnullRefPtr<Timer> create_single_shot(int interval_ms, JS::SafeFunction<void()>&& timeout_handler);
  15. virtual ~Timer();
  16. virtual void start() = 0;
  17. virtual void start(int interval_ms) = 0;
  18. virtual void restart() = 0;
  19. virtual void restart(int interval_ms) = 0;
  20. virtual void stop() = 0;
  21. virtual void set_active(bool) = 0;
  22. virtual bool is_active() const = 0;
  23. virtual int interval() const = 0;
  24. virtual void set_interval(int interval_ms) = 0;
  25. virtual bool is_single_shot() const = 0;
  26. virtual void set_single_shot(bool) = 0;
  27. JS::SafeFunction<void()> on_timeout;
  28. };
  29. }