29#include "cyber/proto/clock.pb.h"
46#include "gflags/gflags.h"
56const std::string& kClockChannel =
"/clock";
57const std::string& kClockNode =
"clock";
59bool g_atexit_registered =
false;
61std::unique_ptr<Node> clock_node;
63logger::AsyncLogger* async_logger =
nullptr;
65void InitLogger(
const char* binary_name) {
66 const char* slash = strrchr(binary_name,
'/');
74 google::InitGoogleLogging(binary_name);
75 google::SetLogDestination(google::ERROR,
"");
76 google::SetLogDestination(google::WARNING,
"");
77 google::SetLogDestination(google::FATAL,
"");
80 async_logger = new ::apollo::cyber::logger::AsyncLogger(
81 google::base::GetLogger(FLAGS_minloglevel));
82 google::base::SetLogger(FLAGS_minloglevel, async_logger);
83 async_logger->Start();
86void StopLogger() {
delete async_logger; }
99bool Init(
const char* binary_name,
const std::string& dag_info) {
100 std::lock_guard<std::mutex> lg(g_mutex);
105 InitLogger(binary_name);
106 auto thread =
const_cast<std::thread*
>(async_logger->LogThread());
111 if (!g_atexit_registered) {
113 AERROR <<
"Register exit handle failed";
116 AINFO <<
"Register exit handle succ.";
117 g_atexit_registered =
true;
121 auto global_data = GlobalData::Instance();
122 if (global_data->IsMockTimeMode()) {
123 auto node_name = kClockNode + std::to_string(getpid());
124 clock_node = std::unique_ptr<Node>(
new Node(node_name));
126 [](
const std::shared_ptr<const apollo::cyber::proto::Clock>& msg) {
127 if (msg->has_clock()) {
128 Clock::Instance()->SetNow(
Time(msg->clock()));
134 if (dag_info !=
"") {
135 std::string dump_path;
136 if (dag_info.length() > 200) {
137 std::string truncated = dag_info.substr(0, 200);
139 "APOLLO_ENV_WORKROOT",
"/apollo") +
"/dumps/" + truncated;
142 common::GetEnv(
"APOLLO_ENV_WORKROOT",
"/apollo") +
"/dumps/" + dag_info;
144 google::SetCommandLineOption(
"bvar_dump_file", dump_path.c_str());
146 statistics::Statistics::Instance()->DisableChanVar();
148 google::SetCommandLineOption(
"bvar_dump_exclude",
"*qps");
149 google::SetCommandLineOption(
"bvar_dump",
"true");
155 std::lock_guard<std::mutex> lg(g_mutex);
160 TaskManager::CleanUp();
161 TimingWheel::CleanUp();
163 service_discovery::TopologyManager::CleanUp();
164 transport::Transport::CleanUp();
Node is the fundamental building block of Cyber RT.
Cyber has builtin time type Time.
void SetInnerThreadAttr(const std::string &name, std::thread *thr)
elements in Cyber – Node, Channel, Service, Writer, Reader, Client and Server's relationship is prese...
void SetName(const std::string &name)
std::string GetEnv(const std::string &var_name, const std::string &default_value="")
void SetState(const State &state)
bool Init(const char *binary_name, const std::string &dag_info)