/// <summary> /// Bearbeitet neue Daten vom Aufzeichnungsprozess. Dieser Aufruf erfolgt immer, /// wenn neue Informationen vorliegen und zusätzlich einmal unmittelbar nach /// dem Beenden durch <see cref="OnStop"/>. /// </summary> /// <param name="state">Die neuen Daten.</param> protected override void OnNewStateAvailable(ServerInformation state) { // Scan results var newFiles = new List <FileInformation>(); var totalSize = default(long); // Process all files lock (m_recordings) { // Collect files foreach (var stream in state.Streams ?? Enumerable.Empty <StreamInformation>()) { foreach (var file in stream.AllFiles ?? Enumerable.Empty <FileStreamInformation>()) { // If we do not know this file remember for extension processing var info = FileInformation.Create(file, stream.UniqueIdentifier); if (m_files.Add(info)) { newFiles.Add(info); } } } // Count up the total sum if (m_files.Count > 0) { totalSize = m_files.Sum(file => file.FileSize.GetValueOrDefault(0)); } } // Total file size Representative.TotalSize = (uint)(totalSize / 1024); // No new files if (newFiles.Count < 1) { return; } // Report Tools.ExtendedLogging("Found {0} new Recording File(s) on {1}", newFiles.Count, ProfileName); // Time to clone the environment var environment = new Dictionary <string, string>(ExtensionEnvironment); // Fill environment AddFilesToEnvironment(environment, "Planned", newFiles); // Fire up extensions FireRecordingStartedExtensions(environment); }