17#ifndef CYBER_DATA_DATA_VISITOR_H_
18#define CYBER_DATA_DATA_VISITOR_H_
50 explicit DataVisitor(
const std::vector<VisitorConfig>& configs)
51 : buffer_m0_(configs[0].channel_id,
53 buffer_m1_(configs[1].channel_id,
55 buffer_m2_(configs[2].channel_id,
57 buffer_m3_(configs[3].channel_id,
65 buffer_m0_, buffer_m1_, buffer_m2_, buffer_m3_);
71 data_fusion_ =
nullptr;
75 bool TryFetch(std::shared_ptr<M0>& m0, std::shared_ptr<M1>& m1,
76 std::shared_ptr<M2>& m2, std::shared_ptr<M3>& m3) {
92template <
typename M0,
typename M1,
typename M2>
95 explicit DataVisitor(
const std::vector<VisitorConfig>& configs)
96 : buffer_m0_(configs[0].channel_id,
98 buffer_m1_(configs[1].channel_id,
100 buffer_m2_(configs[2].channel_id,
113 data_fusion_ =
nullptr;
117 bool TryFetch(std::shared_ptr<M0>& m0, std::shared_ptr<M1>& m1,
118 std::shared_ptr<M2>& m2) {
133template <
typename M0,
typename M1>
137 : buffer_m0_(configs[0].channel_id,
139 buffer_m1_(configs[1].channel_id,
150 data_fusion_ =
nullptr;
154 bool TryFetch(std::shared_ptr<M0>& m0, std::shared_ptr<M1>& m1) {
168template <
typename M0>
172 : buffer_(configs.channel_id, new
BufferType<M0>(configs.queue_size)) {
178 : buffer_(channel_id, new
BufferType<M0>(queue_size)) {
uint64_t channel_id() const
void AddBuffer(const ChannelBuffer< T > &channel_buffer)
void AddNotifier(uint64_t channel_id, const std::shared_ptr< Notifier > ¬ifier)
std::shared_ptr< Notifier > notifier_
DataNotifier * data_notifier_
bool TryFetch(std::shared_ptr< M0 > &m0, std::shared_ptr< M1 > &m1, std::shared_ptr< M2 > &m2)
DataVisitor(const std::vector< VisitorConfig > &configs)
bool TryFetch(std::shared_ptr< M0 > &m0, std::shared_ptr< M1 > &m1)
DataVisitor(const std::vector< VisitorConfig > &configs)
bool TryFetch(std::shared_ptr< M0 > &m0)
DataVisitor(uint64_t channel_id, uint32_t queue_size)
DataVisitor(const VisitorConfig &configs)
bool TryFetch(std::shared_ptr< M0 > &m0, std::shared_ptr< M1 > &m1, std::shared_ptr< M2 > &m2, std::shared_ptr< M3 > &m3)
DataVisitor(const std::vector< VisitorConfig > &configs)
CacheBuffer< std::shared_ptr< T > > BufferType
VisitorConfig(uint64_t id, uint32_t size)