public static ITwinManager Create( IConnectionManager connectionManager, IMessageConverterProvider messageConverterProvider, IEntityStore <string, TwinStoreEntity> entityStore, IDeviceConnectivityManager deviceConnectivityManager, IValidator <TwinCollection> reportedPropertiesValidator, Option <TimeSpan> minTwinSyncPeriod, Option <TimeSpan> reportedPropertiesSyncFrequency) { Preconditions.CheckNotNull(connectionManager, nameof(connectionManager)); Preconditions.CheckNotNull(messageConverterProvider, nameof(messageConverterProvider)); Preconditions.CheckNotNull(entityStore, nameof(entityStore)); Preconditions.CheckNotNull(deviceConnectivityManager, nameof(deviceConnectivityManager)); Preconditions.CheckNotNull(reportedPropertiesValidator, nameof(reportedPropertiesValidator)); IMessageConverter <TwinCollection> twinCollectionConverter = messageConverterProvider.Get <TwinCollection>(); IMessageConverter <Twin> twinConverter = messageConverterProvider.Get <Twin>(); ICloudSync cloudSync = new CloudSync(connectionManager, twinCollectionConverter, twinConverter); var twinManager = new StoringTwinManager( connectionManager, twinCollectionConverter, twinConverter, reportedPropertiesValidator, new TwinStore(entityStore), new ReportedPropertiesStore(entityStore, cloudSync, reportedPropertiesSyncFrequency), cloudSync, deviceConnectivityManager, minTwinSyncPeriod.GetOrElse(DefaultMinTwinSyncPeriod)); return(twinManager); }
public static ITwinManager CreateTwinManager( IConnectionManager connectionManager, IMessageConverterProvider messageConverterProvider, Option <IStoreProvider> storeProvider) { Preconditions.CheckNotNull(connectionManager, nameof(connectionManager)); Preconditions.CheckNotNull(messageConverterProvider, nameof(messageConverterProvider)); Preconditions.CheckNotNull(storeProvider, nameof(storeProvider)); var twinManager = new TwinManager( connectionManager, messageConverterProvider.Get <TwinCollection>(), messageConverterProvider.Get <Shared.Twin>(), storeProvider.Match( s => Option.Some(s.GetEntityStore <string, TwinInfo>(Constants.TwinStorePartitionKey)), () => Option.None <IEntityStore <string, TwinInfo> >())); connectionManager.CloudConnectionEstablished += twinManager.ConnectionEstablishedCallback; return(twinManager); }
public PassThroughTwinManager(IConnectionManager connectionManager, IMessageConverterProvider messageConverterProvider) { Preconditions.CheckNotNull(messageConverterProvider, nameof(messageConverterProvider)); this.connectionManager = Preconditions.CheckNotNull(connectionManager, nameof(connectionManager)); this.twinConverter = messageConverterProvider.Get <Twin>(); }