123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #ifndef BOOST_MYSQL_IMPL_IS_FATAL_ERROR_IPP
- #define BOOST_MYSQL_IMPL_IS_FATAL_ERROR_IPP
- #pragma once
- #include <boost/mysql/client_errc.hpp>
- #include <boost/mysql/common_server_errc.hpp>
- #include <boost/mysql/error_categories.hpp>
- #include <boost/mysql/is_fatal_error.hpp>
- bool boost::mysql::is_fatal_error(error_code ec) noexcept
- {
-
- if (!ec)
- return false;
-
- const auto& cat = ec.category();
- if (cat == get_common_server_category())
- {
-
-
- auto code = static_cast<common_server_errc>(ec.value());
- switch (code)
- {
-
-
- case common_server_errc::er_unknown_com_error:
- case common_server_errc::er_aborting_connection:
- case common_server_errc::er_net_packet_too_large:
- case common_server_errc::er_net_read_error_from_pipe:
- case common_server_errc::er_net_fcntl_error:
- case common_server_errc::er_net_packets_out_of_order:
- case common_server_errc::er_net_uncompress_error:
- case common_server_errc::er_net_read_error:
- case common_server_errc::er_net_read_interrupted:
- case common_server_errc::er_net_error_on_write:
- case common_server_errc::er_net_write_interrupted:
- case common_server_errc::er_malformed_packet:
- case common_server_errc::er_zlib_z_buf_error:
- case common_server_errc::er_zlib_z_data_error:
- case common_server_errc::er_zlib_z_mem_error: return true;
- default: return false;
- }
- }
- else if (cat == get_mysql_server_category() || cat == get_mariadb_server_category())
- {
-
- return false;
- }
- else if (cat == get_client_category())
- {
- auto code = static_cast<client_errc>(ec.value());
- switch (code)
- {
-
- case client_errc::incomplete_message:
- case client_errc::protocol_value_error:
- case client_errc::extra_bytes:
- case client_errc::sequence_number_mismatch:
-
- case client_errc::max_buffer_size_exceeded:
-
-
-
- case client_errc::metadata_check_failed:
- case client_errc::num_resultsets_mismatch:
- case client_errc::row_type_mismatch:
- case client_errc::static_row_parsing_error:
-
-
- case client_errc::timeout:
- case client_errc::cancelled:
-
-
- case client_errc::server_doesnt_support_ssl:
- case client_errc::unknown_auth_plugin:
- case client_errc::server_unsupported:
- case client_errc::auth_plugin_requires_ssl: return true;
- default: return false;
- }
- }
- else
- {
-
- return true;
- }
- }
- #endif
|