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

#include <all_latest.h>

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

Public 成员函数

 AllLatest (const ChannelBuffer< M0 > &buffer_0, const ChannelBuffer< M1 > &buffer_1, const ChannelBuffer< M2 > &buffer_2, const ChannelBuffer< M3 > &buffer_3)
 
bool Fusion (uint64_t *index, std::shared_ptr< M0 > &m0, std::shared_ptr< M1 > &m1, std::shared_ptr< M2 > &m2, std::shared_ptr< M3 > &m3) override
 
- Public 成员函数 继承自 apollo::cyber::data::fusion::DataFusion< M0, M1, M2, M3 >
virtual ~DataFusion ()
 

详细描述

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

在文件 all_latest.h39 行定义.

构造及析构函数说明

◆ AllLatest()

template<typename M0 , typename M1 = NullType, typename M2 = NullType, typename M3 = NullType>
apollo::cyber::data::fusion::AllLatest< M0, M1, M2, M3 >::AllLatest ( const ChannelBuffer< M0 > &  buffer_0,
const ChannelBuffer< M1 > &  buffer_1,
const ChannelBuffer< M2 > &  buffer_2,
const ChannelBuffer< M3 > &  buffer_3 
)
inline

在文件 all_latest.h44 行定义.

48 : buffer_m0_(buffer_0),
49 buffer_m1_(buffer_1),
50 buffer_m2_(buffer_2),
51 buffer_m3_(buffer_3),
52 buffer_fusion_(buffer_m0_.channel_id(),
53 new CacheBuffer<std::shared_ptr<FusionDataType>>(
54 buffer_0.Buffer()->Capacity() - uint64_t(1))) {
55 buffer_m0_.Buffer()->SetFusionCallback(
56 [this](const std::shared_ptr<M0>& m0) {
57 std::shared_ptr<M1> m1;
58 std::shared_ptr<M2> m2;
59 std::shared_ptr<M3> m3;
60 if (!buffer_m1_.Latest(m1) || !buffer_m2_.Latest(m2) ||
61 !buffer_m3_.Latest(m3)) {
62 return;
63 }
64
65 auto data = std::make_shared<FusionDataType>(m0, m1, m2, m3);
66 std::lock_guard<std::mutex> lg(buffer_fusion_.Buffer()->Mutex());
67 buffer_fusion_.Buffer()->Fill(data);
68 });
69 }
bool Latest(std::shared_ptr< T > &m)
std::shared_ptr< BufferType > Buffer() const

成员函数说明

◆ Fusion()

template<typename M0 , typename M1 = NullType, typename M2 = NullType, typename M3 = NullType>
bool apollo::cyber::data::fusion::AllLatest< M0, M1, M2, M3 >::Fusion ( uint64_t *  index,
std::shared_ptr< M0 > &  m0,
std::shared_ptr< M1 > &  m1,
std::shared_ptr< M2 > &  m2,
std::shared_ptr< M3 > &  m3 
)
inlineoverridevirtual

实现了 apollo::cyber::data::fusion::DataFusion< M0, M1, M2, M3 >.

在文件 all_latest.h71 行定义.

72 {
73 std::shared_ptr<FusionDataType> fusion_data;
74 if (!buffer_fusion_.Fetch(index, fusion_data)) {
75 return false;
76 }
77 m0 = std::get<0>(*fusion_data);
78 m1 = std::get<1>(*fusion_data);
79 m2 = std::get<2>(*fusion_data);
80 m3 = std::get<3>(*fusion_data);
81 return true;
82 }
bool Fetch(uint64_t *index, std::shared_ptr< T > &m)

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