Apollo 10.0
自动驾驶开放平台
apollo::dreamview::RecordPlayerFactory类 参考

#include <record_player_factory.h>

apollo::dreamview::RecordPlayerFactory 的协作图:

Public 成员函数

 ~RecordPlayerFactory ()
 
PlayerGetRecordPlayer (const std::string &record_name)
 
bool RegisterRecordPlayer (const std::string &record_namem, const std::string &record_file_path)
 
void UnregisterRecordPlayer (const std::string &record_name)
 
void Reset ()
 
void GetAllRecords (std::vector< std::string > *records)
 
void SetCurrentRecord (const std::string &record_name)
 
void IncreaseRecordPriority (const std::string &record_name)
 
bool RemoveLRURecord (std::string *remove_record_id)
 
std::string GetCurrentRecord ()
 
int GetLoadedRecordNum ()
 
bool EnableContinuePreload ()
 
bool EnableContinueLoad ()
 

详细描述

在文件 record_player_factory.h35 行定义.

构造及析构函数说明

◆ ~RecordPlayerFactory()

apollo::dreamview::RecordPlayerFactory::~RecordPlayerFactory ( )

成员函数说明

◆ EnableContinueLoad()

bool apollo::dreamview::RecordPlayerFactory::EnableContinueLoad ( )

在文件 record_player_factory.cc127 行定义.

127 {
128 return GetLoadedRecordNum() < LOADED_RECORD_NUM;
129}

◆ EnableContinuePreload()

bool apollo::dreamview::RecordPlayerFactory::EnableContinuePreload ( )

在文件 record_player_factory.cc123 行定义.

123 {
124 return GetLoadedRecordNum() < PRELOAD_RECORD_NUM;
125}

◆ GetAllRecords()

void apollo::dreamview::RecordPlayerFactory::GetAllRecords ( std::vector< std::string > *  records)

在文件 record_player_factory.cc95 行定义.

95 {
96 for (auto iter = s_record_player_map_.begin();
97 iter != s_record_player_map_.end(); iter++) {
98 records->push_back(iter->first);
99 }
100}

◆ GetCurrentRecord()

std::string apollo::dreamview::RecordPlayerFactory::GetCurrentRecord ( )

在文件 record_player_factory.cc105 行定义.

105{ return current_record_; }

◆ GetLoadedRecordNum()

int apollo::dreamview::RecordPlayerFactory::GetLoadedRecordNum ( )

在文件 record_player_factory.cc116 行定义.

116 {
117 {
118 RLock rlock(mutex_);
119 return loaded_record_.size();
120 }
121}
boost::shared_lock< boost::shared_mutex > RLock

◆ GetRecordPlayer()

Player * apollo::dreamview::RecordPlayerFactory::GetRecordPlayer ( const std::string &  record_name)

在文件 record_player_factory.cc107 行定义.

107 {
108 auto iter = s_record_player_map_.find(record_name);
109 if (iter == s_record_player_map_.end()) {
110 AERROR << "Failed to get " << record_name << " related player pointer.";
111 return nullptr;
112 }
113 return iter->second.get();
114}
#define AERROR
Definition log.h:44

◆ IncreaseRecordPriority()

void apollo::dreamview::RecordPlayerFactory::IncreaseRecordPriority ( const std::string &  record_name)

在文件 record_player_factory.cc131 行定义.

132 {
133 WLock wlock(mutex_);
134 auto iter =
135 std::find(loaded_record_.begin(), loaded_record_.end(), record_name);
136 if (iter == loaded_record_.end()) {
137 AERROR << "Current record is not loaded,invalid operation!";
138 return;
139 }
140 loaded_record_.erase(iter);
141 loaded_record_.push_back(record_name);
142 return;
143}
boost::unique_lock< boost::shared_mutex > WLock

◆ RegisterRecordPlayer()

bool apollo::dreamview::RecordPlayerFactory::RegisterRecordPlayer ( const std::string &  record_namem,
const std::string &  record_file_path 
)

在文件 record_player_factory.cc60 行定义.

61 {
63 play_param.is_play_all_channels = true;
64 // use play_param struct default value
65 // loop playback is not allowed
66 play_param.is_loop_playback = false;
67 std::vector<std::string> opt_black_channels;
68 // When using DV play recorder, need to block some real-time channels
69 // to avoid conflicts with real-time DV information.
70 opt_black_channels.push_back("/apollo/hmi/status");
71 opt_black_channels.push_back("/apollo/monitor/system_status");
72 opt_black_channels.push_back("/apollo/cyber/record_info");
73 play_param.black_channels.insert(opt_black_channels.begin(),
74 opt_black_channels.end());
75 // play_param.play_rate = 1.0f;
76 // play_param.begin_time_ns = 0;
77 // play_param.end_time_ns = std::numeric_limits<uint64_t>::max();
78 // play_param.start_time_s = 0;
79 // play_param.delay_time_s = 0;
80 // preload time and delay time is no used when nohup player process
81 play_param.preload_time_s = 1;
82 play_param.record_id = record_name;
83 play_param.files_to_play.insert(record_file_path);
84 const std::string node_name = "record_player_factory_" + record_name;
85 s_record_player_map_[record_name] = std::unique_ptr<Player>(
86 new Player(play_param, apollo::cyber::CreateNode(node_name), true));
87 s_record_player_map_[record_name]->Init();
88 {
89 WLock wlock(mutex_);
90 loaded_record_.push_back(record_name);
91 }
92 return true;
93}
std::unique_ptr< Node > CreateNode(const std::string &node_name, const std::string &name_space)
Definition cyber.cc:33
std::set< std::string > black_channels
Definition play_param.h:41
std::set< std::string > files_to_play
Definition play_param.h:39

◆ RemoveLRURecord()

bool apollo::dreamview::RecordPlayerFactory::RemoveLRURecord ( std::string *  remove_record_id)

在文件 record_player_factory.cc145 行定义.

145 {
146 if (EnableContinueLoad()) {
147 AERROR << "No need to remove record.";
148 return false;
149 }
150 {
151 RLock rlock(mutex_);
152 auto iter = loaded_record_.begin();
153 *remove_record_id = *loaded_record_.begin();
154 while (iter != loaded_record_.end()) {
155 // Can not remove selected record
156 if (*iter != current_record_) {
157 *remove_record_id = *iter;
158 break;
159 }
160 iter++;
161 }
162 }
163 UnregisterRecordPlayer(*remove_record_id);
164 return true;
165}
void UnregisterRecordPlayer(const std::string &record_name)

◆ Reset()

void apollo::dreamview::RecordPlayerFactory::Reset ( )

在文件 record_player_factory.cc29 行定义.

29 {
30 for (auto iter = s_record_player_map_.begin();
31 iter != s_record_player_map_.end();) {
32 iter->second = nullptr;
33 s_record_player_map_.erase(iter++);
34 }
35 current_record_ = "";
36}

◆ SetCurrentRecord()

void apollo::dreamview::RecordPlayerFactory::SetCurrentRecord ( const std::string &  record_name)

在文件 record_player_factory.cc101 行定义.

101 {
102 current_record_ = record_name;
103}

◆ UnregisterRecordPlayer()

void apollo::dreamview::RecordPlayerFactory::UnregisterRecordPlayer ( const std::string &  record_name)

在文件 record_player_factory.cc40 行定义.

41 {
42 auto iter = s_record_player_map_.find(record_name);
43 if (iter == s_record_player_map_.end()) {
44 AERROR << "Failed to get " << record_name << " related player pointer.";
45 return;
46 }
47 iter->second = nullptr;
48 s_record_player_map_.erase(record_name);
49 {
50 WLock wlock(mutex_);
51 auto vec_iter =
52 std::find(loaded_record_.begin(), loaded_record_.end(), record_name);
53 if (vec_iter != loaded_record_.end()) {
54 loaded_record_.erase(vec_iter);
55 }
56 }
57 return;
58}

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