massa_versioning/
grpc_mapping.rs

1// Copyright (c) 2023 MASSA LABS <info@massa.net>
2use crate::versioning::{ComponentStateTypeId, MipComponent, MipInfo};
3use massa_proto_rs::massa::model::v1 as grpc_model;
4
5impl From<&ComponentStateTypeId> for grpc_model::ComponentStateId {
6    fn from(value: &ComponentStateTypeId) -> Self {
7        match value {
8            ComponentStateTypeId::Error => grpc_model::ComponentStateId::Error,
9            ComponentStateTypeId::Defined => grpc_model::ComponentStateId::Defined,
10            ComponentStateTypeId::Started => grpc_model::ComponentStateId::Started,
11            ComponentStateTypeId::LockedIn => grpc_model::ComponentStateId::Lockedin,
12            ComponentStateTypeId::Active => grpc_model::ComponentStateId::Active,
13            ComponentStateTypeId::Failed => grpc_model::ComponentStateId::Failed,
14        }
15    }
16}
17
18impl From<&MipComponent> for grpc_model::MipComponent {
19    fn from(value: &MipComponent) -> Self {
20        match value {
21            MipComponent::KeyPair => grpc_model::MipComponent::Keypair,
22            MipComponent::Address => grpc_model::MipComponent::Address,
23            _ => grpc_model::MipComponent::Unspecified,
24        }
25    }
26}
27
28impl From<&MipInfo> for grpc_model::MipInfo {
29    fn from(value: &MipInfo) -> Self {
30        let components = value
31            .components
32            .iter()
33            .map(|(mip_component, version)| grpc_model::MipComponentEntry {
34                kind: grpc_model::MipComponent::from(mip_component).into(),
35                version: *version,
36            })
37            .collect();
38        Self {
39            name: value.name.clone(),
40            version: value.version,
41            start: Some(value.start.into()),
42            timeout: Some(value.timeout.into()),
43            activation_delay: Some(value.activation_delay.into()),
44            components,
45        }
46    }
47}