CPF/CPF.Mac/Mac/Foundation/NSUrlCache.cs
2023-11-21 23:05:03 +08:00

264 lines
7.8 KiB
C#

using CPF.Mac.ObjCRuntime;
using System;
using System.ComponentModel;
namespace CPF.Mac.Foundation
{
[Register("NSURLCache", true)]
public class NSUrlCache : NSObject
{
private static readonly IntPtr selSharedURLCacheHandle = Selector.GetHandle("sharedURLCache");
private static readonly IntPtr selSetSharedURLCache_Handle = Selector.GetHandle("setSharedURLCache:");
private static readonly IntPtr selMemoryCapacityHandle = Selector.GetHandle("memoryCapacity");
private static readonly IntPtr selSetMemoryCapacity_Handle = Selector.GetHandle("setMemoryCapacity:");
private static readonly IntPtr selDiskCapacityHandle = Selector.GetHandle("diskCapacity");
private static readonly IntPtr selSetDiskCapacity_Handle = Selector.GetHandle("setDiskCapacity:");
private static readonly IntPtr selCurrentMemoryUsageHandle = Selector.GetHandle("currentMemoryUsage");
private static readonly IntPtr selCurrentDiskUsageHandle = Selector.GetHandle("currentDiskUsage");
private static readonly IntPtr selInitWithMemoryCapacityDiskCapacityDiskPath_Handle = Selector.GetHandle("initWithMemoryCapacity:diskCapacity:diskPath:");
private static readonly IntPtr selCachedResponseForRequest_Handle = Selector.GetHandle("cachedResponseForRequest:");
private static readonly IntPtr selStoreCachedResponseForRequest_Handle = Selector.GetHandle("storeCachedResponse:forRequest:");
private static readonly IntPtr selRemoveCachedResponseForRequest_Handle = Selector.GetHandle("removeCachedResponseForRequest:");
private static readonly IntPtr selRemoveAllCachedResponsesHandle = Selector.GetHandle("removeAllCachedResponses");
private static readonly IntPtr class_ptr = Class.GetHandle("NSURLCache");
private static object __mt_SharedCache_var_static;
public override IntPtr ClassHandle => class_ptr;
public static NSUrlCache SharedCache
{
[Export("sharedURLCache")]
get
{
return (NSUrlCache)(__mt_SharedCache_var_static = (NSUrlCache)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(class_ptr, selSharedURLCacheHandle)));
}
[Export("setSharedURLCache:")]
set
{
if (value == null)
{
throw new ArgumentNullException("value");
}
Messaging.void_objc_msgSend_IntPtr(class_ptr, selSetSharedURLCache_Handle, value.Handle);
}
}
public virtual ulong MemoryCapacity
{
[Export("memoryCapacity")]
get
{
if (IsDirectBinding)
{
return Messaging.UInt64_objc_msgSend(base.Handle, selMemoryCapacityHandle);
}
return Messaging.UInt64_objc_msgSendSuper(base.SuperHandle, selMemoryCapacityHandle);
}
[Export("setMemoryCapacity:")]
set
{
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_UInt64(base.Handle, selSetMemoryCapacity_Handle, value);
}
else
{
Messaging.void_objc_msgSendSuper_UInt64(base.SuperHandle, selSetMemoryCapacity_Handle, value);
}
}
}
public virtual ulong DiskCapacity
{
[Export("diskCapacity")]
get
{
if (IsDirectBinding)
{
return Messaging.UInt64_objc_msgSend(base.Handle, selDiskCapacityHandle);
}
return Messaging.UInt64_objc_msgSendSuper(base.SuperHandle, selDiskCapacityHandle);
}
[Export("setDiskCapacity:")]
set
{
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_UInt64(base.Handle, selSetDiskCapacity_Handle, value);
}
else
{
Messaging.void_objc_msgSendSuper_UInt64(base.SuperHandle, selSetDiskCapacity_Handle, value);
}
}
}
public virtual ulong CurrentMemoryUsage
{
[Export("currentMemoryUsage")]
get
{
if (IsDirectBinding)
{
return Messaging.UInt64_objc_msgSend(base.Handle, selCurrentMemoryUsageHandle);
}
return Messaging.UInt64_objc_msgSendSuper(base.SuperHandle, selCurrentMemoryUsageHandle);
}
}
public virtual ulong CurrentDiskUsage
{
[Export("currentDiskUsage")]
get
{
if (IsDirectBinding)
{
return Messaging.UInt64_objc_msgSend(base.Handle, selCurrentDiskUsageHandle);
}
return Messaging.UInt64_objc_msgSendSuper(base.SuperHandle, selCurrentDiskUsageHandle);
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
[Export("init")]
public NSUrlCache()
: base(NSObjectFlag.Empty)
{
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend(base.Handle, Selector.Init);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, Selector.Init);
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
[Export("initWithCoder:")]
public NSUrlCache(NSCoder coder)
: base(NSObjectFlag.Empty)
{
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr(base.Handle, Selector.InitWithCoder, coder.Handle);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr(base.SuperHandle, Selector.InitWithCoder, coder.Handle);
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
public NSUrlCache(NSObjectFlag t)
: base(t)
{
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
public NSUrlCache(IntPtr handle)
: base(handle)
{
}
[Export("initWithMemoryCapacity:diskCapacity:diskPath:")]
public NSUrlCache(ulong memoryCapacity, ulong diskCapacity, string diskPath)
: base(NSObjectFlag.Empty)
{
if (diskPath == null)
{
throw new ArgumentNullException("diskPath");
}
IntPtr intPtr = NSString.CreateNative(diskPath);
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_UInt64_UInt64_IntPtr(base.Handle, selInitWithMemoryCapacityDiskCapacityDiskPath_Handle, memoryCapacity, diskCapacity, intPtr);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_UInt64_UInt64_IntPtr(base.SuperHandle, selInitWithMemoryCapacityDiskCapacityDiskPath_Handle, memoryCapacity, diskCapacity, intPtr);
}
NSString.ReleaseNative(intPtr);
}
[Export("cachedResponseForRequest:")]
public virtual NSCachedUrlResponse CachedResponseForRequest(NSUrlRequest request)
{
if (request == null)
{
throw new ArgumentNullException("request");
}
if (IsDirectBinding)
{
return (NSCachedUrlResponse)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_IntPtr(base.Handle, selCachedResponseForRequest_Handle, request.Handle));
}
return (NSCachedUrlResponse)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper_IntPtr(base.SuperHandle, selCachedResponseForRequest_Handle, request.Handle));
}
[Export("storeCachedResponse:forRequest:")]
public virtual void StoreCachedResponse(NSCachedUrlResponse cachedResponse, NSUrlRequest forRequest)
{
if (cachedResponse == null)
{
throw new ArgumentNullException("cachedResponse");
}
if (forRequest == null)
{
throw new ArgumentNullException("forRequest");
}
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_IntPtr_IntPtr(base.Handle, selStoreCachedResponseForRequest_Handle, cachedResponse.Handle, forRequest.Handle);
}
else
{
Messaging.void_objc_msgSendSuper_IntPtr_IntPtr(base.SuperHandle, selStoreCachedResponseForRequest_Handle, cachedResponse.Handle, forRequest.Handle);
}
}
[Export("removeCachedResponseForRequest:")]
public virtual void RemoveCachedResponse(NSUrlRequest request)
{
if (request == null)
{
throw new ArgumentNullException("request");
}
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_IntPtr(base.Handle, selRemoveCachedResponseForRequest_Handle, request.Handle);
}
else
{
Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selRemoveCachedResponseForRequest_Handle, request.Handle);
}
}
[Export("removeAllCachedResponses")]
public virtual void RemoveAllCachedResponses()
{
if (IsDirectBinding)
{
Messaging.void_objc_msgSend(base.Handle, selRemoveAllCachedResponsesHandle);
}
else
{
Messaging.void_objc_msgSendSuper(base.SuperHandle, selRemoveAllCachedResponsesHandle);
}
}
}
}