use std::sync::Arc;
use crate::core::memory_pool::MemoryPool;
use super::ToolRegistry;
impl ToolRegistry {
pub fn has_optimizations_enabled(&self) -> bool {
self.optimization_config
.tool_registry
.use_optimized_registry
|| self.optimization_config.memory_pool.enabled
}
pub fn memory_pool(&self) -> &Arc<MemoryPool> {
&self.memory_pool
}
pub fn clear_hot_cache(&self) {
if self
.optimization_config
.tool_registry
.use_optimized_registry
{
self.hot_tool_cache.write().clear();
}
}
pub fn hot_cache_stats(&self) -> (usize, usize) {
let cache = self.hot_tool_cache.read();
(cache.len(), cache.cap().get())
}
pub fn configure_optimizations(&mut self, config: vtcode_config::OptimizationConfig) {
self.optimization_config = config;
if self
.optimization_config
.tool_registry
.use_optimized_registry
{
let new_size = self.optimization_config.tool_registry.hot_cache_size;
if let Some(new_cache_size) = std::num::NonZeroUsize::new(new_size) {
*self.hot_tool_cache.write() = lru::LruCache::new(new_cache_size);
}
}
}
pub fn optimization_config(&self) -> &vtcode_config::OptimizationConfig {
&self.optimization_config
}
}