| 32 | asio_error_handler::error errors[size]; |
| 33 | |
| 34 | void add(const char* error_msg) { |
| 35 | errors[idx].is_error = true; |
| 36 | memcpy(errors[idx].error_msg, error_msg, std::min(strlen(error_msg), sizeof(asio_error_handler::error::error_msg))); |
| 37 | errors[idx].error_msg[sizeof(asio_error_handler::error::error_msg) - 1] = '\0'; |
| 38 | idx = (idx + 1u) % size; |
| 39 | if(unhandled < size) ++unhandled; |
| 40 | else { |
| 41 | log_error("error overflow (full error ring buffer - $ errors have not been handled)", size_t(size)); |
| 42 | } |
| 43 | } |
| 44 | |
| 45 | asio_error_handler::error pop() { |
| 46 | idx = (idx == 0 ? size - 1 : idx - 1); |