57 std::chrono::milliseconds
initial_delay = std::chrono::milliseconds(1000);
58 std::chrono::milliseconds
max_delay = std::chrono::milliseconds(30000);
84 size_t max_attempts = 3,
85 std::chrono::milliseconds initial_delay = std::chrono::milliseconds(1000)) {
101 size_t max_attempts = 3,
102 std::chrono::milliseconds
delay = std::chrono::milliseconds(1000)) {
117 size_t max_attempts = 3,
118 std::chrono::milliseconds initial_delay = std::chrono::milliseconds(1000)) {
153 template<
typename Func>
163 std::this_thread::sleep_for(
delay);
166 last_result = func();
168 if (last_result.is_ok()) {
214 std::chrono::milliseconds
delay;
224 delay = std::chrono::milliseconds(delay_ms);
251 if (n <= 1)
return 1;
256 for (
size_t i = 2; i <= n; ++i) {
257 size_t next = prev + curr;
280 template<
typename Func>
281 auto execute(Func&& func) ->
decltype(func()) {
Retry executor template class.
retry_executor(const std::string &name, const config &cfg)
const std::string & get_name() const
Get executor name.
void reset_metrics()
Reset metrics.
retry_metrics get_metrics() const
Get retry metrics.
retry_executor(const std::string &name)
common::Result< T > execute(Func &&func)
Execute a function with retry logic.
std::chrono::milliseconds calculate_delay(size_t attempt) const
Calculate delay for the current attempt.
static size_t fibonacci(size_t n)
Calculate Fibonacci number.
Basic retry policy implementation (backward compatibility)
retry_policy(const config &cfg)
auto execute(Func &&func) -> decltype(func())
@ delay
Delay requests until resources are available.
retry_strategy
Retry strategies.
retry_config create_fixed_delay_config(size_t max_attempts=3, std::chrono::milliseconds delay=std::chrono::milliseconds(1000))
Factory function for fixed delay config.
retry_config create_fibonacci_backoff_config(size_t max_attempts=3, std::chrono::milliseconds initial_delay=std::chrono::milliseconds(1000))
Factory function for Fibonacci backoff config.
retry_config create_exponential_backoff_config(size_t max_attempts=3, std::chrono::milliseconds initial_delay=std::chrono::milliseconds(1000))
Factory function for exponential backoff config.
Result pattern type definitions for monitoring system.
Extended error information with context.
static error_info from_common_error(const common::error_info &common_err)
Create from common_system error_info.
double backoff_multiplier
std::chrono::milliseconds initial_delay
std::chrono::milliseconds max_delay
std::function< bool(const error_info &)> should_retry
bool validate() const
Validate configuration.
size_t successful_executions