up
This commit is contained in:
44
Assets/BestHTTP/Caching/HTTPCacheFileLock.cs
Normal file
44
Assets/BestHTTP/Caching/HTTPCacheFileLock.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
#if !BESTHTTP_DISABLE_CACHING && (!UNITY_WEBGL || UNITY_EDITOR)
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace BestHTTP.Caching
|
||||
{
|
||||
sealed class HTTPCacheFileLock
|
||||
{
|
||||
private static Dictionary<Uri, object> FileLocks = new Dictionary<Uri, object>();
|
||||
private static object SyncRoot = new object();
|
||||
|
||||
internal static object Acquire(Uri uri)
|
||||
{
|
||||
lock (SyncRoot)
|
||||
{
|
||||
object fileLock;
|
||||
if (!FileLocks.TryGetValue(uri, out fileLock))
|
||||
FileLocks.Add(uri, fileLock = new object());
|
||||
|
||||
return fileLock;
|
||||
}
|
||||
}
|
||||
|
||||
internal static void Remove(Uri uri)
|
||||
{
|
||||
lock (SyncRoot)
|
||||
{
|
||||
if (FileLocks.ContainsKey(uri))
|
||||
FileLocks.Remove(uri);
|
||||
}
|
||||
}
|
||||
|
||||
internal static void Clear()
|
||||
{
|
||||
lock (SyncRoot)
|
||||
{
|
||||
FileLocks.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user