892 lines
26 KiB
C#
892 lines
26 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Runtime.InteropServices;
|
|
using System.Threading;
|
|
using BestHTTP.Logger;
|
|
using BestHTTP.PlatformSupport.FileSystem;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.Caching
|
|
{
|
|
// Token: 0x020019E8 RID: 6632
|
|
[Token(Token = "0x20019E8")]
|
|
[StructLayout(3)]
|
|
public static class HTTPCacheService
|
|
{
|
|
// Token: 0x17001CE0 RID: 7392
|
|
// (get) Token: 0x0600B29B RID: 45723 RVA: 0x0029FC44 File Offset: 0x0029DE44
|
|
[Token(Token = "0x17001CE0")]
|
|
public static bool IsSupported
|
|
{
|
|
[Token(Token = "0x600B29B")]
|
|
[Address(RVA = "0x1F121B0", Offset = "0x1F10BB0", VA = "0x181F121B0")]
|
|
get
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
IIOService ioservice = HTTPManager.IOService;
|
|
string rootCacheFolder = HTTPManager.GetRootCacheFolder();
|
|
ILogger logger = HTTPManager.Logger;
|
|
num++;
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
return HTTPCacheService.isSupported;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17001CE1 RID: 7393
|
|
// (get) Token: 0x0600B29C RID: 45724 RVA: 0x0029FC90 File Offset: 0x0029DE90
|
|
[Token(Token = "0x17001CE1")]
|
|
private static Dictionary<Uri, HTTPCacheFileInfo> Library
|
|
{
|
|
[Token(Token = "0x600B29C")]
|
|
[Address(RVA = "0x1F12520", Offset = "0x1F10F20", VA = "0x181F12520")]
|
|
get
|
|
{
|
|
HTTPCacheService.LoadLibrary();
|
|
return HTTPCacheService.library;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17001CE2 RID: 7394
|
|
// (get) Token: 0x0600B29D RID: 45725 RVA: 0x0029FCAC File Offset: 0x0029DEAC
|
|
// (set) Token: 0x0600B29E RID: 45726 RVA: 0x0029FCC0 File Offset: 0x0029DEC0
|
|
[Token(Token = "0x17001CE2")]
|
|
internal static string CacheFolder
|
|
{
|
|
[Token(Token = "0x600B29D")]
|
|
[Address(RVA = "0x1F12150", Offset = "0x1F10B50", VA = "0x181F12150")]
|
|
get;
|
|
[Token(Token = "0x600B29E")]
|
|
[Address(RVA = "0x1F12580", Offset = "0x1F10F80", VA = "0x181F12580")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x17001CE3 RID: 7395
|
|
// (get) Token: 0x0600B29F RID: 45727 RVA: 0x0029FCD4 File Offset: 0x0029DED4
|
|
// (set) Token: 0x0600B2A0 RID: 45728 RVA: 0x0029FCE8 File Offset: 0x0029DEE8
|
|
[Token(Token = "0x17001CE3")]
|
|
private static string LibraryPath
|
|
{
|
|
[Token(Token = "0x600B29F")]
|
|
[Address(RVA = "0x1F12460", Offset = "0x1F10E60", VA = "0x181F12460")]
|
|
get;
|
|
[Token(Token = "0x600B2A0")]
|
|
[Address(RVA = "0x1F125E0", Offset = "0x1F10FE0", VA = "0x181F125E0")]
|
|
set;
|
|
}
|
|
|
|
// Token: 0x0600B2A2 RID: 45730 RVA: 0x0029FD14 File Offset: 0x0029DF14
|
|
[Token(Token = "0x600B2A2")]
|
|
[Address(RVA = "0x1F0E470", Offset = "0x1F0CE70", VA = "0x181F0E470")]
|
|
internal static void CheckSetup()
|
|
{
|
|
if (HTTPCacheService.IsSupported)
|
|
{
|
|
HTTPCacheService.SetupCacheFolder();
|
|
HTTPCacheService.LoadLibrary();
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600B2A3 RID: 45731 RVA: 0x0029FD3C File Offset: 0x0029DF3C
|
|
[Token(Token = "0x600B2A3")]
|
|
[Address(RVA = "0x1F11860", Offset = "0x1F10260", VA = "0x181F11860")]
|
|
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: 0x0600B2A4 RID: 45732 RVA: 0x0029FDBC File Offset: 0x0029DFBC
|
|
[Token(Token = "0x600B2A4")]
|
|
[Address(RVA = "0x1F0F970", Offset = "0x1F0E370", VA = "0x181F0F970")]
|
|
internal static ulong GetNameIdx()
|
|
{
|
|
int num;
|
|
ulong nextNameIDX;
|
|
do
|
|
{
|
|
num = 0;
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
nextNameIDX = HTTPCacheService.NextNameIDX;
|
|
ulong num2 = HTTPCacheService.NextNameIDX;
|
|
num2 += (ulong)1L;
|
|
HTTPCacheService.NextNameIDX = num2;
|
|
HTTPCacheService.NextNameIDX = 0UL;
|
|
Dictionary<ulong, HTTPCacheFileInfo> usedIndexes = HTTPCacheService.UsedIndexes;
|
|
ulong nextNameIDX2 = HTTPCacheService.NextNameIDX;
|
|
if (usedIndexes.ContainsKey(nextNameIDX2))
|
|
{
|
|
}
|
|
Monitor.Exit(dictionary);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
return nextNameIDX;
|
|
}
|
|
|
|
// Token: 0x0600B2A5 RID: 45733 RVA: 0x0029FE2C File Offset: 0x0029E02C
|
|
[Token(Token = "0x600B2A5")]
|
|
[Address(RVA = "0x1F0FB80", Offset = "0x1F0E580", VA = "0x181F0FB80")]
|
|
internal static bool HasEntity(Uri uri)
|
|
{
|
|
int num;
|
|
bool flag;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
goto IL_3F;
|
|
}
|
|
HTTPCacheService.LoadLibrary();
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.library;
|
|
HTTPCacheService.LoadLibrary();
|
|
flag = HTTPCacheService.library.ContainsKey(uri);
|
|
Monitor.Exit(dictionary);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
return flag;
|
|
IL_3F:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600B2A6 RID: 45734 RVA: 0x0029FE80 File Offset: 0x0029E080
|
|
[Token(Token = "0x600B2A6")]
|
|
[Address(RVA = "0x1F0E800", Offset = "0x1F0D200", VA = "0x181F0E800")]
|
|
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 != -1)
|
|
{
|
|
}
|
|
if (num == 0)
|
|
{
|
|
Monitor.Exit(obj);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
if (num == 0)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600B2A7 RID: 45735 RVA: 0x0029FF44 File Offset: 0x0029E144
|
|
[Token(Token = "0x600B2A7")]
|
|
[Address(RVA = "0x1F10000", Offset = "0x1F0EA00", VA = "0x181F10000")]
|
|
internal static bool IsCachedEntityExpiresInTheFuture(HTTPRequest request)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
break;
|
|
}
|
|
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))
|
|
{
|
|
}
|
|
int num3 = 0;
|
|
Monitor.Exit(dictionary);
|
|
if (num != -1)
|
|
{
|
|
if (num3 == 68)
|
|
{
|
|
}
|
|
if (num3 == 66)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
while (num != 0);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600B2A8 RID: 45736 RVA: 0x0029FFC4 File Offset: 0x0029E1C4
|
|
[Token(Token = "0x600B2A8")]
|
|
[Address(RVA = "0x1F115F0", Offset = "0x1F0FFF0", VA = "0x181F115F0")]
|
|
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;
|
|
if (dictionary2.TryGetValue(currentUri, num2))
|
|
{
|
|
}
|
|
Monitor.Exit(dictionary);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x0600B2A9 RID: 45737 RVA: 0x002A0048 File Offset: 0x0029E248
|
|
[Token(Token = "0x600B2A9")]
|
|
[Address(RVA = "0x1F0F4C0", Offset = "0x1F0DEC0", VA = "0x181F0F4C0")]
|
|
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);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600B2AA RID: 45738 RVA: 0x002A00A0 File Offset: 0x0029E2A0
|
|
[Token(Token = "0x600B2AA")]
|
|
[Address(RVA = "0x1F0F6E0", Offset = "0x1F0E0E0", VA = "0x181F0F6E0")]
|
|
internal static HTTPResponse GetFullResponse(HTTPRequest request)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (!HTTPCacheService.IsSupported)
|
|
{
|
|
break;
|
|
}
|
|
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))
|
|
{
|
|
}
|
|
int num3 = 0;
|
|
Monitor.Exit(dictionary);
|
|
if (num != -1)
|
|
{
|
|
if (num3 == 69)
|
|
{
|
|
}
|
|
if (num3 == 67)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
while (num != 0);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600B2AB RID: 45739 RVA: 0x002A0120 File Offset: 0x0029E320
|
|
[Token(Token = "0x600B2AB")]
|
|
[Address(RVA = "0x1F0FDB0", Offset = "0x1F0E7B0", VA = "0x181F0FDB0")]
|
|
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: 0x0600B2AC RID: 45740 RVA: 0x002A01D8 File Offset: 0x0029E3D8
|
|
[Token(Token = "0x600B2AC")]
|
|
[Address(RVA = "0x1F11CD0", Offset = "0x1F106D0", VA = "0x181F11CD0")]
|
|
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);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600B2AD RID: 45741 RVA: 0x002A02F0 File Offset: 0x0029E4F0
|
|
[Token(Token = "0x600B2AD")]
|
|
[Address(RVA = "0x1F10A30", Offset = "0x1F0F430", VA = "0x181F10A30")]
|
|
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);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600B2AE RID: 45742 RVA: 0x002A0398 File Offset: 0x0029E598
|
|
[Token(Token = "0x600B2AE")]
|
|
[Address(RVA = "0x1F0E1A0", Offset = "0x1F0CBA0", VA = "0x181F0E1A0")]
|
|
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: 0x0600B2AF RID: 45743 RVA: 0x002A03E0 File Offset: 0x0029E5E0
|
|
[Token(Token = "0x600B2AF")]
|
|
[Address(RVA = "0x1F0E510", Offset = "0x1F0CF10", VA = "0x181F0E510")]
|
|
private static void ClearImpl(object param)
|
|
{
|
|
int num = 0;
|
|
if (HTTPCacheService.IsSupported)
|
|
{
|
|
IIOService ioservice = HTTPManager.IOService;
|
|
IIOService ioservice2 = HTTPManager.IOService;
|
|
num++;
|
|
int num2 = 0;
|
|
num++;
|
|
HTTPCacheService.UsedIndexes.Clear();
|
|
HTTPCacheService.library.Clear();
|
|
HTTPCacheService.SaveLibrary();
|
|
if (num2 != -1)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600B2B0 RID: 45744 RVA: 0x002A044C File Offset: 0x0029E64C
|
|
[Token(Token = "0x600B2B0")]
|
|
[Address(RVA = "0x1F0E310", Offset = "0x1F0CD10", VA = "0x181F0E310")]
|
|
public static void BeginMaintainence(HTTPCacheMaintananceParams maintananceParam)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (0600B2B0)
|
|
|
|
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 1663
|
|
*/;
|
|
}
|
|
|
|
// Token: 0x0600B2B1 RID: 45745 RVA: 0x002A04A0 File Offset: 0x0029E6A0
|
|
[Token(Token = "0x600B2B1")]
|
|
[Address(RVA = "0x1F0EFA0", Offset = "0x1F0D9A0", VA = "0x181F0EFA0")]
|
|
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);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
return count;
|
|
}
|
|
|
|
// Token: 0x0600B2B2 RID: 45746 RVA: 0x002A04FC File Offset: 0x0029E6FC
|
|
[Token(Token = "0x600B2B2")]
|
|
[Address(RVA = "0x1F0F1C0", Offset = "0x1F0DBC0", VA = "0x181F0F1C0")]
|
|
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;
|
|
Dictionary.Enumerator enumerator;
|
|
if (enumerator != 0)
|
|
{
|
|
int i = enumerator.getEnumeratorRetType;
|
|
while (i <= 0)
|
|
{
|
|
}
|
|
num += i;
|
|
}
|
|
if (num != -1)
|
|
{
|
|
}
|
|
if (num != 0)
|
|
{
|
|
goto IL_68;
|
|
}
|
|
Monitor.Exit(dictionary);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
throw new NullReferenceException();
|
|
IL_68:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600B2B3 RID: 45747 RVA: 0x002A0578 File Offset: 0x0029E778
|
|
[Token(Token = "0x600B2B3")]
|
|
[Address(RVA = "0x1F10290", Offset = "0x1F0EC90", VA = "0x181F10290")]
|
|
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();
|
|
if (num < (int)num3)
|
|
{
|
|
decimal num4 = binaryReader.ReadDecimal();
|
|
Uri uri;
|
|
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 != -1)
|
|
{
|
|
num++;
|
|
}
|
|
if (num != 0)
|
|
{
|
|
goto IL_149;
|
|
}
|
|
int num5;
|
|
if (num != 0)
|
|
{
|
|
num5 = 0;
|
|
}
|
|
if (num != -1)
|
|
{
|
|
num++;
|
|
}
|
|
if (num != 0)
|
|
{
|
|
goto IL_149;
|
|
}
|
|
Monitor.Exit(num5);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
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_149:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600B2B4 RID: 45748 RVA: 0x002A06D4 File Offset: 0x0029E8D4
|
|
[Token(Token = "0x600B2B4")]
|
|
[Address(RVA = "0x1F10D80", Offset = "0x1F0F780", VA = "0x181F10D80")]
|
|
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;
|
|
Dictionary.Enumerator enumerator;
|
|
if (enumerator != 0)
|
|
{
|
|
int hashCode = num2.GetHashCode();
|
|
}
|
|
if (num != -1)
|
|
{
|
|
num++;
|
|
}
|
|
if (num != 0)
|
|
{
|
|
goto IL_B6;
|
|
}
|
|
if (binaryWriter != 0)
|
|
{
|
|
}
|
|
if (num != -1)
|
|
{
|
|
num++;
|
|
}
|
|
if (num != 0)
|
|
{
|
|
goto IL_C8;
|
|
}
|
|
int num3 = 0;
|
|
if (num != -1)
|
|
{
|
|
num++;
|
|
}
|
|
if (num != 0)
|
|
{
|
|
goto IL_C8;
|
|
}
|
|
Monitor.Exit(num3);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
return;
|
|
IL_B6:
|
|
throw new NullReferenceException();
|
|
IL_C8:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600B2B5 RID: 45749 RVA: 0x002A07B0 File Offset: 0x0029E9B0
|
|
[Token(Token = "0x600B2B5")]
|
|
[Address(RVA = "0x1F112C0", Offset = "0x1F0FCC0", VA = "0x181F112C0")]
|
|
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);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x0600B2B6 RID: 45750 RVA: 0x002A0858 File Offset: 0x0029EA58
|
|
[Token(Token = "0x600B2B6")]
|
|
[Address(RVA = "0x1F0EB80", Offset = "0x1F0D580", VA = "0x181F0EB80")]
|
|
private static void DeleteUnusedFiles()
|
|
{
|
|
if (HTTPCacheService.IsSupported)
|
|
{
|
|
HTTPCacheService.CheckSetup();
|
|
IIOService ioservice = HTTPManager.IOService;
|
|
int num = 0;
|
|
bool flag;
|
|
if (flag)
|
|
{
|
|
Dictionary<Uri, HTTPCacheFileInfo> dictionary = HTTPCacheService.Library;
|
|
bool flag2 = !HTTPCacheService.UsedIndexes.ContainsKey((ulong)2199023255552L);
|
|
Monitor.Exit(dictionary);
|
|
if ((ulong)((uint)(-1)) == (ulong)(-1L) || !flag2)
|
|
{
|
|
goto IL_5B;
|
|
}
|
|
}
|
|
IIOService ioservice2 = HTTPManager.IOService;
|
|
IL_5B:
|
|
num++;
|
|
}
|
|
}
|
|
|
|
// Token: 0x040075BF RID: 30143
|
|
[Token(Token = "0x40075BF")]
|
|
private const int LibraryVersion = 2;
|
|
|
|
// Token: 0x040075C0 RID: 30144
|
|
[Token(Token = "0x40075C0")]
|
|
private static bool isSupported;
|
|
|
|
// Token: 0x040075C1 RID: 30145
|
|
[Token(Token = "0x40075C1")]
|
|
private static bool IsSupportCheckDone;
|
|
|
|
// Token: 0x040075C2 RID: 30146
|
|
[Token(Token = "0x40075C2")]
|
|
private static Dictionary<Uri, HTTPCacheFileInfo> library;
|
|
|
|
// Token: 0x040075C3 RID: 30147
|
|
[Token(Token = "0x40075C3")]
|
|
private static Dictionary<ulong, HTTPCacheFileInfo> UsedIndexes = new Dictionary();
|
|
|
|
// Token: 0x040075C6 RID: 30150
|
|
[Token(Token = "0x40075C6")]
|
|
private static bool InClearThread;
|
|
|
|
// Token: 0x040075C7 RID: 30151
|
|
[Token(Token = "0x40075C7")]
|
|
private static bool InMaintainenceThread;
|
|
|
|
// Token: 0x040075C8 RID: 30152
|
|
[Token(Token = "0x40075C8")]
|
|
private static ulong NextNameIDX;
|
|
}
|
|
}
|