example: Add a repeating timer sample
Tested:
Ran through unit test suite and manually executed the example
program to make sure it works as expected.
Change-Id: I77cffdd038df4eab774f0d162f49273650638ad6
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/example/heartbeat_timer.cpp b/example/heartbeat_timer.cpp
new file mode 100644
index 0000000..c8354e8
--- /dev/null
+++ b/example/heartbeat_timer.cpp
@@ -0,0 +1,35 @@
+/**
+ * A simple example of a repeating timer that prints out a message for
+ * each timer expiration.
+ */
+
+#include <chrono>
+#include <cstdio>
+#include <sdeventplus/clock.hpp>
+#include <sdeventplus/event.hpp>
+#include <sdeventplus/utility/timer.hpp>
+#include <string>
+
+using sdeventplus::Clock;
+using sdeventplus::ClockId;
+using sdeventplus::Event;
+
+constexpr auto clockId = ClockId::RealTime;
+using Timer = sdeventplus::utility::Timer<clockId>;
+
+int main(int argc, char* argv[])
+{
+ if (argc != 2)
+ {
+ fprintf(stderr, "Usage: %s [seconds]\n", argv[0]);
+ return 1;
+ }
+
+ unsigned interval = std::stoul(argv[1]);
+ fprintf(stderr, "Beating every %u seconds\n", interval);
+
+ auto event = Event::get_default();
+ Timer timer(event, [](Timer&) { printf("Beat\n"); },
+ std::chrono::seconds{interval});
+ return event.loop();
+}