Toolbox snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
Error.cpp
Go to the documentation of this file.
1// The Reactive C++ Toolbox.
2// Copyright (C) 2013-2019 Swirly Cloud Limited
3// Copyright (C) 2021 Reactive Markets Limited
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
17#include "Error.hpp"
18
19#if __has_include(<boost/system/detail/error_code.ipp>)
20#pragma GCC visibility push(default)
21#include <boost/system/detail/error_code.ipp>
22#pragma GCC visibility pop
23#endif
24
25#include <netdb.h>
26
27namespace toolbox {
28inline namespace net {
29namespace {
30struct GaiErrorCategory final : std::error_category {
31 constexpr GaiErrorCategory() noexcept = default;
32 ~GaiErrorCategory() override = default;
33
34 // Copy.
35 GaiErrorCategory(const GaiErrorCategory&) = delete;
36 GaiErrorCategory& operator=(const GaiErrorCategory&) = delete;
37
38 // Move.
39 GaiErrorCategory(GaiErrorCategory&&) = delete;
40 GaiErrorCategory& operator=(GaiErrorCategory&&) = delete;
41
42 const char* name() const noexcept override { return "gai"; }
43 std::string message(int err) const override { return gai_strerror(err); }
44};
45
46const GaiErrorCategory gai_cat_{};
47} // namespace
48
49const std::error_category& gai_error_category() noexcept
50{
51 return gai_cat_;
52}
53
54std::error_code make_gai_error_code(int err) noexcept
55{
56 return {err, gai_cat_};
57}
58
59} // namespace net
60} // namespace toolbox
const std::error_category & gai_error_category() noexcept
Definition Error.cpp:49
std::error_code make_gai_error_code(int err) noexcept
Definition Error.cpp:54
constexpr auto bind() noexcept
Definition Slot.hpp:92