internal EdgeAgentConnection( IModuleClientProvider moduleClientProvider, ISerde <DeploymentConfig> desiredPropertiesSerDe, IRequestManager requestManager, IDeviceManager deviceManager, bool enableSubscriptions, TimeSpan refreshConfigFrequency, RetryStrategy retryStrategy, IDeploymentMetrics deploymentMetrics, Option <X509Certificate2> manifestTrustBundle, TimeSpan twinPullOnConnectThrottleTime) { this.desiredPropertiesSerDe = Preconditions.CheckNotNull(desiredPropertiesSerDe, nameof(desiredPropertiesSerDe)); this.deploymentConfigInfo = Option.None <DeploymentConfigInfo>(); this.reportedProperties = Option.None <TwinCollection>(); this.moduleConnection = new ModuleConnection(moduleClientProvider, requestManager, this.OnConnectionStatusChanged, this.OnDesiredPropertiesUpdated, enableSubscriptions); this.retryStrategy = Preconditions.CheckNotNull(retryStrategy, nameof(retryStrategy)); this.refreshTwinTask = new PeriodicTask(this.ForceRefreshTwin, refreshConfigFrequency, refreshConfigFrequency, Events.Log, "refresh twin config"); this.pullOnReconnect = enableSubscriptions; this.deviceManager = Preconditions.CheckNotNull(deviceManager, nameof(deviceManager)); Events.TwinRefreshInit(refreshConfigFrequency); this.deploymentMetrics = Preconditions.CheckNotNull(deploymentMetrics, nameof(deploymentMetrics)); this.initTask = this.ForceRefreshTwin(); this.manifestTrustBundle = manifestTrustBundle; this.twinPullOnConnectThrottleTime = twinPullOnConnectThrottleTime; }
public Agent( IConfigSource configSource, IEnvironmentProvider environmentProvider, IPlanner planner, IPlanRunner planRunner, IReporter reporter, IModuleIdentityLifecycleManager moduleIdentityLifecycleManager, IEntityStore <string, string> configStore, DeploymentConfigInfo initialDeployedConfigInfo, ISerde <DeploymentConfigInfo> deploymentConfigInfoSerde, IEncryptionProvider encryptionProvider, IDeploymentMetrics deploymentMetrics) { this.configSource = Preconditions.CheckNotNull(configSource, nameof(configSource)); this.planner = Preconditions.CheckNotNull(planner, nameof(planner)); this.planRunner = Preconditions.CheckNotNull(planRunner, nameof(planRunner)); this.reporter = Preconditions.CheckNotNull(reporter, nameof(reporter)); this.moduleIdentityLifecycleManager = Preconditions.CheckNotNull(moduleIdentityLifecycleManager, nameof(moduleIdentityLifecycleManager)); this.configStore = Preconditions.CheckNotNull(configStore, nameof(configStore)); this.environmentProvider = Preconditions.CheckNotNull(environmentProvider, nameof(environmentProvider)); this.currentConfig = Preconditions.CheckNotNull(initialDeployedConfigInfo); this.deploymentConfigInfoSerde = Preconditions.CheckNotNull(deploymentConfigInfoSerde, nameof(deploymentConfigInfoSerde)); this.environment = this.environmentProvider.Create(this.currentConfig.DeploymentConfig); this.encryptionProvider = Preconditions.CheckNotNull(encryptionProvider, nameof(encryptionProvider)); this.deploymentMetrics = Preconditions.CheckNotNull(deploymentMetrics, nameof(deploymentMetrics)); this.status = DeploymentStatus.Unknown; Events.AgentCreated(); }
public EdgeAgentConnection( IModuleClientProvider moduleClientProvider, ISerde <DeploymentConfig> desiredPropertiesSerDe, IRequestManager requestManager, IDeviceManager deviceManager, IDeploymentMetrics deploymentMetrics) : this(moduleClientProvider, desiredPropertiesSerDe, requestManager, deviceManager, true, DefaultConfigRefreshFrequency, TransientRetryStrategy, deploymentMetrics) { }
public EdgeAgentConnection( IModuleClientProvider moduleClientProvider, ISerde <DeploymentConfig> desiredPropertiesSerDe, IRequestManager requestManager, IDeviceManager deviceManager, IDeploymentMetrics deploymentMetrics, Option <X509Certificate2> manifestTrustBundle) : this(moduleClientProvider, desiredPropertiesSerDe, requestManager, deviceManager, true, DefaultConfigRefreshFrequency, TransientRetryStrategy, deploymentMetrics, manifestTrustBundle, DefaultTwinPullOnConnectThrottleTime) { }
public EdgeAgentConnection( IModuleClientProvider moduleClientProvider, ISerde <DeploymentConfig> desiredPropertiesSerDe, IRequestManager requestManager, IDeviceManager deviceManager, bool enableSubscriptions, TimeSpan configRefreshFrequency, IDeploymentMetrics deploymentMetrics) : this(moduleClientProvider, desiredPropertiesSerDe, requestManager, deviceManager, enableSubscriptions, configRefreshFrequency, TransientRetryStrategy, deploymentMetrics) { }
public static async Task <Agent> Create( IConfigSource configSource, IPlanner planner, IPlanRunner planRunner, IReporter reporter, IModuleIdentityLifecycleManager moduleIdentityLifecycleManager, IEnvironmentProvider environmentProvider, IEntityStore <string, string> configStore, ISerde <DeploymentConfigInfo> deploymentConfigInfoSerde, IEncryptionProvider encryptionProvider, IDeploymentMetrics deploymentMetrics) { Preconditions.CheckNotNull(deploymentConfigInfoSerde, nameof(deploymentConfigInfoSerde)); Preconditions.CheckNotNull(configStore, nameof(configStore)); Option <DeploymentConfigInfo> deploymentConfigInfo = Option.None <DeploymentConfigInfo>(); try { Option <string> deploymentConfigInfoJson = await Preconditions.CheckNotNull(configStore, nameof(configStore)).Get(StoreConfigKey); await deploymentConfigInfoJson.ForEachAsync( async json => { string decryptedJson = await encryptionProvider.DecryptAsync(json); deploymentConfigInfo = Option.Some(deploymentConfigInfoSerde.Deserialize(decryptedJson)); }); } catch (Exception ex) when(!ex.IsFatal()) { Events.ErrorDeserializingConfig(ex); } var agent = new Agent( configSource, environmentProvider, planner, planRunner, reporter, moduleIdentityLifecycleManager, configStore, deploymentConfigInfo.GetOrElse(DeploymentConfigInfo.Empty), deploymentConfigInfoSerde, encryptionProvider, deploymentMetrics); return(agent); }