/// <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); } } }
/// <inheritdoc /> public void AddFactory(ITableEntriesSnapshotFactory newFactory, bool removeAllFactories = false) { if (removeAllFactories) { _knownDiagnostics.Clear(); } if (_knownDiagnostics.ContainsKey(newFactory)) { return; } _knownDiagnostics.Add(newFactory, new List <DiagnosticInfo>()); }
/// <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(); }
public void Remove(ITableEntriesSnapshotFactory factory) { _sink.RemoveFactory(factory); }
/// <inheritdoc /> public void ReplaceFactory(ITableEntriesSnapshotFactory oldFactory, ITableEntriesSnapshotFactory newFactory) { return; }
/// <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); }
/// <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); }
/// <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);