use crate::host::property::PropertyAccessor;
use crate::policy_context::metadata::PolicyMetadata;
use std::rc::Rc;
pub mod api;
pub mod authentication;
#[doc(hidden)]
pub mod metadata;
pub mod policy_violation;
#[doc(hidden)]
pub mod static_policy_context_cache;
const AUTHENTICATION_PROPERTY: &[&str] = &["authentication"];
pub trait PolicyContext {
fn policy_metadata(&self) -> Rc<PolicyMetadata>;
fn connection_properties(&self) -> &dyn PropertyAccessor;
}
impl dyn PolicyContext {
#[allow(clippy::should_implement_trait)]
pub fn default() -> &'static dyn PolicyContext {
&impls::Host
}
}
mod impls {
use super::{metadata::PolicyMetadata, PolicyContext};
use crate::host::property::PropertyAccessor;
use crate::policy_context::static_policy_context_cache::StaticPolicyContextCache;
use std::rc::Rc;
pub(crate) struct Host;
impl PolicyContext for Host {
fn policy_metadata(&self) -> Rc<PolicyMetadata> {
Rc::clone(&StaticPolicyContextCache::read_metadata())
}
fn connection_properties(&self) -> &dyn PropertyAccessor {
<dyn PropertyAccessor>::default()
}
}
}