use crate::cache::resolution_result_cache::ResolutionResultCache;
use polywrap_core::error::Error;
use polywrap_core::resolution::uri_resolution_context::UriPackageOrWrapper;
use polywrap_core::uri::Uri;
use std::collections::HashMap;
use std::sync::Arc;
pub struct BasicResolutionResultCache {
cache: HashMap<Uri, Arc<Result<UriPackageOrWrapper, Error>>>,
}
impl BasicResolutionResultCache {
pub fn new() -> BasicResolutionResultCache {
BasicResolutionResultCache {
cache: HashMap::new(),
}
}
}
impl ResolutionResultCache for BasicResolutionResultCache {
fn get(&self, uri: &Uri) -> Option<&Arc<Result<UriPackageOrWrapper, Error>>> {
self.cache.get(uri)
}
fn set(&mut self, uri: Uri, result: Arc<Result<UriPackageOrWrapper, Error>>) {
self.cache.insert(uri, result);
}
}