19#if __has_include(<kcenon/common/patterns/result.h>)
20#include <kcenon/common/patterns/result.h>
21#define KCENON_COMMON_RESULT_AVAILABLE 1
22#elif __has_include(<common/patterns/result.h>)
23#include <common/patterns/result.h>
24#define KCENON_COMMON_RESULT_AVAILABLE 1
27#if defined(KCENON_COMMON_RESULT_AVAILABLE)
28#ifndef KCENON_COMMON_RESULT_SHIM_DEFINED
29#define KCENON_COMMON_RESULT_SHIM_DEFINED
32using ::kcenon::common::error_info;
36using ::kcenon::common::ok;
37using ::kcenon::common::make_error;
42#ifndef KCENON_COMMON_RESULT_FALLBACK_DEFINED
43#define KCENON_COMMON_RESULT_FALLBACK_DEFINED
56 message(std::move(message_value)),
59 error_info(
int code_value, std::string message_value, std::string category_value)
61 message(std::move(message_value)),
62 category(std::move(category_value)) {}
66 return error_info{code_value, std::move(message_value), std::move(category_value)};
78 :
error_(std::move(info)) {}
85 throw std::logic_error(
"Result does not contain a value");
92 throw std::logic_error(
"Result does not contain a value");
99 throw std::logic_error(
"Result does not contain an error");
106 throw std::logic_error(
"Result does not contain an error");
121 :
error_(std::move(info)) {}
128 throw std::logic_error(
"VoidResult does not contain an error");
135 throw std::logic_error(
"VoidResult does not contain an error");
182 return result.
value();
187 return result.
value();
192 return result.
error();
197 return result.
error();
201 return result.
error();
204namespace error_codes {
309 return "Unknown error";
311 return "Not implemented";
313 return "Invalid argument";
317 return "Writer not found";
319 return "Writer initialization failed";
321 return "Writer already exists";
323 return "Writer not healthy";
327 return "Failed to open file";
329 return "Failed to write to file";
331 return "File rotation failed";
333 return "File permission denied";
337 return "Network connection failed";
339 return "Network send failed";
341 return "Network timeout";
345 return "Buffer overflow";
347 return "Queue is full";
349 return "Queue is stopped";
351 return "Queue overflow: messages dropped";
353 return "Queue overflow: operation blocked";
357 return "Invalid configuration";
359 return "Configuration missing";
361 return "Configuration conflict";
365 return "Metrics collection failed";
367 return "Metrics not available";
371 return "Flush timeout";
373 return "Processing failed";
375 return "Filter error";
377 return "Formatter error";
379 return "Batch processing timeout";
381 return "Batch processing failed";
385 return "Encryption failed";
387 return "Decryption failed";
389 return "Authentication failed";
391 return "Sanitization failed";
393 return "Failed to read file";
395 return "Insecure file permissions";
397 return "Path traversal attack detected";
399 return "Invalid encryption key size";
401 return "Invalid filename";
405 return "DI container not available";
407 return "Component not found in DI container";
409 return "Failed to register component in DI container";
411 return "Failed to create component from factory";
413 return "DI container operation failed";
415 return "Async operation not running";
417 return "Async operation already running";
421 return "Writer not available";
423 return "Writer configuration error";
425 return "Writer operation failed";
427 return "Destructor cleanup failed";
430 return "Unknown logger error code";
448 static_cast<int>(code),
456 :
value_(std::move(error)) {}
477 return value_.error().message;
508 static_cast<int>(code),
570 return result.error().message;
const error_info & error() const
std::optional< T > value_
std::optional< error_info > error_
const error_info & error() const
VoidResult(error_info info)
std::optional< error_info > error_
result(common::error_info &&error)
result(const common::error_info &error)
common::Result< T > value_
const std::string & error_message() const
static result ok_value(const T &value)
const common::Result< T > & raw() const
result(logger_error_code code, const std::string &msg="")
logger_error_code error_code() const
bool is_ok(const Result< T > &result)
error_info make_error_info(int code_value, std::string message_value, std::string category_value)
Result< T > error(error_info info)
T & get_value(Result< T > &result)
error_info & get_error(Result< T > &result)
bool is_error(const Result< T > &result)
common::VoidResult make_logger_void_success()
logger_error_code
Error codes specific to the logger system.
@ async_operation_not_running
@ metrics_collection_failed
@ batch_processing_timeout
@ batch_processing_failed
@ async_operation_already_running
@ destructor_cleanup_failed
@ path_traversal_detected
@ writer_initialization_failed
@ network_connection_failed
@ writer_operation_failed
@ writer_configuration_error
common::VoidResult make_logger_void_result(logger_error_code code, const std::string &message="")
std::string get_logger_error_message(const common::VoidResult &result)
Get error message from a VoidResult.
logger_error_code get_logger_error_code(const common::VoidResult &result)
std::string logger_error_to_string(logger_error_code code)
Convert logger_error_code to string representation.
bool has_logger_error(const common::VoidResult &result)
Check if a VoidResult contains an error.
error_info(int code_value, std::string message_value)
error_info(int code_value, std::string message_value, std::string category_value)