mithril_signer/message_adapters/
from_epoch_settings.rs1use anyhow::Context;
2use mithril_common::{
3 messages::{EpochSettingsMessage, SignerMessagePart, TryFromMessageAdapter},
4 StdResult,
5};
6
7use crate::entities::SignerEpochSettings;
8
9pub struct FromEpochSettingsAdapter;
11
12impl TryFromMessageAdapter<EpochSettingsMessage, SignerEpochSettings> for FromEpochSettingsAdapter {
13 fn try_adapt(message: EpochSettingsMessage) -> StdResult<SignerEpochSettings> {
15 let epoch_settings = SignerEpochSettings {
16 epoch: message.epoch,
17 registration_protocol_parameters: message.signer_registration_protocol_parameters,
18 current_signers: SignerMessagePart::try_into_signers(message.current_signers)
19 .with_context(|| "'FromMessageAdapter' can not convert the current signers")?,
20 next_signers: SignerMessagePart::try_into_signers(message.next_signers)
21 .with_context(|| "'FromMessageAdapter' can not convert the next signers")?,
22 cardano_transactions_signing_config: message.cardano_transactions_signing_config,
23 next_cardano_transactions_signing_config: message
24 .next_cardano_transactions_signing_config,
25 };
26 Ok(epoch_settings)
27 }
28}
29
30#[cfg(test)]
31mod tests {
32 use super::*;
33
34 #[test]
35 fn try_adapt_epoch_settings_message_to_entity() {
36 let message = EpochSettingsMessage::dummy();
37 let epoch = message.epoch;
38 let epoch_settings = FromEpochSettingsAdapter::try_adapt(message).unwrap();
39
40 assert_eq!(epoch, epoch_settings.epoch);
41 }
42}