blob: 13d75c5c1e723df9c58a715267ea4bb8bc89e40b [file] [log] [blame]
Austin Schuh01b4c352020-09-21 23:09:39 -07001#ifndef AOS_EVENTS_MESSAGE_COUNTER_H_
2#define AOS_EVENTS_MESSAGE_COUNTER_H_
3
4#include "aos/events/event_loop.h"
5
Stephan Pleinesd99b1ee2024-02-02 20:56:44 -08006namespace aos::testing {
Austin Schuh01b4c352020-09-21 23:09:39 -07007
8// Simple class to count messages on a channel easily. This only counts
9// messages published while running.
10template <typename T>
11class MessageCounter {
12 public:
13 MessageCounter(aos::EventLoop *event_loop, std::string_view name) {
14 event_loop->MakeNoArgWatcher<T>(name, [this]() { ++count_; });
15 }
16
17 // Returns the number of messages seen so far.
18 size_t count() const { return count_; }
19
20 private:
21 size_t count_ = 0;
22};
23
Stephan Pleinesd99b1ee2024-02-02 20:56:44 -080024} // namespace aos::testing
Austin Schuh01b4c352020-09-21 23:09:39 -070025
26#endif // AOS_EVENTS_MESSAGE_COUNTER_H_