31using ::apollo::v2x::CarStatus;
32using ::apollo::v2x::obu::ObuRsi;
33using ::apollo::v2x::obu::ObuTrafficLight;
35using grpc::ServerBuilder;
36using grpc::ServerContext;
40 FLAGS_grpc_client_host +
":" + FLAGS_grpc_client_port,
41 grpc::InsecureChannelCredentials()))) {
42 AINFO <<
"ObuInterFaceGrpcImpl Start Construct.";
43 cli_init_ = grpc_client_->InitFlag();
45 srv_init_ = grpc_server_->InitFlag();
53 std::unique_lock<std::mutex> lck(mutex_);
56 condition_.notify_all();
57 if (!!thread_grpc_ && thread_grpc_->joinable()) {
60 AINFO <<
"close obu interface success";
69 thread_grpc_.reset(
new std::thread([
this]() { this->ThreadRunServer(); }));
70 return thread_grpc_ !=
nullptr;
73void ObuInterFaceGrpcImpl::ThreadRunServer() {
74 std::unique_lock<std::mutex> lck(mutex_);
75 auto start = std::chrono::steady_clock::now();
76 std::string server_address(FLAGS_grpc_server_host +
":" +
77 FLAGS_grpc_server_port);
78 ServerBuilder builder;
80 builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
83 builder.RegisterService(grpc_server_.get());
85 auto tmp = builder.BuildAndStart();
86 server_ = std::move(tmp);
87 auto end = std::chrono::steady_clock::now();
88 std::chrono::duration<double> time_used = end - start;
89 AINFO <<
"ObuInterFaceGrpcImpl grpc server has listening on : "
90 << server_address <<
" time used : " << time_used.count();
91 condition_.wait(lck, [&]() {
return exit_flag_; });
95 std::shared_ptr<ObuTrafficLight> *msg) {
96 grpc_server_->GetMsgFromGrpc(msg);
100 std::shared_ptr<::apollo::v2x::V2XObstacles> *msg) {
101 grpc_server_->GetMsgFromGrpc(msg);
105 grpc_server_->GetMsgFromGrpc(msg);
109 const std::shared_ptr<CarStatus> &msg) {
110 grpc_client_->SendMsgToGrpc(msg);
void GetV2xRsiFromObu(std::shared_ptr<::apollo::v2x::obu::ObuRsi > *msg) override
void GetV2xTrafficLightFromObu(std::shared_ptr<::apollo::v2x::obu::ObuTrafficLight > *msg) override
void GetV2xObstaclesFromObu(std::shared_ptr<::apollo::v2x::V2XObstacles > *msg) override
bool InitialClient() override
bool InitialServer() override
void SendCarStatusToObu(const std::shared_ptr<::apollo::v2x::CarStatus > &msg) override
define v2x proxy module and onboard unit interface grpc impl class
The gflags used by v2x proxy module