use pezsp_runtime::{
codec::{Decode, Encode},
RuntimeDebug,
};
use scale_info::TypeInfo;
use pezkuwi_primitives::{CoreIndex, Id as ParaId};
#[derive(Encode, Decode, TypeInfo, RuntimeDebug, Clone, PartialEq)]
pub enum Assignment {
Pool {
para_id: ParaId,
core_index: CoreIndex,
},
Bulk(ParaId),
}
impl Assignment {
pub fn para_id(&self) -> ParaId {
match self {
Self::Pool { para_id, .. } => *para_id,
Self::Bulk(para_id) => *para_id,
}
}
}
pub trait AssignmentProvider<BlockNumber> {
fn pop_assignment_for_core(core_idx: CoreIndex) -> Option<Assignment>;
fn report_processed(assignment: Assignment);
fn push_back_assignment(assignment: Assignment);
#[cfg(any(feature = "runtime-benchmarks", test))]
fn get_mock_assignment(core_idx: CoreIndex, para_id: ParaId) -> Assignment;
fn assignment_duplicated(assignment: &Assignment);
}