Exemple #1
0
        /// <summary>
        /// Creates aList of <see cref="ITableEntry"/> out of the <see cref="ITableEntriesSnapshotFactory"/> by getting the latest <see cref="ITableEntriesSnapshot"/>.
        /// </summary>
        /// <param name="factory">The <see cref="ITableEntriesSnapshotFactory"/>.</param>
        /// <returns>The created <see cref="List{ITableEntry}"/>.</returns>
        private static List <ITableEntry> CreateTabelEntriesFromSnapshot(ITableEntriesSnapshotFactory factory)
        {
            var snapshot = factory.GetCurrentSnapshot();
            var entries  = new List <ITableEntry>();

            for (var i = 0; i < snapshot.Count; i++)
            {
                entries.Add(new SnapshotEntryWrapper(snapshot, i));
            }

            return(entries);
        }
        /// <summary>
        /// This is called by the project error manager to remove the  error list factory from
        /// out list and all sinks
        /// </summary>
        public void RemoveListFactory(ITableEntriesSnapshotFactory factory)
        {
            lock (_managers)
            {
                _errorListFactories.Remove(factory);

                foreach (var manager in _managers)
                {
                    manager.RemoveListFactory(factory);
                }
            }
        }
        /// <summary>
        /// This is called by the project error manager to add its error list factory
        /// </summary>
        public void AddListFactory(ITableEntriesSnapshotFactory factory)
        {
            lock (_managers)
            {
                _errorListFactories.Add(factory);

                // Tell the preexisting sinks about the new error source
                foreach (var manager in _managers)
                {
                    manager.AddListFactory(factory);
                }
            }
        }
Exemple #4
0
        /// <inheritdoc />
        public void AddFactory(ITableEntriesSnapshotFactory newFactory, bool removeAllFactories = false)
        {
            if (removeAllFactories)
            {
                _knownDiagnostics.Clear();
            }

            if (_knownDiagnostics.ContainsKey(newFactory))
            {
                return;
            }

            _knownDiagnostics.Add(newFactory, new List <DiagnosticInfo>());
        }
Exemple #5
0
        /// <inheritdoc />
        public void FactorySnapshotChanged(ITableEntriesSnapshotFactory factory)
        {
            List <ITableEntry> entries = CreateTabelEntriesFromSnapshot(factory);

            if (!_knownDiagnostics.ContainsKey(factory))
            {
                AddFactory(factory);
            }

            var diagnostics             = entries.Select(x => x.ToDiagnosticInfo());
            var knownFactoryDiagnostics = _knownDiagnostics.FirstOrDefault(x => x.Key == factory).Value ?? new List <DiagnosticInfo>();

            MergeDiagnostics(knownFactoryDiagnostics, diagnostics);

            RaiseDiagnosticsChanged();
        }
Exemple #6
0
 public void Remove(ITableEntriesSnapshotFactory factory)
 {
     _sink.RemoveFactory(factory);
 }
Exemple #7
0
 /// <inheritdoc />
 public void ReplaceFactory(ITableEntriesSnapshotFactory oldFactory, ITableEntriesSnapshotFactory newFactory)
 {
     return;
 }
Exemple #8
0
 /// <summary>
 /// If a project is removed from the solution (unloaded, closed, etc) informans the sink
 /// that the source is no longer available.
 /// </summary>
 public void RemoveErrorListFactory(ITableEntriesSnapshotFactory factory)
 {
     ErrorTableSink.RemoveFactory(factory);
 }
Exemple #9
0
 /// <summary>
 /// Called when a snapshot changes to have its errors updated by the subscriber. Pass null to have
 /// all the factories updated.
 /// </summary>
 public void UpdateSink(ITableEntriesSnapshotFactory factory)
 {
     ErrorTableSink.FactorySnapshotChanged(factory);
 }
 internal void UpdateSink(ITableEntriesSnapshotFactory factory)
 {
     _sink.FactorySnapshotChanged(factory);
 }
Exemple #11
0
 /// <summary>
 /// This is called if a new project is added after there is already a sink connected. Informs the sink
 /// of the new source of errors
 /// </summary>
 public void AddErrorListFactory(ITableEntriesSnapshotFactory factory)
 {
     ErrorTableSink.AddFactory(factory);
 }
 internal void RemoveFactory(ITableEntriesSnapshotFactory factory)
 {
     _sink.RemoveFactory(factory);
 }
 internal void AddFactory(ITableEntriesSnapshotFactory factory)
 {
     _sink.AddFactory(factory);
 }
 /// <inheritdoc />
 public void FactorySnapshotChanged(ITableEntriesSnapshotFactory factory)
 {
     throw new System.NotImplementedException();
 }
 /// <inheritdoc />
 public void RemoveFactory(ITableEntriesSnapshotFactory oldFactory)
 {
     SnapshotFactories.Remove(oldFactory);
 }
 private static void CheckFactoryWasRemoved(Mock <ITableDataSink> mockSink, ITableEntriesSnapshotFactory expectedFactory) =>
 mockSink.Verify(x => x.RemoveFactory(expectedFactory), Times.Once);