use rf_core::context::Context;
use crate::discovery::Discovery;
use crate::discovery::nbr_sensors_setup::NbrSensorSetup;
use crate::mailbox::Mailbox;
pub mod sync;
pub mod asynchronous;
pub struct PlatformFactory;
impl PlatformFactory {
    pub fn sync_platform(
        mailbox: Box<dyn Mailbox>,
        network: Box<dyn crate::network::sync::Network>,
        context: Context,
        discovery: Box<dyn Discovery>,
        setup: Box<dyn NbrSensorSetup>,
    ) -> sync::SyncRuFiPlatform {
        sync::SyncRuFiPlatform::new(mailbox, network, context, discovery, setup)
    }
    pub fn async_platform(
        mailbox: Box<dyn Mailbox>,
        network: Box<dyn crate::network::asynchronous::Network>,
        context: Context,
        discovery: Box<dyn Discovery>,
        setup: Box<dyn NbrSensorSetup>,
    ) -> asynchronous::RuFiPlatform {
        asynchronous::RuFiPlatform::new(mailbox, network, context, discovery, setup)
    }
}