Move size constant out into message_bridge_protocol.h
Sarah points out I really should make hard-coded numbers into constants.
She's not wrong. Done.
This was done in a follow-on review to merge the fix faster.
Signed-off-by: Austin Schuh <austin.schuh@bluerivertech.com>
Change-Id: I92a27b946d5d60c2e15cdedb7faf349571f13c81
diff --git a/aos/network/message_bridge_client_lib.cc b/aos/network/message_bridge_client_lib.cc
index c43fc9a..0aefb5c 100644
--- a/aos/network/message_bridge_client_lib.cc
+++ b/aos/network/message_bridge_client_lib.cc
@@ -129,7 +129,7 @@
[this]() { connect_timer_->Setup(event_loop_->monotonic_now()); });
size_t max_write_size =
- std::max(static_cast<size_t>(208u), connect_message_.span().size());
+ std::max(kHeaderSizeOverhead(), connect_message_.span().size());
size_t max_read_size = 0u;
for (const Channel *channel : *event_loop_->configuration()->channels()) {
@@ -139,8 +139,9 @@
configuration::ChannelIsReadableOnNode(channel, event_loop_->node())) {
VLOG(1) << "Receiving channel "
<< configuration::CleanedChannelToString(channel);
- max_read_size = std::max(static_cast<size_t>(channel->max_size() + 208u),
- max_read_size);
+ max_read_size = std::max(
+ static_cast<size_t>(channel->max_size() + kHeaderSizeOverhead()),
+ max_read_size);
}
}
diff --git a/aos/network/message_bridge_protocol.h b/aos/network/message_bridge_protocol.h
index 485defe..23a6e0f 100644
--- a/aos/network/message_bridge_protocol.h
+++ b/aos/network/message_bridge_protocol.h
@@ -31,6 +31,10 @@
// The stream on which timestamp replies are sent.
constexpr size_t kTimestampStream() { return 1; }
+// Overhead constant for headers. Both remote timestamps and the extra context
+// inside RemoteData need to fit inside this.
+constexpr size_t kHeaderSizeOverhead() { return 208u; }
+
// Builds up a subscription request for my_node to remote_name.
aos::FlatbufferDetachedBuffer<aos::message_bridge::Connect> MakeConnectMessage(
const Configuration *config, const Node *my_node,
diff --git a/aos/network/message_bridge_server_lib.cc b/aos/network/message_bridge_server_lib.cc
index ce68402..df6d4b1 100644
--- a/aos/network/message_bridge_server_lib.cc
+++ b/aos/network/message_bridge_server_lib.cc
@@ -29,8 +29,7 @@
flatbuffers::FlatBufferBuilder ChannelState::PackContext(
FixedAllocator *allocator, const Context &context) {
flatbuffers::FlatBufferBuilder fbb(
- channel_->max_size() + MessageBridgeServer::kRemoteDataHeaderMaxSize,
- allocator);
+ channel_->max_size() + kHeaderSizeOverhead(), allocator);
fbb.ForceDefaults(true);
VLOG(2) << "Found " << peers_.size() << " peers on channel "
<< channel_->name()->string_view() << " "
@@ -402,9 +401,11 @@
CHECK(timestamp_state_ != nullptr);
// Buffer up the max size a bit so everything fits nicely.
- LOG(INFO) << "Max message size for all clients is " << max_size;
+ LOG(INFO) << "Max message read size for all clients is " << max_size;
+ LOG(INFO) << "Max message write size for all clients is "
+ << max_channel_size + kHeaderSizeOverhead();
server_.SetMaxReadSize(max_size);
- server_.SetMaxWriteSize(max_channel_size + kRemoteDataHeaderMaxSize);
+ server_.SetMaxWriteSize(max_channel_size + kHeaderSizeOverhead());
// Since we are doing interleaving mode 1, we will see at most 1 message being
// delivered at a time for an association. That means, if a message is
@@ -415,7 +416,7 @@
// and 1 new one with more of the data).
server_.SetPoolSize((destination_nodes + 1) * 2);
- allocator_ = FixedAllocator(max_channel_size + kRemoteDataHeaderMaxSize);
+ allocator_ = FixedAllocator(max_channel_size + kHeaderSizeOverhead());
reconnected_.reserve(max_channels());
}
diff --git a/aos/network/message_bridge_server_lib.h b/aos/network/message_bridge_server_lib.h
index fdc0441..98e1dd0 100644
--- a/aos/network/message_bridge_server_lib.h
+++ b/aos/network/message_bridge_server_lib.h
@@ -111,10 +111,6 @@
// node. It handles the session and dispatches data to the ChannelState.
class MessageBridgeServer {
public:
- // Size to reserve when building the RemoteData message for the header over
- // the data size.
- static constexpr size_t kRemoteDataHeaderMaxSize = 208u;
-
MessageBridgeServer(aos::ShmEventLoop *event_loop, std::string config_sha256);
~MessageBridgeServer() { event_loop_->epoll()->DeleteFd(server_.fd()); }