diff --git a/mithril-common/src/messages/epoch_settings.rs b/mithril-common/src/messages/epoch_settings.rs index cd1063fc4c4..51598a49ca7 100644 --- a/mithril-common/src/messages/epoch_settings.rs +++ b/mithril-common/src/messages/epoch_settings.rs @@ -15,6 +15,7 @@ pub struct EpochSettingsMessage { /// Next Protocol parameters #[serde(rename = "next_protocol")] pub next_protocol_parameters: ProtocolParameters, + /// Current Signers pub current_signers: Vec, diff --git a/mithril-signer/src/runtime/runner.rs b/mithril-signer/src/runtime/runner.rs index 08495e018e9..17bdcc3d4a1 100644 --- a/mithril-signer/src/runtime/runner.rs +++ b/mithril-signer/src/runtime/runner.rs @@ -30,19 +30,6 @@ pub trait Runner: Send + Sync { /// Fetch the current time point from the Cardano node. async fn get_current_time_point(&self) -> StdResult; - /// Get the current signers. - /// // TODO return a &Vec - async fn get_current_signers(&self) -> StdResult>; - - /// Get the next signers. - async fn get_next_signers(&self) -> StdResult>; - - /// Get the next signers with their stake. - async fn get_current_signers_with_stake(&self) -> StdResult>; - - /// Get the next signers with their stake. - async fn get_next_signers_with_stake(&self) -> StdResult>; - /// Register the signer verification key to the aggregator. async fn register_signer_to_aggregator(&self) -> StdResult<()>; @@ -110,40 +97,6 @@ impl SignerRunner { pub fn new(config: Configuration, services: SignerDependencyContainer) -> Self { Self { services, config } } -} - -#[cfg_attr(test, automock)] -#[async_trait] -impl Runner for SignerRunner { - async fn get_epoch_settings(&self) -> StdResult> { - debug!("RUNNER: get_epoch_settings"); - - self.services - .certificate_handler - .retrieve_epoch_settings() - .await - .map_err(|e| e.into()) - } - - async fn get_pending_certificate(&self) -> StdResult> { - debug!("RUNNER: get_pending_certificate"); - - self.services - .certificate_handler - .retrieve_pending_certificate() - .await - .map_err(|e| e.into()) - } - - async fn get_current_time_point(&self) -> StdResult { - debug!("RUNNER: get_current_time_point"); - - self.services - .ticker_service - .get_current_time_point() - .await - .with_context(|| "Runner can not get current time point") - } async fn get_current_signers(&self) -> StdResult> { debug!("RUNNER: get_current_signers"); @@ -186,6 +139,40 @@ impl Runner for SignerRunner { .next_signers_with_stake() .await } +} + +#[cfg_attr(test, automock)] +#[async_trait] +impl Runner for SignerRunner { + async fn get_epoch_settings(&self) -> StdResult> { + debug!("RUNNER: get_epoch_settings"); + + self.services + .certificate_handler + .retrieve_epoch_settings() + .await + .map_err(|e| e.into()) + } + + async fn get_pending_certificate(&self) -> StdResult> { + debug!("RUNNER: get_pending_certificate"); + + self.services + .certificate_handler + .retrieve_pending_certificate() + .await + .map_err(|e| e.into()) + } + + async fn get_current_time_point(&self) -> StdResult { + debug!("RUNNER: get_current_time_point"); + + self.services + .ticker_service + .get_current_time_point() + .await + .with_context(|| "Runner can not get current time point") + } async fn register_signer_to_aggregator(&self) -> StdResult<()> { debug!("RUNNER: register_signer_to_aggregator"); diff --git a/mithril-signer/src/services/epoch_service.rs b/mithril-signer/src/services/epoch_service.rs index 62d9ac01ee5..a599063ff21 100644 --- a/mithril-signer/src/services/epoch_service.rs +++ b/mithril-signer/src/services/epoch_service.rs @@ -18,7 +18,7 @@ use crate::RunnerError; #[derive(Debug, Error)] pub enum EpochServiceError { /// Raised when service has not collected data at least once. - #[error("Epoch service was not initialized, the function `inform_epoch` must be called first")] + #[error("Epoch service was not initialized, the function `inform_epoch_settings` must be called first")] NotYetInitialized, } @@ -108,6 +108,7 @@ impl MithrilEpochService { Ok(signers_with_stake) } + fn unwrap_data(&self) -> Result<&EpochData, EpochServiceError> { self.epoch_data .as_ref()