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);
        }
Beispiel #2
0
        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>();
 }