1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
// Copyright (c) Facebook, Inc. and its affiliates.
// All rights reserved.
//
// This source code is licensed under the BSD-style license found in the
// LICENSE file in the root directory of this source tree.
#pragma once
#include <cstring>
#include <system_error>
#include <fmt/format.h>
namespace fmt {
template <>
struct formatter<std::error_category> {
constexpr decltype(auto) parse(format_parse_context& ctx) {
return ctx.begin();
}
template <typename FormatContext>
decltype(auto) format(const std::error_category& cat, FormatContext& ctx) {
if (std::strcmp(cat.name(), "generic") == 0) {
return format_to(ctx.out(), "errno");
} else {
return format_to(ctx.out(), "{} error", cat.name());
}
}
};
template <>
struct formatter<std::error_code> {
constexpr decltype(auto) parse(format_parse_context& ctx) {
return ctx.begin();
}
template <typename FormatContext>
decltype(auto) format(const std::error_code& err, FormatContext& ctx) {
return format_to(
ctx.out(), "({}: {} - {})", err.category(), err.value(), err.message());
}
};
} // namespace fmt
namespace c10d {
namespace detail {
inline std::error_code lastError() noexcept {
return std::error_code{errno, std::generic_category()};
}
} // namespace detail
} // namespace c10d
|