Convert ping/pong examples to new flatbuffer API
This serves as a demonstration of how to use the new API.
Change-Id: Icfd5c0f77eae456001416a6deb02cb2946d40070
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/events/BUILD b/aos/events/BUILD
index d18f621..de380dc 100644
--- a/aos/events/BUILD
+++ b/aos/events/BUILD
@@ -33,11 +33,9 @@
target = ":event_loop_fbs_reflection_out",
)
-flatbuffer_cc_library(
+static_flatbuffer(
name = "ping_fbs",
- srcs = ["ping.fbs"],
- gen_reflections = 1,
- target_compatible_with = ["@platforms//os:linux"],
+ src = "ping.fbs",
)
flatbuffer_ts_library(
@@ -64,11 +62,9 @@
}),
)
-flatbuffer_cc_library(
+static_flatbuffer(
name = "pong_fbs",
- srcs = ["pong.fbs"],
- gen_reflections = 1,
- target_compatible_with = ["@platforms//os:linux"],
+ src = "pong.fbs",
)
cc_library(
diff --git a/aos/events/ping_lib.cc b/aos/events/ping_lib.cc
index 56dde2f..23de0db 100644
--- a/aos/events/ping_lib.cc
+++ b/aos/events/ping_lib.cc
@@ -3,8 +3,8 @@
#include "gflags/gflags.h"
#include "glog/logging.h"
-#include "aos/events/ping_generated.h"
-#include "aos/events/pong_generated.h"
+#include "aos/events/ping_static.h"
+#include "aos/events/pong_static.h"
#include "aos/json_to_flatbuffer.h"
DEFINE_int32(sleep_us, 10000, "Time to sleep between pings");
@@ -15,7 +15,7 @@
Ping::Ping(EventLoop *event_loop, std::string_view channel_name)
: event_loop_(event_loop),
- sender_(event_loop_->MakeSender<examples::Ping>(channel_name)) {
+ sender_(event_loop_->MakeSender<examples::PingStatic>(channel_name)) {
timer_handle_ = event_loop_->AddTimer([this]() { SendPing(); });
timer_handle_->set_name("ping");
@@ -38,12 +38,12 @@
<< FLAGS_sleep_us << "us.";
}
++count_;
- aos::Sender<examples::Ping>::Builder builder = sender_.MakeBuilder();
- examples::Ping::Builder ping_builder = builder.MakeBuilder<examples::Ping>();
- ping_builder.add_value(count_);
- ping_builder.add_send_time(
- event_loop_->monotonic_now().time_since_epoch().count());
- builder.CheckOk(builder.Send(ping_builder.Finish()));
+ aos::Sender<examples::PingStatic>::StaticBuilder builder =
+ sender_.MakeStaticBuilder();
+ examples::PingStatic *ping = builder.get();
+ ping->set_value(count_);
+ ping->set_send_time(event_loop_->monotonic_now().time_since_epoch().count());
+ builder.CheckOk(builder.Send());
VLOG(2) << "Sending ping";
}
diff --git a/aos/events/ping_lib.h b/aos/events/ping_lib.h
index fec6c45..aa40d6b 100644
--- a/aos/events/ping_lib.h
+++ b/aos/events/ping_lib.h
@@ -5,8 +5,8 @@
#include <string_view>
#include "aos/events/event_loop.h"
-#include "aos/events/ping_generated.h"
-#include "aos/events/pong_generated.h"
+#include "aos/events/ping_static.h"
+#include "aos/events/pong_static.h"
namespace aos {
@@ -25,7 +25,7 @@
void HandlePong(const examples::Pong &pong);
aos::EventLoop *event_loop_;
- aos::Sender<examples::Ping> sender_;
+ aos::Sender<examples::PingStatic> sender_;
// Timer handle which sends the Ping message.
aos::TimerHandler *timer_handle_;
// Number of pings sent.
diff --git a/aos/events/pong_lib.cc b/aos/events/pong_lib.cc
index e8bf171..7fb07c2 100644
--- a/aos/events/pong_lib.cc
+++ b/aos/events/pong_lib.cc
@@ -3,8 +3,8 @@
#include "glog/logging.h"
#include "aos/events/event_loop.h"
-#include "aos/events/ping_generated.h"
-#include "aos/events/pong_generated.h"
+#include "aos/events/ping_static.h"
+#include "aos/events/pong_static.h"
DEFINE_bool(fetch, false, "Poll & fetch messages instead of using a watcher.");
DEFINE_uint32(fetch_period_ms, 10, "Frequency at which to fetch.");
@@ -14,7 +14,7 @@
Pong::Pong(EventLoop *event_loop)
: event_loop_(event_loop),
fetcher_(event_loop_->MakeFetcher<examples::Ping>("/test")),
- sender_(event_loop_->MakeSender<examples::Pong>("/test")) {
+ sender_(event_loop_->MakeSender<examples::PongStatic>("/test")) {
if (FLAGS_fetch) {
event_loop_
->AddPhasedLoop(
@@ -40,11 +40,12 @@
}
last_value_ = ping.value();
last_send_time_ = ping.send_time();
- aos::Sender<examples::Pong>::Builder builder = sender_.MakeBuilder();
- examples::Pong::Builder pong_builder = builder.MakeBuilder<examples::Pong>();
- pong_builder.add_value(ping.value());
- pong_builder.add_initial_send_time(ping.send_time());
- builder.CheckOk(builder.Send(pong_builder.Finish()));
+ aos::Sender<examples::PongStatic>::StaticBuilder builder =
+ sender_.MakeStaticBuilder();
+ examples::PongStatic *pong = builder.get();
+ pong->set_value(ping.value());
+ pong->set_initial_send_time(ping.send_time());
+ builder.CheckOk(builder.Send());
}
} // namespace aos
diff --git a/aos/events/pong_lib.h b/aos/events/pong_lib.h
index a12dad0..17e5d35 100644
--- a/aos/events/pong_lib.h
+++ b/aos/events/pong_lib.h
@@ -2,8 +2,8 @@
#define AOS_EVENTS_PONG_LIB_H_
#include "aos/events/event_loop.h"
-#include "aos/events/ping_generated.h"
-#include "aos/events/pong_generated.h"
+#include "aos/events/ping_static.h"
+#include "aos/events/pong_static.h"
namespace aos {
@@ -18,7 +18,7 @@
void HandlePing(const examples::Ping &ping);
EventLoop *event_loop_;
aos::Fetcher<examples::Ping> fetcher_;
- aos::Sender<examples::Pong> sender_;
+ aos::Sender<examples::PongStatic> sender_;
int32_t last_value_ = 0;
int32_t last_send_time_ = 0;