feat: add finalization state management for meta plugins

Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat>
This commit is contained in:
Andrew Phillips
2025-08-26 18:23:17 -03:00
parent bd879100be
commit 4b66b094d5

View File

@@ -126,22 +126,16 @@ impl MetaService {
) { ) {
for meta_plugin in plugins.iter_mut() { for meta_plugin in plugins.iter_mut() {
// Skip plugins that are already finalized // Skip plugins that are already finalized
if let Some(internal_plugin) = meta_plugin.as_any_mut().downcast_mut::<crate::meta_plugin::BinaryMetaPlugin>() { if meta_plugin.is_finalized() {
if internal_plugin.is_finalized() {
continue; continue;
} }
}
// Add similar checks for other internal plugin types as needed
let response = meta_plugin.update(chunk); let response = meta_plugin.update(chunk);
self.process_plugin_response(conn, item_id, meta_plugin, response); self.process_plugin_response(conn, item_id, meta_plugin, response);
// Set finalized flag if response indicates finalization // Set finalized flag if response indicates finalization
if response.is_finalized { if response.is_finalized {
if let Some(internal_plugin) = meta_plugin.as_any_mut().downcast_mut::<crate::meta_plugin::BinaryMetaPlugin>() { meta_plugin.set_finalized(true);
internal_plugin.set_finalized(true);
}
// Add similar checks for other internal plugin types as needed
} }
} }
} }
@@ -149,22 +143,16 @@ impl MetaService {
pub fn finalize_plugins(&self, plugins: &mut [Box<dyn MetaPlugin>], conn: &Connection, item_id: i64) { pub fn finalize_plugins(&self, plugins: &mut [Box<dyn MetaPlugin>], conn: &Connection, item_id: i64) {
for meta_plugin in plugins.iter_mut() { for meta_plugin in plugins.iter_mut() {
// Skip plugins that are already finalized // Skip plugins that are already finalized
if let Some(internal_plugin) = meta_plugin.as_any_mut().downcast_mut::<crate::meta_plugin::BinaryMetaPlugin>() { if meta_plugin.is_finalized() {
if internal_plugin.is_finalized() {
continue; continue;
} }
}
// Add similar checks for other internal plugin types as needed
let response = meta_plugin.finalize(); let response = meta_plugin.finalize();
self.process_plugin_response(conn, item_id, meta_plugin, response); self.process_plugin_response(conn, item_id, meta_plugin, response);
// Set finalized flag if response indicates finalization // Set finalized flag if response indicates finalization
if response.is_finalized { if response.is_finalized {
if let Some(internal_plugin) = meta_plugin.as_any_mut().downcast_mut::<crate::meta_plugin::BinaryMetaPlugin>() { meta_plugin.set_finalized(true);
internal_plugin.set_finalized(true);
}
// Add similar checks for other internal plugin types as needed
} }
} }
} }