storage_traits/
cache_storage.rs1use std::ops::{Deref, DerefMut};
6
7use malloc_size_of_derive::MallocSizeOf;
8use serde::{Deserialize, Serialize};
9use servo_base::generic_channel::{GenericCallback, GenericSender};
10use servo_url::ImmutableOrigin;
11
12use crate::client_storage::StorageProxyMap;
13
14#[derive(Debug, Deserialize, Serialize)]
15pub enum CacheStorageError<T> {
16 Internal(T),
17}
18
19#[derive(Clone, Debug, Deserialize, MallocSizeOf, Serialize)]
20pub struct CacheStorageThreadHandle {
21 sender: GenericSender<CacheStorageThreadMessage>,
22}
23
24impl CacheStorageThreadHandle {
25 pub fn new(sender: GenericSender<CacheStorageThreadMessage>) -> Self {
26 CacheStorageThreadHandle { sender }
27 }
28}
29
30impl From<CacheStorageThreadHandle> for GenericSender<CacheStorageThreadMessage> {
31 fn from(handle: CacheStorageThreadHandle) -> Self {
32 handle.sender
33 }
34}
35
36impl From<GenericSender<CacheStorageThreadMessage>> for CacheStorageThreadHandle {
37 fn from(sender: GenericSender<CacheStorageThreadMessage>) -> Self {
38 CacheStorageThreadHandle::new(sender)
39 }
40}
41
42impl Deref for CacheStorageThreadHandle {
43 type Target = GenericSender<CacheStorageThreadMessage>;
44
45 fn deref(&self) -> &Self::Target {
46 &self.sender
47 }
48}
49
50impl DerefMut for CacheStorageThreadHandle {
51 fn deref_mut(&mut self) -> &mut Self::Target {
52 &mut self.sender
53 }
54}
55
56#[derive(Clone, Debug, Deserialize, Serialize)]
57pub enum CacheStorageThreadMessage {
58 HasCache {
60 cache_name: String,
61 callback: GenericCallback<CacheStorageThreadResponse>,
62 proxy: StorageProxyMap,
63 origin: ImmutableOrigin,
64 },
65 Exit(GenericSender<()>),
66}
67
68#[derive(Clone, Debug, Deserialize, Serialize)]
69pub enum CacheStorageThreadResponse {
70 HasCacheResult(Result<bool, String>),
71}