public void Utilize(IValidationOperation operation) { if (!_consensusOperations.ContainsKey(operation.ChainType)) { throw new ConsensusOnChainTypeNotSupportedException(operation.ChainType); } if (_consensusOperations[operation.ChainType].ContainsKey(operation.Priority)) { Stack <IValidationOperation> consensusOperationsStack = _consensusOperations[operation.ChainType][operation.Priority]; consensusOperationsStack.Push(operation); } }
private void UpdateValidationOperation(TModel dto) { IValidationOperation <TModel> validationOperation = SetUpdateValidationOperation(dto); List <ValidationMessage> messages = validationOperation.GetValidationResults(); if (messages.Any()) { throw new ValidationOperationException(new ValidationExceptionModel() { ModelName = nameof(TModel), OriginalMessage = "Update-Model not valid", ValidationMessages = messages.Select(v => new ValidationExceptionMessage { Code = v.Code, Message = v.Message }).ToList() }); } }
public IValidationOperation GetNextOperation(PacketType chainType, IValidationOperation prevOperation = null) { if (!_consensusOperations.ContainsKey(chainType)) { throw new ConsensusOnChainTypeNotSupportedException(chainType); } IValidationOperation consensusOperation = null; Stack <IValidationOperation> consensusOperationsStack = null; if (prevOperation == null) { consensusOperationsStack = _consensusOperations[chainType][_consensusOperations[chainType].Keys[0]]; } else { int index = _consensusOperations[chainType].IndexOfKey(prevOperation.Priority) + 1; if (_consensusOperations[chainType].Keys.Count > index) { consensusOperationsStack = _consensusOperations[chainType][_consensusOperations[chainType].Keys[index]]; } } if (consensusOperationsStack != null) { if (consensusOperationsStack.Count > 1) { consensusOperation = consensusOperationsStack.Pop(); } else { IValidationOperation template = consensusOperationsStack.Pop(); consensusOperation = (IValidationOperation)ServiceLocator.Current.GetInstance(template.GetType()); consensusOperationsStack.Push(template); } } return(consensusOperation); }