private void ProcessAmountLessThanOrEquals20(int paymentId) { var results = RetryMechanism.RetryWithSame(() => _cheapPaymentGateway.ProcessPayment(paymentId), 0); if (!results) { ProcessFailedPayment(paymentId); } }
private void ProcessAmountGreaterThan500(int paymentId) { var results = RetryMechanism.RetryWithSame(() => _expensivePaymentGateway.ProcessPayment(paymentId), 3); if (!results) { ProcessFailedPayment(paymentId); } }
private void ProcessAmountGreaterThan20AndLessThanEqualTo500(int paymentId) { var results = RetryMechanism.RetryWithAlternate(() => _expensivePaymentGateway.ProcessPayment(paymentId), () => _cheapPaymentGateway.ProcessPayment(paymentId)); if (!results) { ProcessFailedPayment(paymentId); } }
public override IGateway Execute(decimal ammount) { IGateway gateway; if (ammount > 21 && ammount < 500) { gateway = RandomlyReturnInstanceOrNull <ExpensivePaymentGateway>(); if (gateway == null) { gateway = RetryMechanism.Do(RandomlyReturnInstanceOrNull <CheapPaymentGateway>, TimeSpan.FromSeconds(1), 1); } return(gateway); } return(base.Execute(ammount)); }