correct MapBuilderStub (#770)
Context: The `::grpc::ClientContext` represents a single RPC on the client side. Therefore it is illegal to share the same context between two different RPC invocations.master
							parent
							
								
									03751b3c9f
								
							
						
					
					
						commit
						5bb81a9b4a
					
				|  | @ -33,6 +33,7 @@ int MapBuilderStub::AddTrajectoryBuilder( | |||
|     const cartographer::mapping::proto::TrajectoryBuilderOptions& | ||||
|         trajectory_options, | ||||
|     LocalSlamResultCallback local_slam_result_callback) { | ||||
|   grpc::ClientContext client_context; | ||||
|   proto::AddTrajectoryRequest request; | ||||
|   proto::AddTrajectoryResponse result; | ||||
|   *request.mutable_trajectory_builder_options() = trajectory_options; | ||||
|  | @ -40,7 +41,7 @@ int MapBuilderStub::AddTrajectoryBuilder( | |||
|     *request.add_expected_sensor_ids() = sensor_id; | ||||
|   } | ||||
|   grpc::Status status = | ||||
|       service_stub_->AddTrajectory(&client_context_, request, &result); | ||||
|       service_stub_->AddTrajectory(&client_context, request, &result); | ||||
|   CHECK(status.ok()); | ||||
| 
 | ||||
|   // Construct trajectory builder stub.
 | ||||
|  | @ -62,11 +63,12 @@ MapBuilderStub::GetTrajectoryBuilder(int trajectory_id) const { | |||
| } | ||||
| 
 | ||||
| void MapBuilderStub::FinishTrajectory(int trajectory_id) { | ||||
|   grpc::ClientContext client_context; | ||||
|   proto::FinishTrajectoryRequest request; | ||||
|   google::protobuf::Empty response; | ||||
|   request.set_trajectory_id(trajectory_id); | ||||
|   grpc::Status status = | ||||
|       service_stub_->FinishTrajectory(&client_context_, request, &response); | ||||
|       service_stub_->FinishTrajectory(&client_context, request, &response); | ||||
|   CHECK(status.ok()); | ||||
|   trajectory_builder_stubs_.erase(trajectory_id); | ||||
| } | ||||
|  |  | |||
|  | @ -53,7 +53,6 @@ class MapBuilderStub : public cartographer::mapping::MapBuilderInterface { | |||
|   cartographer::mapping::PoseGraphInterface* pose_graph() override; | ||||
| 
 | ||||
|  private: | ||||
|   grpc::ClientContext client_context_; | ||||
|   std::shared_ptr<grpc::Channel> client_channel_; | ||||
|   std::unique_ptr<proto::MapBuilderService::Stub> service_stub_; | ||||
|   PoseGraphStub pose_graph_stub_; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue