| // Copyright 2025 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SERVICES_NETWORK_PUBLIC_CPP_FETCH_RETRY_OPTIONS_H_ |
| #define SERVICES_NETWORK_PUBLIC_CPP_FETCH_RETRY_OPTIONS_H_ |
| |
| #include <cstdint> |
| #include <string> |
| #include <vector> |
| |
| #include "base/component_export.h" |
| #include "base/time/time.h" |
| #include "services/network/public/mojom/fetch_retry_options.mojom-shared.h" |
| |
| namespace network { |
| |
| // This implements a data structure holding the policy configurations for fetch |
| // retry feature. |
| // |
| // This struct is needed so that we can pass the same object when plumbing. |
| struct COMPONENT_EXPORT(NETWORK_CPP_FETCH_RETRY_OPTIONS) FetchRetryOptions { |
| FetchRetryOptions(); |
| ~FetchRetryOptions(); |
| |
| FetchRetryOptions(FetchRetryOptions&&); |
| FetchRetryOptions& operator=(FetchRetryOptions&&); |
| |
| FetchRetryOptions(const FetchRetryOptions&); |
| FetchRetryOptions& operator=(const FetchRetryOptions&); |
| |
| bool operator==(const FetchRetryOptions&) const; |
| |
| uint32_t max_attempts = 0; |
| std::optional<base::TimeDelta> initial_delay; |
| std::optional<double> backoff_factor; |
| std::optional<base::TimeDelta> max_age; |
| bool retry_after_unload = false; |
| bool retry_non_idempotent = false; |
| bool retry_only_if_server_unreached = false; |
| }; |
| |
| } // namespace network |
| |
| #endif // SERVICES_NETWORK_PUBLIC_CPP_FETCH_RETRY_OPTIONS_H_ |