mod spmd;
use std::sync::Arc;
use super::{
ImportMetadataResponse, SerializedLayout, SerializedLayoutResponse, Worker, WorkerTransfers, *,
};
use crate::object::ObjectBlockOps;
use anyhow::Result;
pub use spmd::SpmdParallelWorkers;
pub trait ParallelWorkers: WorkerTransfers + ObjectBlockOps + Send + Sync {
fn export_metadata(&self) -> Result<Vec<SerializedLayoutResponse>>;
fn import_metadata(
&self,
metadata: Vec<SerializedLayout>,
) -> Result<Vec<ImportMetadataResponse>>;
fn worker_count(&self) -> usize;
fn workers(&self) -> &[Arc<dyn Worker>];
}