Add --rate flag to aos_send
Sometimes it's useful to be able to send a message periodically.
Change-Id: I6f498ddba8183a03659e09ce4382bdb3e6a1d0f0
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/aos/aos_send.cc b/aos/aos_send.cc
index ffc7957..adfd780 100644
--- a/aos/aos_send.cc
+++ b/aos/aos_send.cc
@@ -9,6 +9,8 @@
#include "gflags/gflags.h"
#include "glog/logging.h"
+DEFINE_double(rate, -1, "Rate at which to send the message (-1 to send once).");
+
int main(int argc, char **argv) {
gflags::SetUsageMessage(
"Sends messages on arbitrary channels.\n"
@@ -44,7 +46,19 @@
fbb.ForceDefaults(true);
fbb.Finish(aos::JsonToFlatbuffer(std::string_view(argv[1]), channel->schema(),
&fbb));
- sender->CheckOk(sender->Send(fbb.GetSize()));
+
+ if (FLAGS_rate < 0) {
+ sender->CheckOk(sender->Send(fbb.GetSize()));
+ } else {
+ cli_info.event_loop
+ ->AddTimer([&fbb, &sender]() {
+ sender->CheckOk(sender->Send(fbb.GetBufferPointer(), fbb.GetSize()));
+ })
+ ->Setup(cli_info.event_loop->monotonic_now(),
+ std::chrono::duration_cast<std::chrono::nanoseconds>(
+ std::chrono::duration<double>(1.0 / FLAGS_rate)));
+ cli_info.event_loop->Run();
+ }
return 0;
}