use anyhow::Result;
use async_trait::async_trait;
use crate::codec::message::RequestInfo;
use crate::specs::message::Message;
#[async_trait]
pub trait DnsCache {
async fn fetch(&mut self, request_info: RequestInfo) -> Result<Option<Message>>;
async fn store(&mut self, request_info: RequestInfo, response: Message) -> Result<()>;
}
pub mod memory;
pub mod redis;
pub mod task;
fn cache_key(request_info: &RequestInfo) -> String {
format!(
"{:?}__do{}__{}",
request_info.resource_type, request_info.dnssec_ok as u8, request_info.name
)
}