99#include " std/ManapiAsyncContext.hpp"
1010#include " ./include/ManapiUtils.hpp"
1111
12+ struct manapi_errors_string_hash
13+ {
14+ using hash_type = std::hash<std::string_view>;
15+ using is_transparent = void ;
16+
17+ std::size_t operator ()(const char * str) const { return hash_type{}(str); }
18+ std::size_t operator ()(std::string_view str) const { return hash_type{}(str); }
19+ std::size_t operator ()(std::string const & str) const { return hash_type{}(str); }
20+ };
21+
22+
1223static const char * level_strings[] = {
1324 " TRACE" , " DEBUG" , " INFO" , " WARN" , " ERROR" , " FATAL"
1425};
@@ -28,19 +39,17 @@ static int log_trace_enabled = -1;
2839
2940static std::mutex log_mx;
3041
31- static std::unordered_map <std::string_view, std::unique_ptr < char , manapi::ev::chars_deleter >> log_names_enabled;
42+ static std::unordered_set <std::string, manapi_errors_string_hash, std::equal_to< >> log_names_enabled;
3243
3344void manapi::debug::set_log_name_enabled (const char *name, bool enabled) {
3445 if (enabled) {
35- auto const len = :: strlen (name);
36- std::unique_ptr< char , manapi::ev::chars_deleter> data ( new char (len + 1 ));
37- ::strcpy (data.get(), name);
38- data. get ()[len] = ' \0 ' ;
39- std::string_view sv (data. get (), len);
40- log_names_enabled.insert ({sv, std::move (data)} );
46+ log_names_enabled. insert ( std::string (name) );
47+ }
48+ else {
49+ auto it = log_names_enabled. find ( std::string_view (name)) ;
50+ if (it != log_names_enabled. end ())
51+ log_names_enabled.erase (it );
4152 }
42- else
43- log_names_enabled.erase (std::string_view (name));
4453}
4554
4655void manapi::debug::set_log_trace_enabled (int value) MANAPIHTTP_NOEXCEPT {
0 commit comments