server_error_code.hpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright 2015 MongoDB Inc.
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. #pragma once
  15. #include <system_error>
  16. #include <mongocxx/config/prelude.hpp>
  17. namespace mongocxx {
  18. MONGOCXX_INLINE_NAMESPACE_BEGIN
  19. ///
  20. /// Enum representing the various errors types that can be returned from the server. As this list
  21. /// changes over time, this is just a placeholder for an Int32 error code value from the server.
  22. ///
  23. enum class server_error_code : std::int32_t {
  24. // Intentionally empty at this time!
  25. };
  26. ///
  27. /// Get the error_category for mongocxx library exceptions.
  28. ///
  29. /// @return The mongocxx error_category
  30. ///
  31. MONGOCXX_API const std::error_category& MONGOCXX_CALL server_error_category();
  32. ///
  33. /// Translate a mongocxx::server_error_code into a std::error_code.
  34. ///
  35. /// @param error A mongocxx::error_code
  36. ///
  37. /// @return A std::error_code
  38. ///
  39. MONGOCXX_INLINE std::error_code make_error_code(server_error_code error) {
  40. return {static_cast<int>(error), server_error_category()};
  41. }
  42. MONGOCXX_INLINE_NAMESPACE_END
  43. } // namespace mongocxx
  44. #include <mongocxx/config/postlude.hpp>
  45. namespace std {
  46. // Specialize is_error_code_enum so we get simpler std::error_code construction
  47. template <>
  48. struct is_error_code_enum<mongocxx::server_error_code> : public true_type {};
  49. } // namespace std