826 lines
26 KiB
C#
826 lines
26 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Threading;
|
|
using BestHTTP.Logger;
|
|
using BestHTTP.PlatformSupport.FileSystem;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.Caching
|
|
{
|
|
// Token: 0x02001FC5 RID: 8133
|
|
[Token(Token = "0x2001FC5")]
|
|
public static class HTTPCacheService
|
|
{
|
|
// Token: 0x170020E1 RID: 8417
|
|
// (get) Token: 0x0600CE75 RID: 52853 RVA: 0x002F8328 File Offset: 0x002F6528
|
|
[Token(Token = "0x170020E1")]
|
|
public static bool IsSupported
|
|
{
|
|
[Token(Token = "0x600CE75")]
|
|
[Address(RVA = "0xAA91B0", Offset = "0xAA7FB0", VA = "0x180AA91B0")]
|
|
get
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
IIOService ioservice = HTTPManager.IOService;
|
|
string rootCacheFolder = HTTPManager.GetRootCacheFolder();
|
|
ILogger logger = HTTPManager.Logger;
|
|
}
|
|
while (num != 0);
|
|
return HTTPCacheService.isSupported;
|
|
}
|
|
}
|
|
|
|
// Token: 0x170020E2 RID: 8418
|
|
// (get) Token: 0x0600CE76 RID: 52854 RVA: 0x002F836C File Offset: 0x002F656C
|
|
[Token(Token = "0x170020E2")]
|
|
private static Dictionary<Uri, HTTPCacheFileInfo> Library
|
|
{
|
|
[Token(Token = "0x600CE76")]
|
|
[Address(RVA = "0xAA9500", Offset = "0xAA8300", VA = "0x180AA9500")]
|
|
get
|
|
{
|
|
HTTPCacheService.LoadLibrary();
|
|
return HTTPCacheService.library;
|
|
}
|
|
}
|
|
|
|
// Token: 0x170020E3 RID: 8419
|
|
// (get) Token: 0x0600CE77 RID: 52855 RVA: 0x002F8388 File Offset: 0x002F6588
|
|
// (set) Token: 0x0600CE78 RID: 52856 RVA: 0x002F839C File Offset: 0x002F659C
|
|
[Token(Token = "0x170020E3")]
|
|
internal static string CacheFolder
|
|
{
|
|
[Token(Token = "0x600CE77")]
|
|
[Address(RVA = "0xAA90F0", Offset = "0xAA7EF0", VA = "0x180AA90F0")]
|
|
get;
|
|
[Token(Token = "0x600CE78")]
|
|
[Address(RVA = "0xAA9560", Offset = "0xAA8360", VA = "0x180AA9560")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x170020E4 RID: 8420
|
|
// (get) Token: 0x0600CE79 RID: 52857 RVA: 0x002F83B0 File Offset: 0x002F65B0
|
|
// (set) Token: 0x0600CE7A RID: 52858 RVA: 0x002F83C4 File Offset: 0x002F65C4
|
|
[Token(Token = "0x170020E4")]
|
|
private static string LibraryPath
|
|
{
|
|
[Token(Token = "0x600CE79")]
|
|
[Address(RVA = "0xAA9440", Offset = "0xAA8240", VA = "0x180AA9440")]
|
|
get;
|
|
[Token(Token = "0x600CE7A")]
|
|
[Address(RVA = "0xAA95C0", Offset = "0xAA83C0", VA = "0x180AA95C0")]
|
|
set;
|
|
}
|
|
|
|
// Token: 0x0600CE7C RID: 52860 RVA: 0x002F83F0 File Offset: 0x002F65F0
|
|
[Token(Token = "0x600CE7C")]
|
|
[Address(RVA = "0xAA5460", Offset = "0xAA4260", VA = "0x180AA5460")]
|
|
internal static void CheckSetup()
|
|
{
|
|
if (HTTPCacheService.IsSupported)
|
|
{
|
|
HTTPCacheService.SetupCacheFolder();
|
|
HTTPCacheService.LoadLibrary();
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600CE7D RID: 52861 RVA: 0x002F8418 File Offset: 0x002F6618
|
|
[Token(Token = "0x600CE7D")]
|
|
[Address(RVA = "0xAA8830", Offset = "0xAA7630", VA = "0x180AA8830")]
|
|
internal static void SetupCacheFolder()
|
|
{
|
|
if (HTTPCacheService.IsSupported)
|
|
{
|
|
bool flag = string.IsNullOrEmpty(HTTPCacheService.<CacheFolder>k__BackingField);
|
|
if (flag || flag)
|
|
{
|
|
HTTPCacheService.<CacheFolder>k__BackingField = Path.Combine(HTTPManager.GetRootCacheFolder(), "HTTPCache");
|
|
IIOService ioservice = HTTPManager.IOService;
|
|
IIOService ioservice2 = HTTPManager.IOService;
|
|
HTTPCacheService.<LibraryPath>k__BackingField = Path.Combine(HTTPManager.GetRootCacheFolder(), "Library");
|
|
}
|
|
ILogger logger = HTTPManager.Logger;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600CE7E RID: 52862 RVA: 0x002F8498 File Offset: 0x002F6698
|
|
[Token(Token = "0x600CE7E")]
|
|
[Address(RVA = "0xAA68A0", Offset = "0xAA56A0", VA = "0x180AA68A0")]
|
|
internal static ulong GetNameIdx()
|
|
{
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
ulong nextNameIDX = HTTPCacheService.NextNameIDX;
|
|
ulong num = HTTPCacheService.NextNameIDX;
|
|
num += (ulong)1L;
|
|
HTTPCacheService.NextNameIDX = num;
|
|
HTTPCacheService.NextNameIDX = 0UL;
|
|
Dictionary<ulong, HTTPCacheFileInfo> usedIndexes = HTTPCacheService.UsedIndexes;
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600CE7F RID: 52863 RVA: 0x002F84FC File Offset: 0x002F66FC
|
|
[Token(Token = "0x600CE7F")]
|
|
[Address(RVA = "0xAA6A90", Offset = "0xAA5890", VA = "0x180AA6A90")]
|
|
internal static bool HasEntity(Uri uri)
|
|
{
|
|
if (HTTPCacheService.IsSupported)
|
|
{
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary2 = HTTPCacheService.library;
|
|
throw new NullReferenceException();
|
|
}
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600CE80 RID: 52864 RVA: 0x002F854C File Offset: 0x002F674C
|
|
[Token(Token = "0x600CE80")]
|
|
[Address(RVA = "0xAA57D0", Offset = "0xAA45D0", VA = "0x180AA57D0")]
|
|
public static bool DeleteEntity(Uri uri, bool removeFromLibrary = true)
|
|
{
|
|
for (;;)
|
|
{
|
|
int num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
break;
|
|
}
|
|
int num2 = 0;
|
|
object obj = HTTPCacheFileLock.Acquire(uri);
|
|
Monitor.Enter(obj, num2);
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
int num3 = 0;
|
|
Monitor.Enter(dictionary, num2);
|
|
HTTPCacheService.LoadLibrary();
|
|
bool flag = HTTPCacheService.library.TryGetValue(uri, num3);
|
|
if (flag)
|
|
{
|
|
}
|
|
if (removeFromLibrary != flag)
|
|
{
|
|
bool flag2 = HTTPCacheService.Library.Remove(uri);
|
|
Dictionary<ulong, HTTPCacheFileInfo> usedIndexes = HTTPCacheService.UsedIndexes;
|
|
}
|
|
Monitor.Exit(dictionary);
|
|
if (num == 0)
|
|
{
|
|
if (num != -1)
|
|
{
|
|
}
|
|
Monitor.Exit(obj);
|
|
if (num == 0)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600CE81 RID: 52865 RVA: 0x002F8608 File Offset: 0x002F6808
|
|
[Token(Token = "0x600CE81")]
|
|
[Address(RVA = "0xAA6EE0", Offset = "0xAA5CE0", VA = "0x180AA6EE0")]
|
|
internal static bool IsCachedEntityExpiresInTheFuture(HTTPRequest request)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
goto IL_BB;
|
|
}
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
int num2 = 0;
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary2 = HTTPCacheService.library;
|
|
Uri currentUri = request.CurrentUri;
|
|
if (!dictionary2.TryGetValue(currentUri, num2))
|
|
{
|
|
}
|
|
bool flag;
|
|
if (flag && request.OnUpgraded == (ulong)0L)
|
|
{
|
|
if (request.<Callback>k__BackingField == (ulong)(-1L))
|
|
{
|
|
OnUploadProgressDelegate onUploadProgress = request.OnUploadProgress;
|
|
DateTime utcNow = DateTime.UtcNow;
|
|
}
|
|
bool <DisableRetry>k__BackingField = request.<DisableRetry>k__BackingField;
|
|
int num3 = 0;
|
|
long num4 = Math.Max(0L, (long)num3);
|
|
int <MaxFragmentQueueLength>k__BackingField = request.<MaxFragmentQueueLength>k__BackingField;
|
|
long num5 = Math.Max(num4, (long)<MaxFragmentQueueLength>k__BackingField);
|
|
DateTime utcNow2 = DateTime.UtcNow;
|
|
TimeSpan timeSpan;
|
|
timeSpan += num5;
|
|
}
|
|
Monitor.Exit(dictionary);
|
|
}
|
|
while (num != 0);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
IL_BB:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600CE82 RID: 52866 RVA: 0x002F86E4 File Offset: 0x002F68E4
|
|
[Token(Token = "0x600CE82")]
|
|
[Address(RVA = "0xAA8570", Offset = "0xAA7370", VA = "0x180AA8570")]
|
|
internal static void SetHeaders(HTTPRequest request)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
break;
|
|
}
|
|
bool flag = request.RemoveHeader("If-None-Match");
|
|
bool flag2 = request.RemoveHeader("If-Modified-Since");
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
int num2 = 0;
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary2 = HTTPCacheService.library;
|
|
Uri currentUri = request.CurrentUri;
|
|
bool flag3;
|
|
if (dictionary2.TryGetValue(currentUri, num2) && flag3)
|
|
{
|
|
int freeList = dictionary2.freeList;
|
|
if (!flag3)
|
|
{
|
|
}
|
|
IEqualityComparer comparer = dictionary2.comparer;
|
|
if (!flag3)
|
|
{
|
|
}
|
|
}
|
|
Monitor.Exit(dictionary);
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x0600CE83 RID: 52867 RVA: 0x002F878C File Offset: 0x002F698C
|
|
[Token(Token = "0x600CE83")]
|
|
[Address(RVA = "0xAA6410", Offset = "0xAA5210", VA = "0x180AA6410")]
|
|
internal static HTTPCacheFileInfo GetEntity(Uri uri)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
break;
|
|
}
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
int num2 = 0;
|
|
HTTPCacheService.LoadLibrary();
|
|
bool flag = HTTPCacheService.library.TryGetValue(uri, num2);
|
|
Monitor.Exit(dictionary);
|
|
}
|
|
while (num != 0);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600CE84 RID: 52868 RVA: 0x002F87E0 File Offset: 0x002F69E0
|
|
[Token(Token = "0x600CE84")]
|
|
[Address(RVA = "0xAA6610", Offset = "0xAA5410", VA = "0x180AA6610")]
|
|
internal static HTTPResponse GetFullResponse(HTTPRequest request)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
goto IL_4F;
|
|
}
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
int num2 = 0;
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary2 = HTTPCacheService.library;
|
|
Uri currentUri = request.CurrentUri;
|
|
if (!dictionary2.TryGetValue(currentUri, num2))
|
|
{
|
|
}
|
|
Monitor.Exit(dictionary);
|
|
}
|
|
while (num != 0);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
IL_4F:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600CE85 RID: 52869 RVA: 0x002F8850 File Offset: 0x002F6A50
|
|
[Token(Token = "0x600CE85")]
|
|
[Address(RVA = "0xAA6C90", Offset = "0xAA5A90", VA = "0x180AA6C90")]
|
|
internal static bool IsCacheble(Uri uri, HTTPMethods method, HTTPResponse response)
|
|
{
|
|
if (!HTTPCacheService.IsSupported || response == 0 || response.<StatusCode>k__BackingField > 199)
|
|
{
|
|
return;
|
|
}
|
|
List<string> headerValues = response.GetHeaderValues("cache-control");
|
|
if (headerValues != 0)
|
|
{
|
|
Predicate<string> <>9__30_ = HTTPCacheService.<>c.<>9__30_0;
|
|
if (<>9__30_ == 0)
|
|
{
|
|
HTTPCacheService.<>c.<>9__30_0 = delegate(string headerValue)
|
|
{
|
|
string text = headerValue.ToLower();
|
|
return text.Contains("no-store") || text.Contains("no-cache");
|
|
};
|
|
}
|
|
if (headerValues.Exists(<>9__30_))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
List<string> headerValues2 = response.GetHeaderValues("pragma");
|
|
if (headerValues2 != 0)
|
|
{
|
|
Predicate<string> predicate;
|
|
if (HTTPCacheService.<>c.<>9__30_1 == 0)
|
|
{
|
|
predicate = delegate(string headerValue)
|
|
{
|
|
string text2 = headerValue.ToLower();
|
|
return text2.Contains("no-store") || text2.Contains("no-cache");
|
|
};
|
|
HTTPCacheService.<>c.<>9__30_1 = predicate;
|
|
}
|
|
if (headerValues2.Exists(predicate))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
if (response.GetHeaderValues("content-range") == 0)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600CE86 RID: 52870 RVA: 0x002F8908 File Offset: 0x002F6B08
|
|
[Token(Token = "0x600CE86")]
|
|
[Address(RVA = "0xAA8CA0", Offset = "0xAA7AA0", VA = "0x180AA8CA0")]
|
|
internal static HTTPCacheFileInfo Store(Uri uri, HTTPMethods method, HTTPResponse response)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (response == 0)
|
|
{
|
|
break;
|
|
}
|
|
byte[] <Data>k__BackingField = response.<Data>k__BackingField;
|
|
if (<Data>k__BackingField == 0 || <Data>k__BackingField.Length == num || !HTTPCacheService.IsSupported)
|
|
{
|
|
break;
|
|
}
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.Library;
|
|
int num2 = 0;
|
|
if (!HTTPCacheService.Library.TryGetValue(uri, num2))
|
|
{
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary2 = HTTPCacheService.Library;
|
|
HTTPCacheFileInfo httpcacheFileInfo = new HTTPCacheFileInfo(uri);
|
|
dictionary2.Add(uri, httpcacheFileInfo);
|
|
Dictionary<ulong, HTTPCacheFileInfo> usedIndexes = HTTPCacheService.UsedIndexes;
|
|
ulong <MappedNameIDX>k__BackingField = httpcacheFileInfo.<MappedNameIDX>k__BackingField;
|
|
usedIndexes.Add(<MappedNameIDX>k__BackingField, httpcacheFileInfo);
|
|
}
|
|
int num3 = 0;
|
|
ILogger logger = HTTPManager.Logger;
|
|
if (num < num3)
|
|
{
|
|
num += num;
|
|
num++;
|
|
}
|
|
if (num == 0)
|
|
{
|
|
ILogger logger2 = HTTPManager.Logger;
|
|
int hashCode = uri.GetHashCode();
|
|
string text = string.Format("{0} - Saved to cache", hashCode);
|
|
}
|
|
Monitor.Exit(dictionary);
|
|
}
|
|
while (num != 0);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600CE87 RID: 52871 RVA: 0x002F8A1C File Offset: 0x002F6C1C
|
|
[Token(Token = "0x600CE87")]
|
|
[Address(RVA = "0xAA7A30", Offset = "0xAA6830", VA = "0x180AA7A30")]
|
|
internal static Stream PrepareStreamed(Uri uri, HTTPResponse response)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
break;
|
|
}
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
int num2 = 0;
|
|
HTTPCacheService.LoadLibrary();
|
|
if (!HTTPCacheService.library.TryGetValue(uri, num2))
|
|
{
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary2 = HTTPCacheService.Library;
|
|
HTTPCacheFileInfo httpcacheFileInfo = new HTTPCacheFileInfo(uri);
|
|
dictionary2.Add(uri, httpcacheFileInfo);
|
|
Dictionary<ulong, HTTPCacheFileInfo> usedIndexes = HTTPCacheService.UsedIndexes;
|
|
ulong <MappedNameIDX>k__BackingField = httpcacheFileInfo.<MappedNameIDX>k__BackingField;
|
|
usedIndexes.Add(<MappedNameIDX>k__BackingField, httpcacheFileInfo);
|
|
}
|
|
Monitor.Exit(dictionary);
|
|
}
|
|
while (num != 0);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600CE88 RID: 52872 RVA: 0x002F8AC0 File Offset: 0x002F6CC0
|
|
[Token(Token = "0x600CE88")]
|
|
[Address(RVA = "0xAA5190", Offset = "0xAA3F90", VA = "0x180AA5190")]
|
|
public static void BeginClear()
|
|
{
|
|
if (HTTPCacheService.IsSupported)
|
|
{
|
|
HTTPCacheService.SetupCacheFolder();
|
|
WaitCallback <>9__33_ = HTTPCacheService.<>c.<>9__33_0;
|
|
if (<>9__33_ == 0)
|
|
{
|
|
HTTPCacheService.<>c.<>9__33_0 = delegate(object param)
|
|
{
|
|
HTTPCacheService.ClearImpl(param);
|
|
};
|
|
}
|
|
bool flag = ThreadPool.QueueUserWorkItem(<>9__33_);
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600CE89 RID: 52873 RVA: 0x002F8B08 File Offset: 0x002F6D08
|
|
[Token(Token = "0x600CE89")]
|
|
[Address(RVA = "0xAA5500", Offset = "0xAA4300", VA = "0x180AA5500")]
|
|
private static void ClearImpl(object param)
|
|
{
|
|
int num = 0;
|
|
if (HTTPCacheService.IsSupported)
|
|
{
|
|
IIOService ioservice = HTTPManager.IOService;
|
|
IIOService ioservice2 = HTTPManager.IOService;
|
|
num++;
|
|
num++;
|
|
HTTPCacheService.UsedIndexes.Clear();
|
|
HTTPCacheService.library.Clear();
|
|
HTTPCacheService.SaveLibrary();
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600CE8A RID: 52874 RVA: 0x002F8B6C File Offset: 0x002F6D6C
|
|
[Token(Token = "0x600CE8A")]
|
|
[Address(RVA = "0xAA5300", Offset = "0xAA4100", VA = "0x180AA5300")]
|
|
public static void BeginMaintainence(HTTPCacheMaintananceParams maintananceParam)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (0600CE8A)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.Caching.HTTPCacheService::BeginMaintainence(BestHTTP.Caching.HTTPCacheMaintananceParams)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
IL_3B:
|
|
stloc:ArgumentNullException(var_4_45, newobj:ArgumentNullException(ArgumentNullException::.ctor, ldstr:string("maintananceParams == null")))
|
|
}
|
|
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
|
|
--- End of inner exception stack trace ---
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
|
|
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1660
|
|
*/;
|
|
}
|
|
|
|
// Token: 0x0600CE8B RID: 52875 RVA: 0x002F8BC0 File Offset: 0x002F6DC0
|
|
[Token(Token = "0x600CE8B")]
|
|
[Address(RVA = "0xAA5F50", Offset = "0xAA4D50", VA = "0x180AA5F50")]
|
|
public static int GetCacheEntityCount()
|
|
{
|
|
int num;
|
|
int count;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
return 0;
|
|
}
|
|
HTTPCacheService.CheckSetup();
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
HTTPCacheService.LoadLibrary();
|
|
count = HTTPCacheService.library.Count;
|
|
Monitor.Exit(dictionary);
|
|
}
|
|
while (num != 0);
|
|
return count;
|
|
}
|
|
|
|
// Token: 0x0600CE8C RID: 52876 RVA: 0x002F8C18 File Offset: 0x002F6E18
|
|
[Token(Token = "0x600CE8C")]
|
|
[Address(RVA = "0xAA6130", Offset = "0xAA4F30", VA = "0x180AA6130")]
|
|
public static ulong GetCacheSize()
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
break;
|
|
}
|
|
HTTPCacheService.CheckSetup();
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary2 = HTTPCacheService.library;
|
|
bool flag;
|
|
if (flag)
|
|
{
|
|
}
|
|
if (num != 0)
|
|
{
|
|
goto IL_51;
|
|
}
|
|
if (num != -1)
|
|
{
|
|
}
|
|
Monitor.Exit(dictionary);
|
|
}
|
|
while (num != 0);
|
|
throw new NullReferenceException();
|
|
IL_51:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600CE8D RID: 52877 RVA: 0x002F8C7C File Offset: 0x002F6E7C
|
|
[Token(Token = "0x600CE8D")]
|
|
[Address(RVA = "0xAA72C0", Offset = "0xAA60C0", VA = "0x180AA72C0")]
|
|
private static void LoadLibrary()
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
return;
|
|
}
|
|
HTTPCacheService.library = new Dictionary(new UriComparer());
|
|
IIOService ioservice = HTTPManager.IOService;
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
IIOService ioservice2 = HTTPManager.IOService;
|
|
BinaryReader binaryReader;
|
|
ushort num2 = binaryReader.ReadUInt16();
|
|
HTTPCacheService.NextNameIDX = (ulong)binaryReader.ReadInt64();
|
|
ushort num3 = binaryReader.ReadUInt16();
|
|
Uri uri;
|
|
if (num < (int)num3)
|
|
{
|
|
decimal num4 = binaryReader.ReadDecimal();
|
|
HTTPCacheFileInfo httpcacheFileInfo = new HTTPCacheFileInfo(uri, binaryReader, (int)num2);
|
|
if (httpcacheFileInfo.IsExists())
|
|
{
|
|
HTTPCacheService.library.Add(uri, httpcacheFileInfo);
|
|
Dictionary<ulong, HTTPCacheFileInfo> usedIndexes = HTTPCacheService.UsedIndexes;
|
|
ulong <MappedNameIDX>k__BackingField = httpcacheFileInfo.<MappedNameIDX>k__BackingField;
|
|
usedIndexes.Add(<MappedNameIDX>k__BackingField, httpcacheFileInfo);
|
|
}
|
|
num++;
|
|
}
|
|
if (binaryReader != 0)
|
|
{
|
|
}
|
|
if (num != 0)
|
|
{
|
|
goto IL_142;
|
|
}
|
|
if (num != -1)
|
|
{
|
|
}
|
|
num++;
|
|
int num5;
|
|
if (uri != 0)
|
|
{
|
|
num5 = 0;
|
|
}
|
|
if (num != 0)
|
|
{
|
|
goto IL_142;
|
|
}
|
|
if (num != -1)
|
|
{
|
|
}
|
|
Monitor.Exit(num5);
|
|
}
|
|
while (num != 0);
|
|
HTTPCacheService.DeleteUnusedFiles();
|
|
if (HTTPCacheService.IsSupported)
|
|
{
|
|
HTTPCacheService.SetupCacheFolder();
|
|
WaitCallback waitCallback;
|
|
if (HTTPCacheService.<>c.<>9__33_0 == 0)
|
|
{
|
|
waitCallback = delegate(object param)
|
|
{
|
|
HTTPCacheService.ClearImpl(param);
|
|
};
|
|
HTTPCacheService.<>c.<>9__33_0 = waitCallback;
|
|
}
|
|
bool flag = ThreadPool.QueueUserWorkItem(waitCallback);
|
|
}
|
|
return;
|
|
IL_142:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600CE8E RID: 52878 RVA: 0x002F8DD0 File Offset: 0x002F6FD0
|
|
[Token(Token = "0x600CE8E")]
|
|
[Address(RVA = "0xAA7D60", Offset = "0xAA6B60", VA = "0x180AA7D60")]
|
|
internal static void SaveLibrary()
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
break;
|
|
}
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
IIOService ioservice = HTTPManager.IOService;
|
|
BinaryWriter binaryWriter;
|
|
binaryWriter.Write(2);
|
|
ulong nextNameIDX = HTTPCacheService.NextNameIDX;
|
|
binaryWriter.Write((long)nextNameIDX);
|
|
int count = HTTPCacheService.Library.Count;
|
|
binaryWriter.Write((ushort)count);
|
|
int num2 = 0;
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary2 = HTTPCacheService.Library;
|
|
bool flag;
|
|
if (flag)
|
|
{
|
|
int hashCode = num2.GetHashCode();
|
|
}
|
|
if (num != 0)
|
|
{
|
|
goto IL_AE;
|
|
}
|
|
if (num != -1)
|
|
{
|
|
}
|
|
num++;
|
|
if (binaryWriter != 0)
|
|
{
|
|
}
|
|
if (num != 0)
|
|
{
|
|
goto IL_C0;
|
|
}
|
|
if (num != -1)
|
|
{
|
|
}
|
|
num++;
|
|
int num3 = 0;
|
|
if (num != 0)
|
|
{
|
|
goto IL_C0;
|
|
}
|
|
if (num != -1)
|
|
{
|
|
}
|
|
Monitor.Exit(num3);
|
|
}
|
|
while (num != 0);
|
|
return;
|
|
IL_AE:
|
|
throw new NullReferenceException();
|
|
IL_C0:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600CE8F RID: 52879 RVA: 0x002F8EA4 File Offset: 0x002F70A4
|
|
[Token(Token = "0x600CE8F")]
|
|
[Address(RVA = "0xAA8270", Offset = "0xAA7070", VA = "0x180AA8270")]
|
|
internal static void SetBodyLength(Uri uri, int bodyLength)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
break;
|
|
}
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
int num2 = 0;
|
|
HTTPCacheService.LoadLibrary();
|
|
if (!HTTPCacheService.library.TryGetValue(uri, num2))
|
|
{
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary2 = HTTPCacheService.Library;
|
|
DateTime utcNow = DateTime.UtcNow;
|
|
HTTPCacheFileInfo httpcacheFileInfo;
|
|
dictionary2.Add(uri, httpcacheFileInfo);
|
|
Dictionary<ulong, HTTPCacheFileInfo> usedIndexes = HTTPCacheService.UsedIndexes;
|
|
ulong <MappedNameIDX>k__BackingField = httpcacheFileInfo.<MappedNameIDX>k__BackingField;
|
|
usedIndexes.Add(<MappedNameIDX>k__BackingField, httpcacheFileInfo);
|
|
}
|
|
Monitor.Exit(dictionary);
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x0600CE90 RID: 52880 RVA: 0x002F8F48 File Offset: 0x002F7148
|
|
[Token(Token = "0x600CE90")]
|
|
[Address(RVA = "0xAA5B40", Offset = "0xAA4940", VA = "0x180AA5B40")]
|
|
private static void DeleteUnusedFiles()
|
|
{
|
|
int num = 0;
|
|
if (HTTPCacheService.IsSupported)
|
|
{
|
|
HTTPCacheService.CheckSetup();
|
|
IIOService ioservice = HTTPManager.IOService;
|
|
int num2 = 0;
|
|
string fileName = Path.GetFileName(num);
|
|
bool flag;
|
|
if (flag)
|
|
{
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.Library;
|
|
Dictionary<ulong, HTTPCacheFileInfo> usedIndexes = HTTPCacheService.UsedIndexes;
|
|
throw new NullReferenceException();
|
|
}
|
|
IIOService ioservice2 = HTTPManager.IOService;
|
|
num2++;
|
|
}
|
|
}
|
|
|
|
// Token: 0x04008402 RID: 33794
|
|
[Token(Token = "0x4008402")]
|
|
private const int LibraryVersion = 2;
|
|
|
|
// Token: 0x04008403 RID: 33795
|
|
[Token(Token = "0x4008403")]
|
|
private static bool isSupported;
|
|
|
|
// Token: 0x04008404 RID: 33796
|
|
[Token(Token = "0x4008404")]
|
|
private static bool IsSupportCheckDone;
|
|
|
|
// Token: 0x04008405 RID: 33797
|
|
[Token(Token = "0x4008405")]
|
|
private static Dictionary<Uri, HTTPCacheFileInfo> library;
|
|
|
|
// Token: 0x04008406 RID: 33798
|
|
[Token(Token = "0x4008406")]
|
|
private static Dictionary<ulong, HTTPCacheFileInfo> UsedIndexes = new Dictionary();
|
|
|
|
// Token: 0x04008409 RID: 33801
|
|
[Token(Token = "0x4008409")]
|
|
private static bool InClearThread;
|
|
|
|
// Token: 0x0400840A RID: 33802
|
|
[Token(Token = "0x400840A")]
|
|
private static bool InMaintainenceThread;
|
|
|
|
// Token: 0x0400840B RID: 33803
|
|
[Token(Token = "0x400840B")]
|
|
private static ulong NextNameIDX;
|
|
}
|
|
}
|