protected virtual void SwitchState(VclHandler handler, VclBackendAction action) { if (!ValidTransitionStates.Contains(action)) { throw new InvalidOperationException($"Invalid attempt to transition back-end from {State} to {action}."); } handler.Logger?.LogDebug($"Backend state transition from {State} to {action}"); handler._currentBackendState = VclBackendHandlerStateFactory.Get(action); }
public async Task <VclBackendAction> ProcessBackendFetchAsync(VclContext context) { _backendAttempt = -1; _currentBackendState = VclBackendHandlerStateFactory.Get(VclBackendAction.Retry); while (_currentBackendState.State != VclBackendAction.Abandon && _currentBackendState.State != VclBackendAction.Deliver) { await _currentBackendState.ExecuteAsync(this, context).ConfigureAwait(false); } return(_currentBackendState.State); }