/// <summary> /// Adds a custom agent service provisioned with custom <see cref="ProvisioningConfiguration"/> /// </summary> /// <returns>The agent.</returns> /// <param name="builder">Builder.</param> /// <param name="createConfiguration">Create configuration.</param> /// <typeparam name="TAgent">The 1st type parameter.</typeparam> /// <typeparam name="TConfiguration">The 2nd type parameter.</typeparam> public static AgentBuilder AddAgent <TAgent, TConfiguration>(this AgentBuilder builder, Func <TConfiguration> createConfiguration) where TAgent : class, IAgent where TConfiguration : ProvisioningConfiguration { var configuration = createConfiguration.Invoke(); builder.Services.Configure <WalletOptions>(obj => { obj.WalletConfiguration = configuration.WalletConfiguration; obj.WalletCredentials = configuration.WalletCredentials; }); builder.Services.Configure <PoolOptions>(obj => { obj.PoolName = configuration.PoolName; obj.GenesisFilename = configuration.GenesisFilename; }); builder.Services.AddSingleton <IAgent, TAgent>(); builder.Services.AddSingleton <IHostedService>(s => new AgentHostedService( configuration, s.GetRequiredService <IProvisioningService>(), s.GetRequiredService <IPoolService>(), s.GetRequiredService <IOptions <PoolOptions> >())); return(builder); }
/// <summary> /// Adds a custom agent service provisioned with <see cref="IssuerProvisioningConfiguration"/> /// </summary> /// <returns>The issuer agent.</returns> /// <param name="builder">Builder.</param> /// <param name="config">Config.</param> /// <typeparam name="T">The 1st type parameter.</typeparam> public static AgentBuilder AddIssuerAgent <T>(this AgentBuilder builder, Action <IssuerProvisioningConfiguration> config) where T : class, IAgent { var configuration = new IssuerProvisioningConfiguration(); config?.Invoke(configuration); return(AddAgent <T, IssuerProvisioningConfiguration>(builder, () => configuration)); }
/// <summary> /// Adds a <see cref="DefaultAgent"/> service provisioned with <see cref="IssuerProvisioningConfiguration"/> /// </summary> /// <returns>The issuer agent.</returns> /// <param name="builder">Builder.</param> /// <param name="config">Config.</param> public static AgentBuilder AddIssuerAgent(this AgentBuilder builder, Action <IssuerProvisioningConfiguration> config) { return(AddIssuerAgent <DefaultAgent>(builder, config)); }