From dd9c3cfc3cb406e61cf64e1ada4aad5f7ab78c40 Mon Sep 17 00:00:00 2001 From: Lewis Zou Date: Fri, 16 Aug 2024 21:06:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=BE=E6=A0=87=E6=B8=B2?= =?UTF-8?q?=E6=9F=93=E7=BC=93=E5=AD=98=E6=9C=AA=E8=AE=BE=E7=BD=AE=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ZMap.Renderer.SkiaSharp/SkiaRenderer.cs | 10 +++++++ src/ZMap.Renderer.SkiaSharp/SymbolRenderer.cs | 27 ++++++++++++++++--- src/ZServer.Silo/OrleansExtensions.cs | 1 + 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/ZMap.Renderer.SkiaSharp/SkiaRenderer.cs b/src/ZMap.Renderer.SkiaSharp/SkiaRenderer.cs index b54f5a4..08a8c21 100644 --- a/src/ZMap.Renderer.SkiaSharp/SkiaRenderer.cs +++ b/src/ZMap.Renderer.SkiaSharp/SkiaRenderer.cs @@ -1,6 +1,8 @@ using System; +using Microsoft.Extensions.Logging; using NetTopologySuite.Geometries; using SkiaSharp; +using ZMap.Infrastructure; using ZMap.Renderer.SkiaSharp.Utilities; namespace ZMap.Renderer.SkiaSharp; @@ -9,6 +11,14 @@ public abstract class SkiaRenderer { protected abstract SKPaint CreatePaint(); + protected Lazy Logger { get; } + + protected SkiaRenderer() + { + var name = GetType().Name; + Logger = new Lazy(() => Log.CreateLogger(name)); + } + protected virtual SKPaint CreateDefaultPaint() { return new SKPaint diff --git a/src/ZMap.Renderer.SkiaSharp/SymbolRenderer.cs b/src/ZMap.Renderer.SkiaSharp/SymbolRenderer.cs index dc4f077..736e512 100644 --- a/src/ZMap.Renderer.SkiaSharp/SymbolRenderer.cs +++ b/src/ZMap.Renderer.SkiaSharp/SymbolRenderer.cs @@ -1,5 +1,7 @@ using System; using System.IO; +using Microsoft.Extensions.Caching.Memory; +using Microsoft.Extensions.Logging; using NetTopologySuite.Geometries; using SkiaSharp; using ZMap.Extensions; @@ -84,24 +86,43 @@ private SKBitmap GetImage() var uri = style.Uri.Value; if (string.IsNullOrEmpty(uri) || !Uri.TryCreate(uri, UriKind.Absolute, out var u)) { + Logger.Value.LogDebug("Invalid image uri: {Uri}", uri); image = DefaultImage; } else { - image = Cache.GetOrCreate($"SSI_{style.Uri.Value}", _ => + image = Cache.GetOrCreate($"SSI_{style.Uri.Value}", entry => { + SKBitmap i; switch (u.Scheme) { case "file": { var path = u.ToPath(); - return File.Exists(path) ? SKBitmap.Decode(path) : DefaultImage; + if (File.Exists(path)) + { + Logger.Value.LogDebug("Load image from file: {Path}", path); + i = SKBitmap.Decode(path); + } + else + { + Logger.Value.LogDebug("Image file not found: {Path}", path); + i = DefaultImage; + } + + break; } default: { - return DefaultImage; + Logger.Value.LogDebug("Unsupported image uri scheme: {Scheme}", u.Scheme); + i = DefaultImage; + break; } } + + entry.SetValue(i); + entry.SetAbsoluteExpiration(TimeSpan.FromMinutes(30)); + return i; }); } diff --git a/src/ZServer.Silo/OrleansExtensions.cs b/src/ZServer.Silo/OrleansExtensions.cs index 16dd063..77ae458 100644 --- a/src/ZServer.Silo/OrleansExtensions.cs +++ b/src/ZServer.Silo/OrleansExtensions.cs @@ -104,6 +104,7 @@ private static void ConfigureSilo(HostBuilderContext context, ISiloBuilder siloB { options.ConnectionString = connectString; options.Invariant = invariant; + }); siloBuilder.UseAdoNetReminderService(options => {