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); } } } }); }
private void OnDestroy() { NameValidator?.Unsubscribe(); NameValidator = null; DescriptionValidator?.Unsubscribe(); DescriptionValidator = null; }
public void AddValidatorSet(ValidatorSet validatorSet) { if (validatorSets == null) { validatorSets = new List <ValidatorSet>(); } validatorSets.Add(validatorSet); }
public Entities.ExecResult IsValid() { ValidatorSet tValidatorSet = new ValidatorSet(); foreach (var item in this.ValidatorDict) { tValidatorSet.IValidators.AddRange(item.Value.IValidators); } return(tValidatorSet.IsValid()); }
// 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()); }
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); }); }
protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); WJServer = ConfigurationManager.AppSettings["WJServer"]; VS = new ValidatorSet(); Thread clearThread = new Thread(ClearValidate); clearThread.Start(); }
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); }
/// <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); }