@@ -55,31 +55,30 @@ static bool FromGrpcContext(const ::grpc::ClientContext& ctx,
5555 const std::multimap<::grpc::string_ref, ::grpc::string_ref>& trailers =
5656 ctx.GetServerTrailingMetadata ();
5757
58- const auto code_val = trailers.find (kGrpcStatusCodeHeader );
59- if (code_val == trailers.end ()) return false ;
58+ const auto [code_val_begin, code_val_end] =
59+ trailers.equal_range (kGrpcStatusCodeHeader );
60+ if (code_val_begin == code_val_end) return false ;
6061
61- const auto message_val = trailers.find (kGrpcStatusMessageHeader );
62- const std::optional<std::string> message =
63- message_val == trailers.end ()
64- ? std::nullopt
65- : std::optional<std::string>(
66- std::string (message_val->second .data (), message_val->second .size ()));
62+ std::optional<std::string> message;
63+ if (const auto [it, end] = trailers.equal_range (kGrpcStatusMessageHeader );
64+ it != end) {
65+ message = std::string (it->second .data (), it->second .size ());
66+ }
6767
68- const auto detail_val = trailers.find (kGrpcStatusDetailHeader );
69- const std::optional<std::string> detail_message =
70- detail_val == trailers.end ()
71- ? std::nullopt
72- : std::optional<std::string>(
73- std::string (detail_val->second .data (), detail_val->second .size ()));
68+ std::optional<std::string> detail_message;
69+ if (const auto [it, end] = trailers.equal_range (kGrpcStatusDetailHeader );
70+ it != end) {
71+ detail_message = std::string (it->second .data (), it->second .size ());
72+ }
7473
75- const auto grpc_detail_val = trailers.find (kBinaryErrorDetailsKey );
76- const std::optional<std::string> detail_bin =
77- grpc_detail_val == trailers.end ()
78- ? std::nullopt
79- : std::optional<std::string>(std::string (grpc_detail_val->second .data (),
80- grpc_detail_val->second .size ()));
74+ std::optional<std::string> detail_bin;
75+ if (const auto [it, end] = trailers.equal_range (kBinaryErrorDetailsKey );
76+ it != end) {
77+ detail_bin = std::string (it->second .data (), it->second .size ());
78+ }
8179
82- std::string code_str (code_val->second .data (), code_val->second .size ());
80+ std::string code_str (code_val_begin->second .data (),
81+ code_val_begin->second .size ());
8382 *status = internal::ReconstructStatus (code_str, current_status, std::move (message),
8483 std::move (detail_message), std::move (detail_bin),
8584 std::move (flight_status_detail));
0 commit comments