use async_trait::async_trait;
use peace_resources::states::{
StateDiffs, StatesCleaned, StatesCleanedDry, StatesDesired, StatesEnsured, StatesEnsuredDry,
StatesSaved,
};
cfg_if::cfg_if! {
if #[cfg(feature = "output_progress")] {
use peace_core::progress::{ProgressTracker, ProgressUpdateAndId};
use crate::CmdProgressTracker;
}
}
#[async_trait(?Send)]
pub trait OutputWrite<E> {
#[cfg(feature = "output_progress")]
async fn progress_begin(&mut self, cmd_progress_tracker: &CmdProgressTracker);
#[cfg(feature = "output_progress")]
async fn progress_update(
&mut self,
progress_tracker: &ProgressTracker,
progress_update_and_id: &ProgressUpdateAndId,
);
#[cfg(feature = "output_progress")]
async fn progress_end(&mut self, cmd_progress_tracker: &CmdProgressTracker);
async fn write_states_saved(&mut self, states_saved: &StatesSaved) -> Result<(), E>
where
E: std::error::Error;
async fn write_states_desired(&mut self, states_desired: &StatesDesired) -> Result<(), E>
where
E: std::error::Error;
async fn write_state_diffs(&mut self, state_diffs: &StateDiffs) -> Result<(), E>
where
E: std::error::Error;
async fn write_states_ensured_dry(
&mut self,
states_ensured_dry: &StatesEnsuredDry,
) -> Result<(), E>
where
E: std::error::Error;
async fn write_states_ensured(&mut self, states_ensured: &StatesEnsured) -> Result<(), E>
where
E: std::error::Error;
async fn write_states_cleaned_dry(
&mut self,
states_cleaned_dry: &StatesCleanedDry,
) -> Result<(), E>
where
E: std::error::Error;
async fn write_states_cleaned(&mut self, states_cleaned: &StatesCleaned) -> Result<(), E>
where
E: std::error::Error;
async fn write_err(&mut self, error: &E) -> Result<(), E>
where
E: std::error::Error;
}