1mod pool;
2mod global;
3mod client;
4mod types;
5
6pub use types::{
7 ErebusRequestType,
8 ObjectCacheRequest,
9 UrlCacheRequest,
10 ErebusPackedRequest,
11 ErebusResponse,
12 ObjectCacheResponse,
13 UrlCacheResponse,
14};
15
16use futures_util::{SinkExt, StreamExt};
17use serde::{Deserialize, Serialize};
18use std::future::Future;
19use serde::de::DeserializeOwned;
20
21pub async fn object_cache_get<T: Serialize + DeserializeOwned + ?Sized>(
22 name: String,
23 tags: Vec<String>,
24) -> Result<Option<T>, Box<dyn std::error::Error>> {
25 let x = global::EREBUS_CACHE_POOL.get_instance();
26 let mut y = x.lock().await;
27
28 y.object_cache::<T>(
29 name,
30 tags,
31 None,
32 ).await
33}
34
35pub async fn object_cache_put<T: Serialize + DeserializeOwned + ?Sized>(
36 name: String,
37 tags: Vec<String>,
38 body: T,
39) -> Result<Option<T>, Box<dyn std::error::Error>> {
40 let x = global::EREBUS_CACHE_POOL.get_instance();
41 let mut y = x.lock().await;
42
43 y.object_cache::<T>(
44 name,
45 tags,
46 Some(body),
47 ).await
48}
49
50pub async fn url_cache(
51 request: UrlCacheRequest,
52) -> Result<UrlCacheResponse, Box<dyn std::error::Error>> {
53 let x = global::EREBUS_CACHE_POOL.get_instance();
54 let mut y = x.lock().await;
55
56 y.url_cache(request).await
57}