Apollo 10.0
自动驾驶开放平台
apollo::cyber::data::DataVisitor< M0, M1, M2, M3 > 模板类 参考

#include <data_visitor.h>

类 apollo::cyber::data::DataVisitor< M0, M1, M2, M3 > 继承关系图:
apollo::cyber::data::DataVisitor< M0, M1, M2, M3 > 的协作图:

Public 成员函数

 DataVisitor (const std::vector< VisitorConfig > &configs)
 
 ~DataVisitor ()
 
bool TryFetch (std::shared_ptr< M0 > &m0, std::shared_ptr< M1 > &m1, std::shared_ptr< M2 > &m2, std::shared_ptr< M3 > &m3)
 
- Public 成员函数 继承自 apollo::cyber::data::DataVisitorBase
 DataVisitorBase ()
 
void RegisterNotifyCallback (std::function< void()> &&callback)
 

额外继承的成员函数

- Protected 成员函数 继承自 apollo::cyber::data::DataVisitorBase
 DataVisitorBase (const DataVisitorBase &)=delete
 
DataVisitorBaseoperator= (const DataVisitorBase &)=delete
 
- Protected 属性 继承自 apollo::cyber::data::DataVisitorBase
uint64_t next_msg_index_ = 0
 
DataNotifierdata_notifier_ = DataNotifier::Instance()
 
std::shared_ptr< Notifiernotifier_
 

详细描述

template<typename M0, typename M1 = NullType, typename M2 = NullType, typename M3 = NullType>
class apollo::cyber::data::DataVisitor< M0, M1, M2, M3 >

在文件 data_visitor.h48 行定义.

构造及析构函数说明

◆ DataVisitor()

template<typename M0 , typename M1 = NullType, typename M2 = NullType, typename M3 = NullType>
apollo::cyber::data::DataVisitor< M0, M1, M2, M3 >::DataVisitor ( const std::vector< VisitorConfig > &  configs)
inlineexplicit

在文件 data_visitor.h50 行定义.

51 : buffer_m0_(configs[0].channel_id,
52 new BufferType<M0>(configs[0].queue_size)),
53 buffer_m1_(configs[1].channel_id,
54 new BufferType<M1>(configs[1].queue_size)),
55 buffer_m2_(configs[2].channel_id,
56 new BufferType<M2>(configs[2].queue_size)),
57 buffer_m3_(configs[3].channel_id,
58 new BufferType<M3>(configs[3].queue_size)) {
59 DataDispatcher<M0>::Instance()->AddBuffer(buffer_m0_);
60 DataDispatcher<M1>::Instance()->AddBuffer(buffer_m1_);
61 DataDispatcher<M2>::Instance()->AddBuffer(buffer_m2_);
62 DataDispatcher<M3>::Instance()->AddBuffer(buffer_m3_);
64 data_fusion_ = new fusion::AllLatest<M0, M1, M2, M3>(
65 buffer_m0_, buffer_m1_, buffer_m2_, buffer_m3_);
66 }
void AddNotifier(uint64_t channel_id, const std::shared_ptr< Notifier > &notifier)
std::shared_ptr< Notifier > notifier_

◆ ~DataVisitor()

template<typename M0 , typename M1 = NullType, typename M2 = NullType, typename M3 = NullType>
apollo::cyber::data::DataVisitor< M0, M1, M2, M3 >::~DataVisitor ( )
inline

在文件 data_visitor.h68 行定义.

68 {
69 if (data_fusion_) {
70 delete data_fusion_;
71 data_fusion_ = nullptr;
72 }
73 }

成员函数说明

◆ TryFetch()

template<typename M0 , typename M1 = NullType, typename M2 = NullType, typename M3 = NullType>
bool apollo::cyber::data::DataVisitor< M0, M1, M2, M3 >::TryFetch ( std::shared_ptr< M0 > &  m0,
std::shared_ptr< M1 > &  m1,
std::shared_ptr< M2 > &  m2,
std::shared_ptr< M3 > &  m3 
)
inline

在文件 data_visitor.h75 行定义.

76 { // NOLINT
77 if (data_fusion_->Fusion(&next_msg_index_, m0, m1, m2, m3)) {
79 return true;
80 }
81 return false;
82 }

该类的文档由以下文件生成: