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
11#include <grpcpp/support/status.h>
12
13USERVER_NAMESPACE_BEGIN
14
15namespace ugrpc {
16
17/// @brief Converts @c google::rpc::Status from googleapis to @c grpc::Status .
18/// @c google::rpc::Status is used to initialize @c grpc::Status code and
19/// message and also added to status details.
20[[nodiscard]] grpc::Status ToGrpcStatus(const google::rpc::Status& gstatus);
21
22/// @brief Creates @c google::rpc::Status parsing it from @c grpc::Status
23/// details.
24[[nodiscard]] std::optional<google::rpc::Status> ToGoogleRpcStatus(const grpc::Status& status);
25
26/// @brief Outputs @a status to string using protobuf's text format.
27[[nodiscard]] std::string GetGStatusLimitedMessage(const google::rpc::Status& status);
28
29} // namespace ugrpc
30
31USERVER_NAMESPACE_END