public DeltaModelManager(Dictionary <Type, TypeConfiguration> configurations, IDeltaServiceProvider deltaServiceProvider, ILockerProvider lockerProvider) { _configurations = configurations; DeltaServiceProvider = deltaServiceProvider; _lockerProvider = lockerProvider; foreach (var type in configurations.Values) { if (!type.IsExternalType) { if (type.ValueType != null) { type.Creator = (parent, property) => { var t = typeof(DeltaModelDictionary <,>).MakeGenericType(type.KeyType.Type, type.ValueType.Type); return(Activator.CreateInstance(t, parent, property, this, type)); }; } else { type.Creator = (parent, property) => Create(type.Type, parent, property); } } } Subscriptions = new SubscriptionManager(this); }
public CoreData(IdService environment, IDeltaServiceProvider deltaServiceProvider, HubConnectionService hubConnectionService) { _idService = environment; _hubConnectionService = hubConnectionService; _manager = Build(deltaServiceProvider); _manager.RootChanged += OnRootChanged; _syncContext = SynchronizationContext.Current; }
public DeltaModelManager <T> Build <T>(IDeltaServiceProvider deltaServiceProvider = null, ILockerProvider locker = null) { BuildModel(typeof(T)); if (locker == null) { locker = new MultiThreadLockerProvider(); } var manager = new DeltaModelManager <T>(_configurations, deltaServiceProvider, locker); locker.SetManager(manager); return(manager); }
private DeltaModelManager <IRoot> Build(IDeltaServiceProvider deltaServiceProvider) { var builder = new DeltaModelBuilder(); builder.Config <IChannel>(c => { c.HasLocal((s, m, p) => new ChannelModel(s, p.Get <IAppEnvironment>(), p.Get <CoreData>(), p.Get <MainTargetsModel>())); }); //builder.Config<IVideoInput>(c => //{ // c.HasLocal((s, m, p) => new LocalVideoInputModel(s, this, p.Get<MainSourcesModel>(), p.Get<LocalSettingsService>())); //}); //builder.Config<IAudioInput>(c => //{ // c.HasLocal((s, m, p) => new LocalAudioInputModel(s, this, p.Get<MainSourcesModel>())); //}); builder.Config <ISettings>(c => { c.Property(s => s.SelectedVideo).DontCompareBeforeSet(); c.Property(s => s.SelectedAudio).DontCompareBeforeSet(); }); builder.Config <IIndicatorCpu>(c => { c.Property(s => s.Load).DontCompareBeforeSet(); }); builder.Config <IIndicatorCloudIn>(c => { c.Property(s => s.Bitrate).DontCompareBeforeSet(); }); builder.Config <IIndicatorCloudOut>(c => { c.Property(s => s.Bitrate).DontCompareBeforeSet(); }); builder.Config <IIndicatorEncoder>(c => c.Property(s => s.Data).DontCompareBeforeSet()); builder.Config <IIndicatorVpn>(c => { c.Property(s => s.Sent).DontCompareBeforeSet(); }); builder.Config <IIndicatorVpn>(c => { c.Property(s => s.Received).DontCompareBeforeSet(); }); return(builder.Build <IRoot>(deltaServiceProvider, new SingleThreadLockerProvider())); }