// file: crates/ksp-app-solprices-desk/src/offchain_runtime.rs // version: 1 //! Config-owned Off-chain Transport bootstrap for SOL Prices Desk. /// Resolved SOL Prices Desk composite and Off-chain Transport configuration retained by application state. pub(crate) struct OffchainTransportStartup { composite_profile_id: String, resolved: ksp_config_lib::ResolvedOffchainTransportConfig, } impl crate::OffchainTransportStartup { /// Returns the composite profile selected for this application launch. #[must_use] pub(crate) fn composite_profile_id(&self) -> &str { return self.composite_profile_id.as_str(); } /// Returns the Config-resolved Off-chain Transport runtime configuration. #[must_use] pub(crate) const fn resolved(&self) -> &ksp_config_lib::ResolvedOffchainTransportConfig { return &self.resolved; } } /// Resolves the composite-selected Off-chain Transport profile and constructs the provider-neutral service owned by Config. pub(crate) fn initialize_offchain_transport(management: &ksp_config_lib::ConfigManagement) -> ksp_core_lib::Result { let environment = ksp_config_lib::ConfigEnvironment::load(); let environment = match environment { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => return std::result::Result::Err(error), }; let composite = crate::load_solprices_desk_composite(management); let composite = match composite { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => return std::result::Result::Err(error), }; let logging_profile = crate::required_composite_component_profile(&composite, crate::COMPOSITE_COMPONENT_ID_LOGGING, ksp_config_lib::FILE_ID_STD_LOGGING); if let std::result::Result::Err(error) = logging_profile { return std::result::Result::Err(error); } let offchain_profile = crate::required_composite_component_profile( &composite, crate::COMPOSITE_COMPONENT_ID_OFFCHAIN_TRANSPORT, ksp_config_lib::FILE_ID_STD_OFFCHAIN_TRANSPORT, ); let offchain_profile = match offchain_profile { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => return std::result::Result::Err(error), }; let resolved = management.engine().resolve_offchain_transport_config_profile(&offchain_profile, &environment); let resolved = match resolved { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => return std::result::Result::Err(error), }; let provider_count = resolved.service().registry().len(); ksp_logging_lib::info!(target: crate::TRACING_TARGET, domain = crate::TRACING_DOMAIN_OFFCHAIN_TRANSPORT, composite_profile = composite.profile_id(), offchain_profile = resolved.profile_id(), provider_count, "initialized SOL Prices Desk Off-chain Transport from composite-managed configuration"); return std::result::Result::Ok(crate::OffchainTransportStartup { composite_profile_id: composite.profile_id().to_owned(), resolved }); }