macro_rules! wrap_with_async_retry {
($retrypolicy:expr, $expression:expr) => { ... };
}
Expand description
wrap_with_async_retry!
macro wraps any arbitrary async function with pravega_rust_client_retry::retry_async::retry_async
This macro takes two parameters. The first parameter is the Retry policy which implements trait BackoffSchedule
.
The second parameter is the async function that needs to be wrapped within the retry logic.
The function invocation will be retried only error returned by the function returns can_retry()
as true.
E.g: usage
ⓘ
use pravega_rust_client_retry::retry_policy::RetryWithBackoff;
use pravega_rust_client_retry::retry_async::retry_async;
use pravega_rust_client_retry::wrap_with_async_retry;
//CustomError implements Retrayable trait
async fn function_a(param1: &str, param2:u8) -> Result<(), CustomError> {
}
let retry_policy = RetryWithBackoff::default().max_tries(10);
// the below invocation wraps function_a with the retry logic.
wrap_with_async_retry!(retry_policy, function_a("test", 1));