dope-core 0.15.1

The manifold runtime
Documentation
use std::io;

use crate::driver::settings;

mod credits;
mod files;
mod maintenance;
mod outbound;
mod ready;
mod receive;
mod scheduler;

pub(in crate::driver) use credits::Credits;
pub use files::Files;
pub use maintenance::Maintenance;
pub use outbound::Outbound;
pub use ready::Ready;
pub use receive::Receive;
pub use scheduler::Scheduler;

pub(in crate::driver) struct Shared {
    scheduling: scheduler::State,
    receive: receive::State,
    maintenance: maintenance::State,
    files: files::State,
}

impl Shared {
    pub(in crate::driver) fn try_new(
        file_slots: settings::FileSlots,
        dynamic_slots: settings::ScheduleCapacity,
        receive: settings::Receive,
    ) -> io::Result<Self> {
        Ok(Self {
            scheduling: scheduler::State::try_new(file_slots, dynamic_slots)?,
            receive: receive::State::try_new(receive)?,
            maintenance: maintenance::State::try_new(file_slots)?,
            files: files::State::try_new(file_slots)?,
        })
    }
}