Ejemplo n.º 1
0
        public static async Task Run([PerperStreamTrigger] PerperStreamContext context,
                                     [PerperStream("stepVerifierStream")] IAsyncEnumerable <IHashed <AgentOutput> > stepsStream,
                                     [PerperStream("outputStream")] IAsyncCollector <Dictionary <string, ValidatorSet> > outputStream)
        {
            var state = await context.FetchStateAsync <State>() ?? new State();

            await stepsStream.ForEachAsync(async output =>
            {
                foreach (var command in output.Value.Commands)
                {
                    if (command is PublicationCommand publication)
                    {
                        if (publication.Payload is ValidatorSetPublication validatorSetPublication)
                        {
                            // TODO: Fix conversion
                            var validatorSet = new ValidatorSet {
                                Weights = validatorSetPublication.Weights.ToDictionary(
                                    kv => (ValidatorKey)(object)kv.Key,
                                    kv => (int)kv.Value),
                            };
                            state.ValidatorSets[validatorSetPublication.AgentId] = validatorSet;
                            await outputStream.AddAsync(state.ValidatorSets);
                        }
                    }
                }
            });
        }
Ejemplo n.º 2
0
 private void OnDestroy()
 {
     NameValidator?.Unsubscribe();
     NameValidator = null;
     DescriptionValidator?.Unsubscribe();
     DescriptionValidator = null;
 }
Ejemplo n.º 3
0
 public void AddValidatorSet(ValidatorSet validatorSet)
 {
     if (validatorSets == null)
     {
         validatorSets = new List <ValidatorSet>();
     }
     validatorSets.Add(validatorSet);
 }
Ejemplo n.º 4
0
        public Entities.ExecResult IsValid()
        {
            ValidatorSet tValidatorSet = new ValidatorSet();

            foreach (var item in this.ValidatorDict)
            {
                tValidatorSet.IValidators.AddRange(item.Value.IValidators);
            }
            return(tValidatorSet.IsValid());
        }
Ejemplo n.º 5
0
 // Start is called before the first frame update
 void Start()
 {
     NameValidator = ValidatorSet.ValidateInputField(nameField, new List <Func <InputField, OneOf <Success, Error <string> > > >()
     {
         ValidateNotEmpty.CreateInputFieldValidator(() => "Collection name is required.")
     }, v => EnableCreateCollectionIfValid());
     DescriptionValidator = ValidatorSet.ValidateInputField(descriptionField, new List <Func <InputField, OneOf <Success, Error <string> > > >()
     {
         ValidateNotEmpty.CreateInputFieldValidator(() => "Collection description is required.")
     }, v => EnableCreateCollectionIfValid());
 }
Ejemplo n.º 6
0
 private void AssertValidatorSetNotEmpty(ValidatorSet validatorSet)
 {
     Assert.True(validatorSet.BlockHeight > 0);
     Assert.NotEmpty(validatorSet.Validators);
     Assert.All(validatorSet.Validators, v =>
     {
         Assert.NotEmpty(v.Address);
         Assert.NotEmpty(v.PubKey);
         Assert.True(v.VotingPower > 0);
     });
 }
Ejemplo n.º 7
0
        protected void Application_Start()
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);

            WJServer = ConfigurationManager.AppSettings["WJServer"];

            VS = new ValidatorSet();

            Thread clearThread = new Thread(ClearValidate);

            clearThread.Start();
        }
Ejemplo n.º 8
0
        public static async Task Run([PerperStreamTrigger(RunOnStartup = true)] PerperStreamContext context,
                                     CancellationToken cancellationToken)
        {
            var keys         = new List <(ECParameters, ValidatorKey)>();
            var validatorSet = new ValidatorSet();

            for (var i = 0; i < 1; i++)
            {
                using var dsa = ECDsa.Create(ECCurve.NamedCurves.nistP521);
                var privateKey = dsa.ExportParameters(true);
                var publicKey  = new ValidatorKey {
                    Key = dsa.ExportParameters(false)
                };
                keys.Add((privateKey, publicKey));
                validatorSet.Weights.Add(publicKey, 10);
            }

            var ipfsGateway = "http://127.0.0.1:5001";

            await using var _validatorSetsStream = await context.StreamFunctionAsync("TestDataGenerator", new
            {
                delay = TimeSpan.FromSeconds(20),
                data  = validatorSet
            });

            await using var validatorSetsStream = await context.StreamFunctionAsync(nameof (IpfsSaver), new
            {
                ipfsGateway,
                dataStream = _validatorSetsStream
            });

            await using var validatorLauncherStreams = new AsyncDisposableList();
            foreach (var(privateKey, self) in keys)
            {
                validatorLauncherStreams.Add(
                    await context.StreamActionAsync(nameof(ValidatorLauncher), new
                {
                    agentId  = "0",
                    services = new [] { "Sample", "IpfsInput" },
                    validatorSetsStream,
                    ipfsGateway,
                    privateKey,
                    self
                }));
            }

            await context.BindOutput(cancellationToken);
        }
Ejemplo n.º 9
0
    /// <summary>
    /// Adds validations to the input field.
    /// </summary>
    /// <param name="field"></param>
    /// <param name="validators"></param>
    /// <returns></returns>
    public static ValidatorSet ValidateInputField(InputField field, ICollection <Func <InputField, OneOf <Success, Error <string> > > > validators, Action <ValidatorSet> onValidationChanged)
    {
        var          defaultFieldColor = field.targetGraphic.color;
        ValidatorSet validatorSet      = new ValidatorSet();

        void Validate(string value)
        {
            var errors = validators.Select(v => v(field))
                         .Where(v => v.IsT1)
                         .Select(v => v.AsT1.Value)
                         .ToList();

            if (errors.Count > 0)
            {
                field.targetGraphic.color = Color.red;
            }
            else
            {
                field.targetGraphic.color = defaultFieldColor;
            }

            validatorSet.ValidationErrors = errors;
            onValidationChanged?.Invoke(validatorSet);
        }

        validatorSet.Unsubscribe = () => field.onValueChanged.RemoveListener(Validate);
        validatorSet.ClearErrors = () =>
        {
            validatorSet.ValidationErrors.Clear();
            field.targetGraphic.color = defaultFieldColor;
        };

        validatorSet.Validate = () => Validate(field.text);

        field.onValueChanged.AddListener(Validate);
        return(validatorSet);
    }