pub fn create_policy_from_config<Src, Dst>(
config: &TierOffloadConfig,
registry: Arc<BlockRegistry>,
pending_tracker: Option<Arc<PendingTracker>>,
) -> Arc<dyn OffloadPolicy<Src>> ⓘwhere
Src: BlockMetadata + 'static,
Dst: BlockMetadata + 'static,Expand description
Create a composite policy from tier configuration.
Policies are applied in order with AND logic - blocks must pass all policies.
Returns PassAllPolicy if no policies are configured.
When a pending_tracker is provided, it is automatically wired into
Presence and PresenceLfu policies to enable duplicate prevention
for blocks currently in-flight through the pipeline.
§Example
ⓘ
use kvbm_config::offload::TierOffloadConfig;
let tracker = Arc::new(PendingTracker::new());
let config = TierOffloadConfig {
policies: vec![PolicyType::Presence, PolicyType::PresenceLfu],
presence_lfu: PresenceLfuFilterConfig { min_lfu_count: 8 },
..Default::default()
};
// Pending tracker is automatically wired into presence-based policies
let policy = create_policy_from_config::<G2, G3>(&config, registry.clone(), Some(tracker));