From c4a4887a81af03578d9db98b3c2b8f2b9a6c9d86 Mon Sep 17 00:00:00 2001 From: feyris-tan <4116042+feyris-tan@users.noreply.github.com> Date: Sat, 21 Jun 2025 13:34:31 +0200 Subject: [PATCH] Memory optimized the FLUTE --- skyscraper8/DvbNip/DvbNipReceiver.cs | 23 ++++++++----------- skyscraper8/Ietf/FLUTE/FluteListener.cs | 4 ++-- .../Skyscraper/Scraper/SkyscraperContext.cs | 14 +++++++---- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/skyscraper8/DvbNip/DvbNipReceiver.cs b/skyscraper8/DvbNip/DvbNipReceiver.cs index 42b1592..17bd068 100644 --- a/skyscraper8/DvbNip/DvbNipReceiver.cs +++ b/skyscraper8/DvbNip/DvbNipReceiver.cs @@ -142,27 +142,24 @@ namespace skyscraper8.DvbNip private void TryPruneCache() { - - /* DateTime now = DateTime.Now; - List staleListeners = flutes.Where(x => x.LastTouched != DateTime.MinValue) - .Where(x => x.FileAssociation != null) - .Where(x => (now - x.LastTouched).TotalMinutes >= 1.0) - .Where(x => DvbNipUtilities.IsContinuousFileType(x.FileAssociation)) + List, FluteListener>> staleListeners = flutes.Where(x => x.Value.LastTouched != DateTime.MinValue) + .Where(x => x.Value.FileAssociation != null) + .Where(x => (now - x.Value.LastTouched).TotalMinutes >= 1.0) + .Where(x => DvbNipUtilities.IsContinuousFileType(x.Value.FileAssociation)) .ToList(); if (staleListeners.Count > 0) { int prevItems = flutes.Count; - foreach (FluteListener staleListener in staleListeners) + foreach (KeyValuePair, FluteListener> staleListener in + staleListeners) { - staleListener.Disabled = true; - flutes.Remove(staleListener); + staleListener.Value.Disabled = true; + flutes.Remove(staleListener.Key); } - int nowItems = flutes.Count; - - logger.DebugFormat(String.Format("Removed {0} stale segments from FLUTE cache. Cache slimmed from {1} to {2} items.", staleListeners.Count,prevItems,nowItems)); - }*/ + logger.DebugFormat(String.Format("Removed {0} stale segments from FLUTE cache. Cache slimmed from {1} to {2} items.", staleListeners.Count, prevItems, nowItems)); + } } private bool SetFileAssociations(FluteListener sourceListener, FDTInstanceType fdtAnnouncement) diff --git a/skyscraper8/Ietf/FLUTE/FluteListener.cs b/skyscraper8/Ietf/FLUTE/FluteListener.cs index 38f1dce..2f1fbb3 100644 --- a/skyscraper8/Ietf/FLUTE/FluteListener.cs +++ b/skyscraper8/Ietf/FLUTE/FluteListener.cs @@ -38,9 +38,9 @@ namespace skyscraper8.Ietf.FLUTE } if (FileAssociation != null) { - return String.Format("IP={0}, Port={1}, TSI={2}, TOI={3}, Filename={4}", DestinationAddress, DestinationPort, DestinationTsi, DestinationToi, FileAssociation.ContentLocation); + return String.Format("Filename={4}", DestinationAddress, DestinationPort, DestinationTsi, DestinationToi, FileAssociation.ContentLocation); } - return String.Format("IP={0}, Port={1}, TSI={2}, TOI={3}", DestinationAddress, DestinationPort, DestinationTsi, DestinationToi); + return String.Format("???"); } internal void PushPacket(LctFrame lctFrame) diff --git a/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs b/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs index 0d2c00b..7497e4d 100644 --- a/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs +++ b/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs @@ -2476,11 +2476,15 @@ namespace skyscraper5.Skyscraper.Scraper { if (filetype != null) { - string extension = Path.GetExtension(filetype.ContentLocation).ToLowerInvariant(); - if (!DvbNipUtilities.IsContinuousFileType(extension)) - { - LogEvent(SkyscraperContextEvent.FluteFileProgress, String.Format("Filename={0}, {1}%", filetype.ContentLocation, progress)); - } + if (!filetype.ContentLocation.Equals("urn:dvb:metadata:cs:NativeIPMulticastTransportObjectTypeCS:2023:bootstrap")) + { + string extension = Path.GetExtension(filetype.ContentLocation).ToLowerInvariant(); + if (!DvbNipUtilities.IsContinuousFileType(extension)) + { + LogEvent(SkyscraperContextEvent.FluteFileProgress, + String.Format("Filename={0}, {1}%", filetype.ContentLocation, progress)); + } + } } } }