Apollo 10.0
自动驾驶开放平台
apollo::v2x::GrpcServerImpl类 参考final

#include <grpc_server.h>

类 apollo::v2x::GrpcServerImpl 继承关系图:
apollo::v2x::GrpcServerImpl 的协作图:

Public 成员函数

 GrpcServerImpl ()
 
 ~GrpcServerImpl ()
 
bool InitFlag ()
 
grpc::Status SendV2xTrafficLight (grpc::ServerContext *context, const ::apollo::v2x::obu::ObuTrafficLight *request, ::apollo::v2x::StatusResponse *response) override
 
grpc::Status SendObuAlarm (grpc::ServerContext *context, const ::apollo::v2x::ObuAlarm *request, ::apollo::v2x::StatusResponse *response) override
 
grpc::Status SendPerceptionObstacles (grpc::ServerContext *context, const apollo::v2x::V2XObstacles *request, StatusResponse *response) override
 
grpc::Status SendV2xRSI (grpc::ServerContext *context, const ::apollo::v2x::obu::ObuRsi *request, ::apollo::v2x::StatusResponse *response)
 
void GetMsgFromGrpc (std::shared_ptr<::apollo::v2x::obu::ObuTrafficLight > *ptr)
 
void GetMsgFromGrpc (std::shared_ptr<::apollo::v2x::obu::ObuRsi > *ptr)
 
void GetMsgFromGrpc (std::shared_ptr<::apollo::v2x::V2XObstacles > *ptr)
 

详细描述

在文件 grpc_server.h41 行定义.

构造及析构函数说明

◆ GrpcServerImpl()

apollo::v2x::GrpcServerImpl::GrpcServerImpl ( )

在文件 grpc_server.cc36 行定义.

37 : node_(::apollo::cyber::CreateNode("v2x_grpc_server")) {
38 CHECK(!!node_);
39 // _monitor = cybertron::MetricController::Instance();
40 AINFO << "GrpcServerImpl initial success";
41 init_flag_ = true;
42}
#define AINFO
Definition log.h:42
std::unique_ptr< Node > CreateNode(const std::string &node_name, const std::string &name_space)
Definition cyber.cc:33

◆ ~GrpcServerImpl()

apollo::v2x::GrpcServerImpl::~GrpcServerImpl ( )
inline

在文件 grpc_server.h47 行定义.

47 {
48 traffic_light_condition_.notify_all();
49 rsi_condition_.notify_all();
50 }

成员函数说明

◆ GetMsgFromGrpc() [1/3]

void apollo::v2x::GrpcServerImpl::GetMsgFromGrpc ( std::shared_ptr<::apollo::v2x::obu::ObuRsi > *  ptr)

◆ GetMsgFromGrpc() [2/3]

void apollo::v2x::GrpcServerImpl::GetMsgFromGrpc ( std::shared_ptr<::apollo::v2x::obu::ObuTrafficLight > *  ptr)

◆ GetMsgFromGrpc() [3/3]

void apollo::v2x::GrpcServerImpl::GetMsgFromGrpc ( std::shared_ptr<::apollo::v2x::V2XObstacles > *  ptr)

在文件 grpc_server.cc153 行定义.

154 {
155 if (nullptr == ptr) {
156 return;
157 }
158 std::unique_lock<std::mutex> guard(obstacles_mutex_);
159 obs_condition_.wait(guard, [this] { return obs_refresh_; });
160 obs_refresh_ = false;
161 *ptr = std::make_shared<::apollo::v2x::V2XObstacles>();
162 if (nullptr == *ptr) {
163 return;
164 }
165 (*ptr)->CopyFrom(latest_obstacles_);
166}

◆ InitFlag()

bool apollo::v2x::GrpcServerImpl::InitFlag ( )
inline

在文件 grpc_server.h52 行定义.

52{ return init_flag_; }

◆ SendObuAlarm()

grpc::Status apollo::v2x::GrpcServerImpl::SendObuAlarm ( grpc::ServerContext *  context,
const ::apollo::v2x::ObuAlarm request,
::apollo::v2x::StatusResponse *  response 
)
override

在文件 grpc_server.cc127 行定义.

129 {
130 ADEBUG << "Received SendOBUAlarm request from client!";
131 if (request->error_num() != ::apollo::v2x::ErrorCode::OBUID) {
132 } else {
133 AERROR << "OBU id:" << request->error_msg();
134 }
135 response->set_status(true);
136 return Status::OK;
137}
#define ADEBUG
Definition log.h:41
#define AERROR
Definition log.h:44
required string error_msg
required ErrorCode error_num

◆ SendPerceptionObstacles()

grpc::Status apollo::v2x::GrpcServerImpl::SendPerceptionObstacles ( grpc::ServerContext *  context,
const apollo::v2x::V2XObstacles request,
StatusResponse *  response 
)
override

在文件 grpc_server.cc75 行定义.

77 {
78 ADEBUG << "Received SendPerceptionObstacles request from client!";
79 {
80 std::lock_guard<std::mutex> guard(obstacles_mutex_);
81 latest_obstacles_.CopyFrom(*request);
82 response->set_status(true);
83 obs_refresh_ = true;
84 ADEBUG << "SendPerceptionObstacles response success.";
85 }
86 obs_condition_.notify_one();
87 return Status::OK;
88}

◆ SendV2xRSI()

grpc::Status apollo::v2x::GrpcServerImpl::SendV2xRSI ( grpc::ServerContext *  context,
const ::apollo::v2x::obu::ObuRsi request,
::apollo::v2x::StatusResponse *  response 
)

在文件 grpc_server.cc44 行定义.

46 {
47 ADEBUG << "Received SendV2xRSI request from client!";
48 ADEBUG << request->DebugString();
49
50 if (!request->has_header()) {
51 response->set_status(false);
52 response->set_info("error no header in RSI request");
53 AERROR << "SendV2xRSI request has no header";
54 return Status::CANCELLED;
55 }
56 {
57 std::lock_guard<std::mutex> guard(rsi_mutex_);
58 latest_rsi_.CopyFrom(*request);
59 auto obu_header = latest_rsi_.mutable_header();
60 if (obu_header->has_timestamp_sec()) {
61 AINFO << "Obu Timestamp: " << std::setiosflags(std::ios::fixed)
62 << std::setprecision(11) << obu_header->timestamp_sec();
63 AINFO << "SVB Timestamp: " << std::setiosflags(std::ios::fixed)
64 << std::setprecision(11) << ::apollo::cyber::Time::Now().ToSecond();
65 obu_header->set_timestamp_sec(::apollo::cyber::Time::Now().ToSecond());
66 }
67 rsi_refresh_ = true;
68 }
69 rsi_condition_.notify_one();
70
71 response->set_status(true);
72 AINFO << "SendV2xRSI response success.";
73 return Status::OK;
74}
static Time Now()
get the current time.
Definition time.cc:57
double ToSecond() const
convert time to second.
Definition time.cc:77

◆ SendV2xTrafficLight()

grpc::Status apollo::v2x::GrpcServerImpl::SendV2xTrafficLight ( grpc::ServerContext *  context,
const ::apollo::v2x::obu::ObuTrafficLight request,
::apollo::v2x::StatusResponse *  response 
)
override

在文件 grpc_server.cc90 行定义.

92 {
93 ADEBUG << "Received SendV2xTrafficLight request from client!";
94 ADEBUG << request->DebugString();
95
96 int num_current_light = request->road_traffic_light_size();
97
98 if (0 == num_current_light) {
99 response->set_status(false);
100 response->set_info("error v2x current lane traffic light size == 0");
101 AERROR << "SendV2xTrafficLight request no current lane traffic light.";
102 return Status::CANCELLED;
103 }
104 if (!request->has_header()) {
105 response->set_status(false);
106 response->set_info(
107 "error no header in IntersectionTrafficLightData request");
108 AERROR << "SendV2xTrafficLight request has no header";
109 return Status::CANCELLED;
110 }
111 {
112 std::lock_guard<std::mutex> guard(traffic_light_mutex_);
113 latest_traffic_light_.CopyFrom(*request);
114 auto obu_header = latest_traffic_light_.mutable_header();
115 if (obu_header->has_timestamp_sec()) {
116 obu_header->set_timestamp_sec(::apollo::cyber::Time::Now().ToSecond());
117 }
118 refresh_ = true;
119 }
120 traffic_light_condition_.notify_one();
121 auto cur_junction_id = request->intersection_id();
122 ADEBUG << "recieved the junction id " << cur_junction_id;
123 response->set_status(true);
124 return Status::OK;
125}

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