Example #1
0
        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);
            }
        }
Example #2
0
        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()
                });
            }
        }
Example #3
0
        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);
        }