mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2026-01-27 02:44:21 +01:00
Unified cache implementations
This commit is contained in:
parent
3dc3db1d79
commit
8cb20f0544
|
|
@ -21,6 +21,21 @@ namespace MapControl.Caching
|
|||
|
||||
private readonly FileDb fileDb = new FileDb() { AutoFlush = true };
|
||||
|
||||
public FileDbCache(string path)
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentException("The path argument must not be null or empty.", nameof(path));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(Path.GetExtension(path)))
|
||||
{
|
||||
path = Path.Combine(path, "TileCache.fdb");
|
||||
}
|
||||
|
||||
Open(path);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
fileDb.Dispose();
|
||||
|
|
|
|||
|
|
@ -3,31 +3,14 @@
|
|||
// Licensed under the Microsoft Public License (Ms-PL)
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using System.Threading.Tasks;
|
||||
using Windows.Storage;
|
||||
using Windows.Storage.Streams;
|
||||
|
||||
namespace MapControl.Caching
|
||||
{
|
||||
public partial class FileDbCache : IImageCache
|
||||
{
|
||||
public FileDbCache(StorageFolder folder, string fileName = "TileCache.fdb")
|
||||
{
|
||||
if (folder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(folder));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(fileName))
|
||||
{
|
||||
throw new ArgumentException("The fileName argument must not be null or empty", nameof(fileName));
|
||||
}
|
||||
|
||||
Open(Path.Combine(folder.Path, fileName));
|
||||
}
|
||||
|
||||
public Task<ImageCacheItem> GetAsync(string key)
|
||||
{
|
||||
return Task.Run(() =>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.Caching;
|
||||
|
||||
|
|
@ -13,21 +12,6 @@ namespace MapControl.Caching
|
|||
{
|
||||
public partial class FileDbCache : ObjectCache
|
||||
{
|
||||
public FileDbCache(string path)
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentException("The path argument must not be null or empty.", nameof(path));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(Path.GetExtension(path)))
|
||||
{
|
||||
path = Path.Combine(path, "TileCache.fdb");
|
||||
}
|
||||
|
||||
Open(path);
|
||||
}
|
||||
|
||||
public override string Name
|
||||
{
|
||||
get { return string.Empty; }
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ using System.IO;
|
|||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Windows.Storage;
|
||||
using Windows.Storage.Streams;
|
||||
|
||||
namespace MapControl.Caching
|
||||
|
|
@ -19,11 +18,6 @@ namespace MapControl.Caching
|
|||
|
||||
private readonly string rootDirectory;
|
||||
|
||||
public ImageFileCache(StorageFolder folder)
|
||||
: this(folder.Path)
|
||||
{
|
||||
}
|
||||
|
||||
public ImageFileCache(string directory)
|
||||
{
|
||||
if (string.IsNullOrEmpty(directory))
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
using System;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using System.Threading.Tasks;
|
||||
using Windows.Storage;
|
||||
#if WINDOWS_UWP
|
||||
using Windows.UI.Core;
|
||||
using Windows.UI.Xaml.Media;
|
||||
|
|
@ -19,12 +18,12 @@ namespace MapControl
|
|||
public partial class TileImageLoader
|
||||
{
|
||||
/// <summary>
|
||||
/// Default StorageFolder where an IImageCache instance may save cached data,
|
||||
/// i.e. ApplicationData.Current.TemporaryFolder.
|
||||
/// Default folder path where an IImageCache instance may save cached data,
|
||||
/// i.e. Windows.Storage.ApplicationData.Current.TemporaryFolder.Path.
|
||||
/// </summary>
|
||||
public static StorageFolder DefaultCacheFolder
|
||||
public static string DefaultCacheFolder
|
||||
{
|
||||
get { return ApplicationData.Current.TemporaryFolder; }
|
||||
get { return Windows.Storage.ApplicationData.Current.TemporaryFolder.Path; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
using System;
|
||||
using System.Data.SQLite;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
|
||||
namespace MapControl.Caching
|
||||
{
|
||||
|
|
@ -15,6 +16,23 @@ namespace MapControl.Caching
|
|||
{
|
||||
private readonly SQLiteConnection connection;
|
||||
|
||||
public SQLiteCache(string path)
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentException("The path argument must not be null or empty.", nameof(path));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(Path.GetExtension(path)))
|
||||
{
|
||||
path = Path.Combine(path, "TileCache.sqlite");
|
||||
}
|
||||
|
||||
connection = Open(Path.GetFullPath(path));
|
||||
|
||||
Clean();
|
||||
}
|
||||
|
||||
private static SQLiteConnection Open(string path)
|
||||
{
|
||||
var connection = new SQLiteConnection("Data Source=" + path);
|
||||
|
|
|
|||
|
|
@ -4,36 +4,14 @@
|
|||
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using System.Threading.Tasks;
|
||||
using Windows.Storage;
|
||||
using Windows.Storage.Streams;
|
||||
|
||||
namespace MapControl.Caching
|
||||
{
|
||||
/// <summary>
|
||||
/// IImageCache implementation based on SqLite.
|
||||
/// </summary>
|
||||
public partial class SQLiteCache : IImageCache
|
||||
{
|
||||
public SQLiteCache(StorageFolder folder, string fileName = "TileCache.sqlite")
|
||||
{
|
||||
if (folder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(folder));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(fileName))
|
||||
{
|
||||
throw new ArgumentException("The fileName argument must not be null or empty.", nameof(fileName));
|
||||
}
|
||||
|
||||
connection = Open(Path.Combine(folder.Path, fileName));
|
||||
|
||||
Clean();
|
||||
}
|
||||
|
||||
public async Task<ImageCacheItem> GetAsync(string key)
|
||||
{
|
||||
try
|
||||
|
|
|
|||
|
|
@ -6,34 +6,13 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Data.SQLite;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.Caching;
|
||||
|
||||
namespace MapControl.Caching
|
||||
{
|
||||
/// <summary>
|
||||
/// ObjectCache implementation based on SqLite.
|
||||
/// </summary>
|
||||
public partial class SQLiteCache : ObjectCache
|
||||
{
|
||||
public SQLiteCache(string path)
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentException("The path argument must not be null or empty.", nameof(path));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(Path.GetExtension(path)))
|
||||
{
|
||||
path = Path.Combine(path, "TileCache.sqlite");
|
||||
}
|
||||
|
||||
connection = Open(Path.GetFullPath(path));
|
||||
|
||||
Clean();
|
||||
}
|
||||
|
||||
public override string Name
|
||||
{
|
||||
get { return string.Empty; }
|
||||
|
|
|
|||
Loading…
Reference in a new issue