5 #include "util/asio/error.h" 6 #include "absl/strings/str_cat.h" 10 using namespace boost;
15 class gaia_error_category :
public system::error_category {
17 const char* name() const noexcept final {
return "gaia.util"; }
19 std::string message(
int ev)
const override {
20 switch (static_cast<gaia_error>(ev)) {
21 case gaia_error::bad_header:
23 case gaia_error::invalid_version:
24 return "invalid header version";
26 return absl::StrCat(
"gaia.util error(", ev,
")");
30 system::error_condition default_error_condition(
int ev)
const noexcept
override {
31 return system::error_condition{ev, *
this};
34 bool equivalent(
int ev, system::error_condition
const& condition)
const noexcept
override {
35 return condition.value() == ev && &condition.category() ==
this;
38 bool equivalent(system::error_code
const& error,
int ev)
const noexcept
override {
39 return error.value() == ev && &error.category() ==
this;
45 system::error_code make_error_code(gaia_error ev) {
46 static const gaia_error_category cat;
47 return system::error_code{static_cast<int>(ev), cat};