This commit is contained in:
niko
2026-04-08 23:40:05 +02:00
parent d6894bcbc7
commit 18dc73f922
7750 changed files with 1795369 additions and 0 deletions
@@ -0,0 +1,656 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
using BestHTTP.Extensions;
using BestHTTP.PlatformSupport.FileSystem;
using Cpp2IlInjected;
namespace BestHTTP.Caching
{
// Token: 0x020019E4 RID: 6628
[Token(Token = "0x20019E4")]
[StructLayout(3)]
public class HTTPCacheFileInfo : IComparable<HTTPCacheFileInfo>
{
// Token: 0x17001CD1 RID: 7377
// (get) Token: 0x0600B264 RID: 45668 RVA: 0x0029EF64 File Offset: 0x0029D164
// (set) Token: 0x0600B265 RID: 45669 RVA: 0x0029EF78 File Offset: 0x0029D178
[Token(Token = "0x17001CD1")]
internal Uri Uri
{
[Token(Token = "0x600B264")]
[Address(RVA = "0x3C39A0", Offset = "0x3C23A0", VA = "0x1803C39A0")]
get;
[Token(Token = "0x600B265")]
[Address(RVA = "0x3C39B0", Offset = "0x3C23B0", VA = "0x1803C39B0")]
set;
}
// Token: 0x17001CD2 RID: 7378
// (get) Token: 0x0600B266 RID: 45670 RVA: 0x0029EF8C File Offset: 0x0029D18C
// (set) Token: 0x0600B267 RID: 45671 RVA: 0x0029EFA0 File Offset: 0x0029D1A0
[Token(Token = "0x17001CD2")]
internal DateTime LastAccess
{
[Token(Token = "0x600B266")]
[Address(RVA = "0x3C1240", Offset = "0x3BFC40", VA = "0x1803C1240")]
get;
[Token(Token = "0x600B267")]
[Address(RVA = "0x3C1280", Offset = "0x3BFC80", VA = "0x1803C1280")]
set;
}
// Token: 0x17001CD3 RID: 7379
// (get) Token: 0x0600B268 RID: 45672 RVA: 0x0029EFB4 File Offset: 0x0029D1B4
// (set) Token: 0x0600B269 RID: 45673 RVA: 0x0029EFC8 File Offset: 0x0029D1C8
[Token(Token = "0x17001CD3")]
public int BodyLength
{
[Token(Token = "0x600B268")]
[Address(RVA = "0x4FBD40", Offset = "0x4FA740", VA = "0x1804FBD40")]
get;
[Token(Token = "0x600B269")]
[Address(RVA = "0x4E90F0", Offset = "0x4E7AF0", VA = "0x1804E90F0")]
set;
}
// Token: 0x17001CD4 RID: 7380
// (get) Token: 0x0600B26A RID: 45674 RVA: 0x0029EFDC File Offset: 0x0029D1DC
// (set) Token: 0x0600B26B RID: 45675 RVA: 0x0029EFF0 File Offset: 0x0029D1F0
[Token(Token = "0x17001CD4")]
private string ETag
{
[Token(Token = "0x600B26A")]
[Address(RVA = "0x3C1230", Offset = "0x3BFC30", VA = "0x1803C1230")]
get;
[Token(Token = "0x600B26B")]
[Address(RVA = "0x3C1270", Offset = "0x3BFC70", VA = "0x1803C1270")]
set;
}
// Token: 0x17001CD5 RID: 7381
// (get) Token: 0x0600B26C RID: 45676 RVA: 0x0029F004 File Offset: 0x0029D204
// (set) Token: 0x0600B26D RID: 45677 RVA: 0x0029F018 File Offset: 0x0029D218
[Token(Token = "0x17001CD5")]
private string LastModified
{
[Token(Token = "0x600B26C")]
[Address(RVA = "0x3C1250", Offset = "0x3BFC50", VA = "0x1803C1250")]
get;
[Token(Token = "0x600B26D")]
[Address(RVA = "0x3C1290", Offset = "0x3BFC90", VA = "0x1803C1290")]
set;
}
// Token: 0x17001CD6 RID: 7382
// (get) Token: 0x0600B26E RID: 45678 RVA: 0x0029F02C File Offset: 0x0029D22C
// (set) Token: 0x0600B26F RID: 45679 RVA: 0x0029F040 File Offset: 0x0029D240
[Token(Token = "0x17001CD6")]
private DateTime Expires
{
[Token(Token = "0x600B26E")]
[Address(RVA = "0x3EE8E0", Offset = "0x3ED2E0", VA = "0x1803EE8E0")]
get;
[Token(Token = "0x600B26F")]
[Address(RVA = "0x421E00", Offset = "0x420800", VA = "0x180421E00")]
set;
}
// Token: 0x17001CD7 RID: 7383
// (get) Token: 0x0600B270 RID: 45680 RVA: 0x0029F054 File Offset: 0x0029D254
// (set) Token: 0x0600B271 RID: 45681 RVA: 0x0029F068 File Offset: 0x0029D268
[Token(Token = "0x17001CD7")]
private long Age
{
[Token(Token = "0x600B270")]
[Address(RVA = "0x3D32F0", Offset = "0x3D1CF0", VA = "0x1803D32F0")]
get;
[Token(Token = "0x600B271")]
[Address(RVA = "0x3D3460", Offset = "0x3D1E60", VA = "0x1803D3460")]
set;
}
// Token: 0x17001CD8 RID: 7384
// (get) Token: 0x0600B272 RID: 45682 RVA: 0x0029F07C File Offset: 0x0029D27C
// (set) Token: 0x0600B273 RID: 45683 RVA: 0x0029F090 File Offset: 0x0029D290
[Token(Token = "0x17001CD8")]
private long MaxAge
{
[Token(Token = "0x600B272")]
[Address(RVA = "0x3EDEA0", Offset = "0x3EC8A0", VA = "0x1803EDEA0")]
get;
[Token(Token = "0x600B273")]
[Address(RVA = "0x3EDED0", Offset = "0x3EC8D0", VA = "0x1803EDED0")]
set;
}
// Token: 0x17001CD9 RID: 7385
// (get) Token: 0x0600B274 RID: 45684 RVA: 0x0029F0A4 File Offset: 0x0029D2A4
// (set) Token: 0x0600B275 RID: 45685 RVA: 0x0029F0B8 File Offset: 0x0029D2B8
[Token(Token = "0x17001CD9")]
private DateTime Date
{
[Token(Token = "0x600B274")]
[Address(RVA = "0x462740", Offset = "0x461140", VA = "0x180462740")]
get;
[Token(Token = "0x600B275")]
[Address(RVA = "0x462750", Offset = "0x461150", VA = "0x180462750")]
set;
}
// Token: 0x17001CDA RID: 7386
// (get) Token: 0x0600B276 RID: 45686 RVA: 0x0029F0CC File Offset: 0x0029D2CC
// (set) Token: 0x0600B277 RID: 45687 RVA: 0x0029F0E0 File Offset: 0x0029D2E0
[Token(Token = "0x17001CDA")]
private bool MustRevalidate
{
[Token(Token = "0x600B276")]
[Address(RVA = "0x566D70", Offset = "0x565770", VA = "0x180566D70")]
get;
[Token(Token = "0x600B277")]
[Address(RVA = "0x566E50", Offset = "0x565850", VA = "0x180566E50")]
set;
}
// Token: 0x17001CDB RID: 7387
// (get) Token: 0x0600B278 RID: 45688 RVA: 0x0029F0F4 File Offset: 0x0029D2F4
// (set) Token: 0x0600B279 RID: 45689 RVA: 0x0029F108 File Offset: 0x0029D308
[Token(Token = "0x17001CDB")]
private DateTime Received
{
[Token(Token = "0x600B278")]
[Address(RVA = "0x3EDE90", Offset = "0x3EC890", VA = "0x1803EDE90")]
get;
[Token(Token = "0x600B279")]
[Address(RVA = "0x3EDEC0", Offset = "0x3EC8C0", VA = "0x1803EDEC0")]
set;
}
// Token: 0x17001CDC RID: 7388
// (get) Token: 0x0600B27A RID: 45690 RVA: 0x0029F11C File Offset: 0x0029D31C
// (set) Token: 0x0600B27B RID: 45691 RVA: 0x0029F130 File Offset: 0x0029D330
[Token(Token = "0x17001CDC")]
private string ConstructedPath
{
[Token(Token = "0x600B27A")]
[Address(RVA = "0x48F050", Offset = "0x48DA50", VA = "0x18048F050")]
get;
[Token(Token = "0x600B27B")]
[Address(RVA = "0x52F860", Offset = "0x52E260", VA = "0x18052F860")]
set;
}
// Token: 0x17001CDD RID: 7389
// (get) Token: 0x0600B27C RID: 45692 RVA: 0x0029F144 File Offset: 0x0029D344
// (set) Token: 0x0600B27D RID: 45693 RVA: 0x0029F158 File Offset: 0x0029D358
[Token(Token = "0x17001CDD")]
internal ulong MappedNameIDX
{
[Token(Token = "0x600B27C")]
[Address(RVA = "0x4D2570", Offset = "0x4D0F70", VA = "0x1804D2570")]
get;
[Token(Token = "0x600B27D")]
[Address(RVA = "0x7D4760", Offset = "0x7D3160", VA = "0x1807D4760")]
set;
}
// Token: 0x0600B27E RID: 45694 RVA: 0x0029F16C File Offset: 0x0029D36C
[Token(Token = "0x600B27E")]
[Address(RVA = "0x1A2FAD0", Offset = "0x1A2E4D0", VA = "0x181A2FAD0")]
internal HTTPCacheFileInfo(Uri uri)
{
DateTime utcNow = DateTime.UtcNow;
base..ctor();
this.Uri = uri;
this.LastAccess = utcNow;
this.BodyLength = (int)((ulong)4294967295L);
this.MaxAge = (long)((ulong)(-1L));
ulong nameIdx = HTTPCacheService.GetNameIdx();
this.MappedNameIDX = nameIdx;
}
// Token: 0x0600B27F RID: 45695 RVA: 0x0029F1C0 File Offset: 0x0029D3C0
[Token(Token = "0x600B27F")]
[Address(RVA = "0x1A2FBA0", Offset = "0x1A2E5A0", VA = "0x181A2FBA0")]
internal HTTPCacheFileInfo(Uri uri, DateTime lastAcces, int bodyLength)
{
this.Uri = uri;
this.LastAccess = lastAcces;
this.BodyLength = bodyLength;
this.MaxAge = (long)((ulong)(-1L));
ulong nameIdx = HTTPCacheService.GetNameIdx();
this.MappedNameIDX = nameIdx;
}
// Token: 0x0600B280 RID: 45696 RVA: 0x0029F200 File Offset: 0x0029D400
[Token(Token = "0x600B280")]
[Address(RVA = "0x1A2F8F0", Offset = "0x1A2E2F0", VA = "0x181A2F8F0")]
internal HTTPCacheFileInfo(Uri uri, BinaryReader reader, int version)
{
this.Uri = uri;
DateTime dateTime = DateTime.FromBinary((long)reader.ReadUInt32());
this.LastAccess = dateTime;
ushort num = reader.ReadUInt16();
this.BodyLength = (int)num;
if (version != 1)
{
if (version != 2)
{
return;
}
long num2 = reader.ReadInt64();
this.MappedNameIDX = (ulong)num2;
}
decimal num3 = reader.ReadDecimal();
this.ETag = num3;
decimal num4 = reader.ReadDecimal();
this.LastModified = num4;
DateTime dateTime2 = DateTime.FromBinary((long)reader.ReadUInt32());
this.Expires = dateTime2;
uint num5 = reader.ReadUInt32();
this.Age = (long)num5;
uint num6 = reader.ReadUInt32();
this.MaxAge = (long)num6;
DateTime dateTime3 = DateTime.FromBinary((long)reader.ReadUInt32());
this.Date = dateTime3;
int num7 = reader.Read();
this.MustRevalidate = num7 != 0;
DateTime dateTime4 = DateTime.FromBinary((long)reader.ReadUInt32());
this.Received = dateTime4;
}
// Token: 0x0600B281 RID: 45697 RVA: 0x0029F2E8 File Offset: 0x0029D4E8
[Token(Token = "0x600B281")]
[Address(RVA = "0x1A2EC80", Offset = "0x1A2D680", VA = "0x181A2EC80")]
internal void SaveTo(BinaryWriter writer)
{
DateTime dateTime = this.<LastAccess>k__BackingField;
int num = this.<BodyLength>k__BackingField;
writer.Write((ushort)num);
ulong num2 = this.<MappedNameIDX>k__BackingField;
writer.Write((long)num2);
string text = this.<ETag>k__BackingField;
writer.Write(text);
string text2 = this.<LastModified>k__BackingField;
writer.Write(text2);
DateTime dateTime2 = this.<Expires>k__BackingField;
long num3 = this.<Age>k__BackingField;
writer.Write((uint)num3);
long num4 = this.<MaxAge>k__BackingField;
writer.Write((uint)num4);
DateTime dateTime3 = this.<Date>k__BackingField;
writer.Flush();
DateTime dateTime4 = this.<Received>k__BackingField;
}
// Token: 0x0600B282 RID: 45698 RVA: 0x0029F37C File Offset: 0x0029D57C
[Token(Token = "0x600B282")]
[Address(RVA = "0x1A2E0C0", Offset = "0x1A2CAC0", VA = "0x181A2E0C0")]
public string GetPath()
{
string text = this.<ConstructedPath>k__BackingField;
if (text == 0)
{
string <CacheFolder>k__BackingField = HTTPCacheService.<CacheFolder>k__BackingField;
ulong num = this.<MappedNameIDX>k__BackingField;
string text2;
this.<ConstructedPath>k__BackingField = text2;
}
return text;
}
// Token: 0x0600B283 RID: 45699 RVA: 0x0029F3AC File Offset: 0x0029D5AC
[Token(Token = "0x600B283")]
[Address(RVA = "0x1A2E8F0", Offset = "0x1A2D2F0", VA = "0x181A2E8F0")]
public bool IsExists()
{
if (HTTPCacheService.IsSupported)
{
IIOService ioservice = HTTPManager.IOService;
string path = this.GetPath();
}
throw new NullReferenceException();
}
// Token: 0x0600B284 RID: 45700 RVA: 0x0029F3D8 File Offset: 0x0029D5D8
[Token(Token = "0x600B284")]
[Address(RVA = "0x1A2DD90", Offset = "0x1A2C790", VA = "0x181A2DD90")]
internal void Delete()
{
int num;
do
{
num = 0;
if (!HTTPCacheService.IsSupported)
{
break;
}
string path = this.GetPath();
IIOService ioservice = HTTPManager.IOService;
int num2 = 0;
num2++;
this.<BodyLength>k__BackingField = (int)((ulong)4294967295L);
string empty = string.Empty;
this.<ETag>k__BackingField = empty;
DateTime dateTime = DateTime.FromBinary(0L);
this.<Expires>k__BackingField = dateTime;
string empty2 = string.Empty;
this.<LastModified>k__BackingField = empty2;
this.<Age>k__BackingField = (long)((ulong)0L);
this.<MaxAge>k__BackingField = (long)((ulong)(-1L));
DateTime dateTime2 = DateTime.FromBinary(0L);
this.<Date>k__BackingField = dateTime2;
this.<MustRevalidate>k__BackingField = false;
DateTime dateTime3 = DateTime.FromBinary(0L);
this.<Received>k__BackingField = dateTime3;
if (num2 != -1)
{
}
}
while (num != 0);
}
// Token: 0x0600B285 RID: 45701 RVA: 0x0029F494 File Offset: 0x0029D694
[Token(Token = "0x600B285")]
[Address(RVA = "0x1A2EBC0", Offset = "0x1A2D5C0", VA = "0x181A2EBC0")]
private void Reset()
{
this.<BodyLength>k__BackingField = (int)((ulong)4294967295L);
string empty = string.Empty;
this.<ETag>k__BackingField = empty;
DateTime dateTime = DateTime.FromBinary(0L);
this.<Expires>k__BackingField = dateTime;
string empty2 = string.Empty;
int num = 0;
this.<LastModified>k__BackingField = empty2;
this.<Age>k__BackingField = (long)((ulong)0L);
this.<MaxAge>k__BackingField = (long)((ulong)(-1L));
DateTime dateTime2 = DateTime.FromBinary((long)num);
this.<Date>k__BackingField = dateTime2;
int num2 = 0;
this.<MustRevalidate>k__BackingField = false;
DateTime dateTime3 = DateTime.FromBinary((long)num2);
this.<Received>k__BackingField = dateTime3;
}
// Token: 0x0600B286 RID: 45702 RVA: 0x0029F518 File Offset: 0x0029D718
[Token(Token = "0x600B286")]
[Address(RVA = "0x1A2EE00", Offset = "0x1A2D800", VA = "0x181A2EE00")]
private void SetUpCachingValues(HTTPResponse response)
{
response.<CacheFileInfo>k__BackingField = this;
string text = response.GetFirstHeaderValue("ETag").ToStrOrEmpty();
this.<ETag>k__BackingField = text;
string firstHeaderValue = response.GetFirstHeaderValue("Expires");
DateTime dateTime = DateTime.FromBinary(0L);
DateTime dateTime2 = firstHeaderValue.ToDateTime(dateTime);
this.<Expires>k__BackingField = dateTime2;
string text2 = response.GetFirstHeaderValue("Last-Modified").ToStrOrEmpty();
this.<LastModified>k__BackingField = text2;
string firstHeaderValue2 = response.GetFirstHeaderValue("Age");
int num = 0;
long num2 = firstHeaderValue2.ToInt64((long)num);
this.<Age>k__BackingField = num2;
string firstHeaderValue3 = response.GetFirstHeaderValue("Date");
DateTime dateTime3 = DateTime.FromBinary(0L);
DateTime dateTime4 = firstHeaderValue3.ToDateTime(dateTime3);
this.<Date>k__BackingField = dateTime4;
string firstHeaderValue4 = response.GetFirstHeaderValue("cache-control");
if (!string.IsNullOrEmpty(firstHeaderValue4))
{
string[] array = firstHeaderValue4.FindOption("max-age");
if (array != 0)
{
string text3 = array[1];
bool flag;
if (flag)
{
this.<MaxAge>k__BackingField = (flag ? 1L : 0L);
}
}
bool flag2 = firstHeaderValue4.ToLower().Contains("must-revalidate");
this.<MustRevalidate>k__BackingField = flag2;
}
DateTime utcNow = DateTime.UtcNow;
this.<Received>k__BackingField = utcNow;
}
// Token: 0x0600B287 RID: 45703 RVA: 0x0029F640 File Offset: 0x0029D840
[Token(Token = "0x600B287")]
[Address(RVA = "0x1A2F770", Offset = "0x1A2E170", VA = "0x181A2F770")]
internal bool WillExpireInTheFuture()
{
if (this.IsExists() && !this.<MustRevalidate>k__BackingField)
{
DateTime dateTime = this.<Expires>k__BackingField;
DateTime utcNow = DateTime.UtcNow;
return dateTime > utcNow;
}
}
// Token: 0x0600B288 RID: 45704 RVA: 0x0029F6E8 File Offset: 0x0029D8E8
[Token(Token = "0x600B288")]
[Address(RVA = "0x1A2F070", Offset = "0x1A2DA70", VA = "0x181A2F070")]
internal void SetUpRevalidationHeaders(HTTPRequest request)
{
bool flag = this.IsExists();
if (flag)
{
string text = this.<ETag>k__BackingField;
if (!flag)
{
string text2 = this.<ETag>k__BackingField;
request.SetHeader("If-None-Match", text2);
}
string text3 = this.<LastModified>k__BackingField;
if (!flag)
{
string text4 = this.<LastModified>k__BackingField;
request.SetHeader("If-Modified-Since", text4);
}
}
}
// Token: 0x0600B289 RID: 45705 RVA: 0x0029F744 File Offset: 0x0029D944
[Token(Token = "0x600B289")]
[Address(RVA = "0x1A2DF90", Offset = "0x1A2C990", VA = "0x181A2DF90")]
public Stream GetBodyStream(out int length)
{
if (this.IsExists())
{
int num = this.<BodyLength>k__BackingField;
length.m_value = num;
DateTime utcNow = DateTime.UtcNow;
this.<LastAccess>k__BackingField = utcNow;
IIOService ioservice = HTTPManager.IOService;
string path = this.GetPath();
}
throw new NullReferenceException();
}
// Token: 0x0600B28A RID: 45706 RVA: 0x0029F790 File Offset: 0x0029D990
[Token(Token = "0x600B28A")]
[Address(RVA = "0x1A2E9C0", Offset = "0x1A2D3C0", VA = "0x181A2E9C0")]
internal HTTPResponse ReadResponseTo(HTTPRequest request)
{
int num;
do
{
num = 0;
if (!this.IsExists())
{
break;
}
DateTime utcNow = DateTime.UtcNow;
this.<LastAccess>k__BackingField = utcNow;
IIOService ioservice = HTTPManager.IOService;
string path = this.GetPath();
HTTPResponse httpresponse;
httpresponse.<CacheFileInfo>k__BackingField = this;
httpresponse.Dispose();
if (path != 0)
{
}
if (num != -1)
{
}
}
while (num != 0);
throw new NullReferenceException();
}
// Token: 0x0600B28B RID: 45707 RVA: 0x0029F7F0 File Offset: 0x0029D9F0
[Token(Token = "0x600B28B")]
[Address(RVA = "0x1A2F110", Offset = "0x1A2DB10", VA = "0x181A2F110")]
internal void Store(HTTPResponse response)
{
for (;;)
{
int num = 0;
if (!HTTPCacheService.IsSupported)
{
return;
}
int num2 = this.GetPath().m_stringLength;
IIOService ioservice = HTTPManager.IOService;
this.Delete();
IIOService ioservice2 = HTTPManager.IOService;
string path = this.GetPath();
object[] array = new object[2];
int <StatusCode>k__BackingField = response.<StatusCode>k__BackingField;
num2 = <StatusCode>k__BackingField;
if (<StatusCode>k__BackingField != 0)
{
}
array[0] = num2;
string <Message>k__BackingField = response.<Message>k__BackingField;
if (<Message>k__BackingField != 0)
{
}
array[1] = <Message>k__BackingField;
Dictionary<string, List<string>> <Headers>k__BackingField = response.<Headers>k__BackingField;
Dictionary.Enumerator enumerator;
int num3;
if (enumerator != 0)
{
if (num < this.<LastAccess>k__BackingField)
{
break;
}
num3 = 0;
}
if (num3 != -1)
{
byte[] <Data>k__BackingField = response.<Data>k__BackingField;
num3++;
}
if (num3 != 0)
{
goto IL_127;
}
if (path != 0)
{
}
if (num3 != -1)
{
}
if (num3 == 0)
{
goto Block_5;
}
}
object[] array2 = new object[2];
throw new ArrayTypeMismatchException();
Block_5:
int length = response.<Data>k__BackingField.Length;
DateTime utcNow = DateTime.UtcNow;
return;
IL_127:
throw new NullReferenceException();
}
// Token: 0x0600B28C RID: 45708 RVA: 0x0029F944 File Offset: 0x0029DB44
[Token(Token = "0x600B28C")]
[Address(RVA = "0x1A2E1E0", Offset = "0x1A2CBE0", VA = "0x181A2E1E0")]
internal Stream GetSaveStream(HTTPResponse response)
{
for (;;)
{
int num = 0;
if (!HTTPCacheService.IsSupported)
{
goto IL_E7;
}
DateTime utcNow = DateTime.UtcNow;
this.<LastAccess>k__BackingField = utcNow;
string path = this.GetPath();
IIOService ioservice = HTTPManager.IOService;
if (path != 0)
{
this.Delete();
}
int stringLength = path.m_stringLength;
IIOService ioservice2 = HTTPManager.IOService;
string path2 = this.GetPath();
object[] array = new object[2];
int <StatusCode>k__BackingField = response.<StatusCode>k__BackingField;
if (<StatusCode>k__BackingField != 0)
{
}
array[0] = <StatusCode>k__BackingField;
string <Message>k__BackingField = response.<Message>k__BackingField;
if (<Message>k__BackingField != 0)
{
}
array[1] = <Message>k__BackingField;
Dictionary<string, List<string>> <Headers>k__BackingField = response.<Headers>k__BackingField;
Dictionary.Enumerator enumerator;
if (enumerator != 0)
{
break;
}
if (num != -1)
{
num++;
}
if (num != 0)
{
goto IL_120;
}
if (path2 != 0)
{
}
if (num != -1)
{
}
if (num == 0)
{
goto Block_5;
}
}
object[] array2 = new object[2];
throw new ArrayTypeMismatchException();
Block_5:
bool flag;
if (!flag)
{
List<string> list = new List();
}
IIOService ioservice3 = HTTPManager.IOService;
IL_E7:
throw new ArrayTypeMismatchException();
IL_120:
throw new NullReferenceException();
}
// Token: 0x0600B28D RID: 45709 RVA: 0x0029FA7C File Offset: 0x0029DC7C
[Token(Token = "0x600B28D")]
[Address(RVA = "0x1A2DD60", Offset = "0x1A2C760", VA = "0x181A2DD60", Slot = "4")]
public int CompareTo(HTTPCacheFileInfo other)
{
DateTime dateTime = this.<LastAccess>k__BackingField;
throw new NullReferenceException();
}
}
}
@@ -0,0 +1,96 @@
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Threading;
using Cpp2IlInjected;
namespace BestHTTP.Caching
{
// Token: 0x020019E5 RID: 6629
[Token(Token = "0x20019E5")]
[StructLayout(3)]
internal sealed class HTTPCacheFileLock
{
// Token: 0x0600B28E RID: 45710 RVA: 0x0029FA98 File Offset: 0x0029DC98
[Token(Token = "0x600B28E")]
[Address(RVA = "0x1F0DC30", Offset = "0x1F0C630", VA = "0x181F0DC30")]
internal static object Acquire(Uri uri)
{
int num;
do
{
num = 0;
object syncRoot = HTTPCacheFileLock.SyncRoot;
int num2 = 0;
if (!HTTPCacheFileLock.FileLocks.TryGetValue(uri, num2))
{
Dictionary<Uri, object> fileLocks = HTTPCacheFileLock.FileLocks;
object obj = new object();
fileLocks.Add(uri, obj);
}
Monitor.Exit(syncRoot);
if (num != -1)
{
}
}
while (num != 0);
throw new NullReferenceException();
}
// Token: 0x0600B28F RID: 45711 RVA: 0x0029FAF0 File Offset: 0x0029DCF0
[Token(Token = "0x600B28F")]
[Address(RVA = "0x1F0DF70", Offset = "0x1F0C970", VA = "0x181F0DF70")]
internal static void Remove(Uri uri)
{
int num;
do
{
num = 0;
object syncRoot = HTTPCacheFileLock.SyncRoot;
if (HTTPCacheFileLock.FileLocks.ContainsKey(uri))
{
bool flag = HTTPCacheFileLock.FileLocks.Remove(uri);
}
Monitor.Exit(syncRoot);
if (num != -1)
{
}
}
while (num != 0);
}
// Token: 0x0600B290 RID: 45712 RVA: 0x0029FB3C File Offset: 0x0029DD3C
[Token(Token = "0x600B290")]
[Address(RVA = "0x1F0DE30", Offset = "0x1F0C830", VA = "0x181F0DE30")]
internal static void Clear()
{
int num;
do
{
num = 0;
object syncRoot = HTTPCacheFileLock.SyncRoot;
HTTPCacheFileLock.FileLocks.Clear();
Monitor.Exit(syncRoot);
if (num != -1)
{
}
}
while (num != 0);
}
// Token: 0x0600B291 RID: 45713 RVA: 0x0029FB70 File Offset: 0x0029DD70
[Token(Token = "0x600B291")]
[Address(RVA = "0x3C1670", Offset = "0x3C0070", VA = "0x1803C1670")]
public HTTPCacheFileLock()
{
}
// Token: 0x040075BB RID: 30139
[Token(Token = "0x40075BB")]
private static Dictionary<Uri, object> FileLocks = new Dictionary();
// Token: 0x040075BC RID: 30140
[Token(Token = "0x40075BC")]
private static object SyncRoot = new object();
}
}
@@ -0,0 +1,49 @@
using System;
using System.Runtime.InteropServices;
using Cpp2IlInjected;
namespace BestHTTP.Caching
{
// Token: 0x020019E6 RID: 6630
[Token(Token = "0x20019E6")]
[StructLayout(3)]
public sealed class HTTPCacheMaintananceParams
{
// Token: 0x17001CDE RID: 7390
// (get) Token: 0x0600B293 RID: 45715 RVA: 0x0029FBA8 File Offset: 0x0029DDA8
// (set) Token: 0x0600B294 RID: 45716 RVA: 0x0029FBBC File Offset: 0x0029DDBC
[Token(Token = "0x17001CDE")]
public TimeSpan DeleteOlder
{
[Token(Token = "0x600B293")]
[Address(RVA = "0x3C39A0", Offset = "0x3C23A0", VA = "0x1803C39A0")]
get;
[Token(Token = "0x600B294")]
[Address(RVA = "0x3C39B0", Offset = "0x3C23B0", VA = "0x1803C39B0")]
private set;
}
// Token: 0x17001CDF RID: 7391
// (get) Token: 0x0600B295 RID: 45717 RVA: 0x0029FBD0 File Offset: 0x0029DDD0
// (set) Token: 0x0600B296 RID: 45718 RVA: 0x0029FBE4 File Offset: 0x0029DDE4
[Token(Token = "0x17001CDF")]
public ulong MaxCacheSize
{
[Token(Token = "0x600B295")]
[Address(RVA = "0x3C1240", Offset = "0x3BFC40", VA = "0x1803C1240")]
get;
[Token(Token = "0x600B296")]
[Address(RVA = "0x3C1280", Offset = "0x3BFC80", VA = "0x1803C1280")]
private set;
}
// Token: 0x0600B297 RID: 45719 RVA: 0x0029FBF8 File Offset: 0x0029DDF8
[Token(Token = "0x600B297")]
[Address(RVA = "0x3C39C0", Offset = "0x3C23C0", VA = "0x1803C39C0")]
public HTTPCacheMaintananceParams(TimeSpan deleteOlder, ulong maxCacheSize)
{
this.DeleteOlder = deleteOlder;
this.MaxCacheSize = maxCacheSize;
}
}
}
@@ -0,0 +1,891 @@
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;
}
}
@@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using Cpp2IlInjected;
namespace BestHTTP.Caching
{
// Token: 0x020019E7 RID: 6631
[Token(Token = "0x20019E7")]
[StructLayout(3)]
public sealed class UriComparer : IEqualityComparer<Uri>
{
// Token: 0x0600B298 RID: 45720 RVA: 0x0029FC1C File Offset: 0x0029DE1C
[Token(Token = "0x600B298")]
[Address(RVA = "0x1F17A40", Offset = "0x1F16440", VA = "0x181F17A40", Slot = "4")]
public bool Equals(Uri x, Uri y)
{
int num;
return num == 0;
}
// Token: 0x0600B299 RID: 45721 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x600B299")]
[Address(RVA = "0x1F17AC0", Offset = "0x1F164C0", VA = "0x181F17AC0", Slot = "5")]
public int GetHashCode(Uri uri)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x0600B29A RID: 45722 RVA: 0x0029FC30 File Offset: 0x0029DE30
[Token(Token = "0x600B29A")]
[Address(RVA = "0x3C1670", Offset = "0x3C0070", VA = "0x1803C1670")]
public UriComparer()
{
}
}
}