Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        public CoreData(IdService environment, IDeltaServiceProvider deltaServiceProvider, HubConnectionService hubConnectionService)
        {
            _idService            = environment;
            _hubConnectionService = hubConnectionService;
            _manager              = Build(deltaServiceProvider);
            _manager.RootChanged += OnRootChanged;

            _syncContext = SynchronizationContext.Current;
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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()));
        }