Add library function to lookup storage duration per channel

This sets us up to actually add configuration per channel and have all
the call sites automatically update.

Change-Id: I1c1fe11b2096d6e2bdf578902e609b718c3bcb5c
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/events/event_loop_param_test.cc b/aos/events/event_loop_param_test.cc
index 7e79a8b..0d7794e 100644
--- a/aos/events/event_loop_param_test.cc
+++ b/aos/events/event_loop_param_test.cc
@@ -2241,7 +2241,9 @@
   // Sanity check channel frequencies to ensure that we've designed the test
   // correctly.
   ASSERT_EQ(800, sender.channel()->frequency());
-  ASSERT_EQ(2000000000, loop1->configuration()->channel_storage_duration());
+  ASSERT_EQ(2000000000, configuration::ChannelStorageDuration(
+                            loop1->configuration(), sender.channel())
+                            .count());
   constexpr int kMaxAllowedMessages = 800 * 2;
   constexpr int kSendMessages = kMaxAllowedMessages * 2;
   constexpr int kDroppedMessages = kSendMessages - kMaxAllowedMessages;
@@ -3195,15 +3197,8 @@
 }
 
 int TestChannelQueueSize(EventLoop *event_loop) {
-  const int frequency = TestChannelFrequency(event_loop);
-  const auto channel_storage_duration = std::chrono::nanoseconds(
-      event_loop->configuration()->channel_storage_duration());
-  const int queue_size =
-      frequency * std::chrono::duration_cast<std::chrono::duration<double>>(
-                      channel_storage_duration)
-                      .count();
-
-  return queue_size;
+  return configuration::QueueSize(event_loop->configuration(),
+                                  event_loop->GetChannel<TestMessage>("/test"));
 }
 
 RawSender::Error SendTestMessage(aos::Sender<TestMessage> &sender) {
@@ -3244,10 +3239,9 @@
   });
 
   const auto kRepeatOffset = std::chrono::milliseconds(1);
-  const auto base_offset =
-      std::chrono::nanoseconds(
-          event_loop->configuration()->channel_storage_duration()) -
-      (kRepeatOffset * (queue_size / 2));
+  const auto base_offset = configuration::ChannelStorageDuration(
+                               event_loop->configuration(), sender.channel()) -
+                           (kRepeatOffset * (queue_size / 2));
   event_loop->OnRun([&event_loop, &timer, &base_offset, &kRepeatOffset]() {
     timer->Schedule(event_loop->monotonic_now() + base_offset, kRepeatOffset);
   });
@@ -3271,8 +3265,8 @@
 
   const std::chrono::milliseconds kInterval = std::chrono::milliseconds(10);
   const monotonic_clock::duration channel_storage_duration =
-      std::chrono::nanoseconds(
-          event_loop->configuration()->channel_storage_duration());
+      configuration::ChannelStorageDuration(event_loop->configuration(),
+                                            sender.channel());
   const int queue_size = TestChannelQueueSize(event_loop.get());
 
   int msgs_sent = 0;