1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
/// These constants represents the eviction priority of downloaded assets.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avassetdownloadedassetevictionpriority?language=objc)
// NS_TYPED_ENUM
pub type AVAssetDownloadedAssetEvictionPriority = NSString;
extern "C" {
/// Used to mark assets with the highest priority. They will be the last to be purged.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avassetdownloadedassetevictionpriorityimportant?language=objc)
pub static AVAssetDownloadedAssetEvictionPriorityImportant:
&'static AVAssetDownloadedAssetEvictionPriority;
}
extern "C" {
/// Used to mark assets have the default priority. They will be the first to be purged.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avassetdownloadedassetevictionprioritydefault?language=objc)
pub static AVAssetDownloadedAssetEvictionPriorityDefault:
&'static AVAssetDownloadedAssetEvictionPriority;
}
extern_class!(
/// An AVAssetDownloadStorageManager manages the policy for automatic purging of downloaded AVAssets. The policy is vended as AVAssetDownloadStorageManagementPolicy object.
///
/// When a storage management policy needs to be set on an asset, sharedDownloadStorageManager singleton needs to be fetched.
/// The new policy can then be set by using setStorageManagementPolicy and the location of the downloaded asset.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avassetdownloadstoragemanager?language=objc)
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct AVAssetDownloadStorageManager;
);
extern_conformance!(
unsafe impl NSObjectProtocol for AVAssetDownloadStorageManager {}
);
impl AVAssetDownloadStorageManager {
extern_methods!(
/// returns singleton instance.
#[unsafe(method(sharedDownloadStorageManager))]
#[unsafe(method_family = none)]
pub unsafe fn sharedDownloadStorageManager() -> Retained<AVAssetDownloadStorageManager>;
/// Sets the policy for asset with disk backing at downloadStorageURL.
///
/// - Parameter downloadStorageURL: The location of downloaded asset.
#[unsafe(method(setStorageManagementPolicy:forURL:))]
#[unsafe(method_family = none)]
pub unsafe fn setStorageManagementPolicy_forURL(
&self,
storage_management_policy: &AVAssetDownloadStorageManagementPolicy,
download_storage_url: &NSURL,
);
/// Returns the storage management policy for asset downloaded at downloadStorageURL. This may be nil if a storageManagementPolicy was never set on the downloaded asset.
///
/// - Parameter downloadStorageURL: The location of downloaded asset.
#[unsafe(method(storageManagementPolicyForURL:))]
#[unsafe(method_family = none)]
pub unsafe fn storageManagementPolicyForURL(
&self,
download_storage_url: &NSURL,
) -> Option<Retained<AVAssetDownloadStorageManagementPolicy>>;
);
}
/// Methods declared on superclass `NSObject`.
impl AVAssetDownloadStorageManager {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}
extern_class!(
/// A class to inform the system of a policy for automatic purging of downloaded AVAssets.
///
/// System will put in best-effort to evict all the assets based on expirationDate before evicting based on priority.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avassetdownloadstoragemanagementpolicy?language=objc)
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct AVAssetDownloadStorageManagementPolicy;
);
extern_conformance!(
unsafe impl NSCopying for AVAssetDownloadStorageManagementPolicy {}
);
unsafe impl CopyingHelper for AVAssetDownloadStorageManagementPolicy {
type Result = Self;
}
extern_conformance!(
unsafe impl NSMutableCopying for AVAssetDownloadStorageManagementPolicy {}
);
unsafe impl MutableCopyingHelper for AVAssetDownloadStorageManagementPolicy {
type Result = AVMutableAssetDownloadStorageManagementPolicy;
}
extern_conformance!(
unsafe impl NSObjectProtocol for AVAssetDownloadStorageManagementPolicy {}
);
impl AVAssetDownloadStorageManagementPolicy {
extern_methods!(
/// Indicates the eviction priority of downloaded asset.
///
/// Assets with default priority will be purged first before assets with higher priorities.
/// In case this is not set, default priority is used.
#[unsafe(method(priority))]
#[unsafe(method_family = none)]
pub unsafe fn priority(&self) -> Retained<AVAssetDownloadedAssetEvictionPriority>;
/// Returns the expiration date of asset.
#[unsafe(method(expirationDate))]
#[unsafe(method_family = none)]
pub unsafe fn expirationDate(&self) -> Retained<NSDate>;
);
}
/// Methods declared on superclass `NSObject`.
impl AVAssetDownloadStorageManagementPolicy {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}
extern_class!(
/// A mutable subclass of AVAssetDownloadStorageManagementPolicy.
///
/// System will put in best-effort to evict all the assets based on expirationDate before evicting based on priority.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avmutableassetdownloadstoragemanagementpolicy?language=objc)
#[unsafe(super(AVAssetDownloadStorageManagementPolicy, NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct AVMutableAssetDownloadStorageManagementPolicy;
);
extern_conformance!(
unsafe impl NSCopying for AVMutableAssetDownloadStorageManagementPolicy {}
);
unsafe impl CopyingHelper for AVMutableAssetDownloadStorageManagementPolicy {
type Result = AVAssetDownloadStorageManagementPolicy;
}
extern_conformance!(
unsafe impl NSMutableCopying for AVMutableAssetDownloadStorageManagementPolicy {}
);
unsafe impl MutableCopyingHelper for AVMutableAssetDownloadStorageManagementPolicy {
type Result = Self;
}
extern_conformance!(
unsafe impl NSObjectProtocol for AVMutableAssetDownloadStorageManagementPolicy {}
);
impl AVMutableAssetDownloadStorageManagementPolicy {
extern_methods!(
/// Indicates the eviction priority of downloaded asset.
///
/// Assets with default priority will be purged first before assets with higher priorities.
/// In case this is not set, default priority is used.
#[unsafe(method(priority))]
#[unsafe(method_family = none)]
pub unsafe fn priority(&self) -> Retained<AVAssetDownloadedAssetEvictionPriority>;
/// Setter for [`priority`][Self::priority].
///
/// This is [copied][objc2_foundation::NSCopying::copy] when set.
#[unsafe(method(setPriority:))]
#[unsafe(method_family = none)]
pub unsafe fn setPriority(&self, priority: &AVAssetDownloadedAssetEvictionPriority);
/// Returns the expiration date of asset.
#[unsafe(method(expirationDate))]
#[unsafe(method_family = none)]
pub unsafe fn expirationDate(&self) -> Retained<NSDate>;
/// Setter for [`expirationDate`][Self::expirationDate].
///
/// This is [copied][objc2_foundation::NSCopying::copy] when set.
#[unsafe(method(setExpirationDate:))]
#[unsafe(method_family = none)]
pub unsafe fn setExpirationDate(&self, expiration_date: &NSDate);
);
}
/// Methods declared on superclass `NSObject`.
impl AVMutableAssetDownloadStorageManagementPolicy {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}