Expose name() of senders
Change-Id: Ia1e97cf5dc8f1e92728626b21fcf1b7f4da4e6b1
diff --git a/aos/events/event-loop.h b/aos/events/event-loop.h
index 0b336c3..a187981 100644
--- a/aos/events/event-loop.h
+++ b/aos/events/event-loop.h
@@ -73,6 +73,9 @@
// Constructs an above message.
Message MakeMessage();
+ // Returns the name of the underlying queue.
+ const char *name() const { return sender_->name(); }
+
private:
friend class EventLoop;
Sender(std::unique_ptr<RawSender> sender) : sender_(std::move(sender)) {}
diff --git a/aos/events/raw-event-loop.h b/aos/events/raw-event-loop.h
index ffc894b..a903e93 100644
--- a/aos/events/raw-event-loop.h
+++ b/aos/events/raw-event-loop.h
@@ -60,6 +60,8 @@
Free(reinterpret_cast<SendContext *>(t));
}
+ virtual const char *name() const = 0;
+
protected:
RawSender(const RawSender &) = delete;
RawSender &operator=(const RawSender &) = delete;
diff --git a/aos/events/shm-event-loop.cc b/aos/events/shm-event-loop.cc
index b05aa84..945ebc0 100644
--- a/aos/events/shm-event-loop.cc
+++ b/aos/events/shm-event-loop.cc
@@ -60,6 +60,8 @@
return queue_->WriteMessage(msg, RawQueue::kOverride);
}
+ const char *name() const override { return queue_->name(); }
+
private:
RawQueue *queue_;
};
diff --git a/aos/events/simulated-event-loop.cc b/aos/events/simulated-event-loop.cc
index efce9ab..e82c381 100644
--- a/aos/events/simulated-event-loop.cc
+++ b/aos/events/simulated-event-loop.cc
@@ -43,6 +43,8 @@
return true; // Maybe false instead? :)
}
+ const char *name() const override { return queue_->name(); }
+
private:
SimulatedQueue *queue_;
};
@@ -93,8 +95,10 @@
const ::std::pair<::std::string, QueueTypeInfo> &type) {
auto it = queues_->find(type);
if (it == queues_->end()) {
- it = queues_->emplace(type, SimulatedQueue(type.second, scheduler_))
- .first;
+ it =
+ queues_
+ ->emplace(type, SimulatedQueue(type.second, type.first, scheduler_))
+ .first;
}
return &it->second;
}
diff --git a/aos/events/simulated-event-loop.h b/aos/events/simulated-event-loop.h
index 829ee8c..79b48b8 100644
--- a/aos/events/simulated-event-loop.h
+++ b/aos/events/simulated-event-loop.h
@@ -105,8 +105,9 @@
class SimulatedQueue {
public:
- explicit SimulatedQueue(const QueueTypeInfo &type, EventScheduler *scheduler)
- : type_(type), scheduler_(scheduler){};
+ explicit SimulatedQueue(const QueueTypeInfo &type, const ::std::string &name,
+ EventScheduler *scheduler)
+ : type_(type), name_(name), scheduler_(scheduler){};
std::unique_ptr<RawSender> MakeRawSender();
@@ -129,9 +130,12 @@
size_t size() { return type_.size; }
+ const char *name() const { return name_.c_str(); }
+
private:
int64_t index_ = -1;
QueueTypeInfo type_;
+ const ::std::string name_;
::std::vector<std::function<void(const aos::Message *message)>> watchers_;
RefCountedBuffer latest_message_;
EventScheduler *scheduler_;
diff --git a/aos/ipc_lib/queue.h b/aos/ipc_lib/queue.h
index f21295f..6fef1d5 100644
--- a/aos/ipc_lib/queue.h
+++ b/aos/ipc_lib/queue.h
@@ -144,6 +144,9 @@
// only 1 task is using this object (ie in tests).
int FreeMessages() const;
+ // Returns the name of the queue.
+ const char *name() const { return name_; }
+
private:
struct MessageHeader;