sui_core/execution_scheduler/
mod.rsuse crate::authority::ExecutionEnv;
pub use execution_scheduler_impl::ExecutionScheduler;
use prometheus::IntGauge;
use sui_types::executable_transaction::VerifiedExecutableTransaction;
use tokio::time::Instant;
pub(crate) mod balance_withdraw_scheduler;
pub(crate) mod execution_scheduler_impl;
mod overload_tracker;
#[derive(Clone, Debug)]
pub struct PendingCertificateStats {
#[allow(unused)]
pub enqueue_time: Instant,
pub ready_time: Option<Instant>,
}
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum SchedulingSource {
MysticetiFastPath,
NonFastPath,
}
#[derive(Debug)]
pub struct PendingCertificate {
pub certificate: VerifiedExecutableTransaction,
pub execution_env: ExecutionEnv,
pub stats: PendingCertificateStats,
pub executing_guard: Option<ExecutingGuard>,
}
#[derive(Debug)]
pub struct ExecutingGuard {
num_executing_certificates: IntGauge,
}
impl ExecutingGuard {
pub fn new(num_executing_certificates: IntGauge) -> Self {
num_executing_certificates.inc();
Self {
num_executing_certificates,
}
}
}
impl Drop for ExecutingGuard {
fn drop(&mut self) {
self.num_executing_certificates.dec();
}
}