userver: userver/ugrpc/status_utils.hpp Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
status_utils.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/ugrpc/status_utils.hpp
4/// @brief Utilities for @c grpc::Status and @c google::rpc::Status types.
5
6#include <optional>
7#include <string>
8
9#include <google/rpc/status.pb.h>
10#include <grpcpp/support/status.h>
11
12USERVER_NAMESPACE_BEGIN
13
14namespace ugrpc {
15
16/// @brief Converts @c google::rpc::Status from googleapis to @c grpc::Status .
17/// @c google::rpc::Status is used to initialize @c grpc::Status code and
18/// message and also added to status details.
19[[nodiscard]] grpc::Status ToGrpcStatus(const google::rpc::Status& gstatus);
20
21/// @brief Creates @c google::rpc::Status parsing it from @c grpc::Status
22/// details.
23[[nodiscard]] std::optional<google::rpc::Status> ToGoogleRpcStatus(const grpc::Status& status);
24
25/// @brief Outputs @a status to string using protobuf's text format.
26[[nodiscard]] std::string GetGStatusLimitedMessage(const google::rpc::Status& status);
27
28} // namespace ugrpc
29
30USERVER_NAMESPACE_END