Skip to content

Commit 056dac3

Browse files
author
Clément TURMEL
committed
refactor: move SignaturePublisher to a dedicated module
1 parent f8f036c commit 056dac3

File tree

7 files changed

+54
-38
lines changed

7 files changed

+54
-38
lines changed

mithril-signer/src/dependency_injection/builder.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ use crate::dependency_injection::SignerDependencyContainer;
4141
use crate::services::{
4242
AggregatorHTTPClient, CardanoTransactionsImporter,
4343
CardanoTransactionsPreloaderActivationSigner, MithrilEpochService, MithrilSingleSigner,
44-
SignerCertifierService, SignerSignableSeedBuilder, SignerSignedEntityConfigProvider,
45-
SignerUpkeepService, TransactionsImporterByChunk, TransactionsImporterWithPruner,
46-
TransactionsImporterWithVacuum,
44+
SignaturePublisher, SignerCertifierService, SignerSignableSeedBuilder,
45+
SignerSignedEntityConfigProvider, SignerUpkeepService, TransactionsImporterByChunk,
46+
TransactionsImporterWithPruner, TransactionsImporterWithVacuum,
4747
};
4848
use crate::store::MKTreeStoreSqlite;
4949
use crate::{
@@ -385,12 +385,15 @@ impl<'a> DependenciesBuilder<'a> {
385385
],
386386
self.root_logger(),
387387
));
388+
389+
let signature_publisher: Arc<dyn SignaturePublisher> = aggregator_client.clone();
390+
388391
let certifier = Arc::new(SignerCertifierService::new(
389392
signed_beacon_repository,
390393
Arc::new(SignerSignedEntityConfigProvider::new(epoch_service.clone())),
391394
signed_entity_type_lock.clone(),
392395
single_signer.clone(),
393-
aggregator_client.clone(),
396+
signature_publisher,
394397
self.root_logger(),
395398
));
396399

mithril-signer/src/services/aggregator_client.rs

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,13 @@ use mithril_common::{
1616
messages::{
1717
AggregatorFeaturesMessage, EpochSettingsMessage, TryFromMessageAdapter, TryToMessageAdapter,
1818
},
19-
StdError, StdResult, MITHRIL_API_VERSION_HEADER, MITHRIL_SIGNER_VERSION_HEADER,
19+
StdError, MITHRIL_API_VERSION_HEADER, MITHRIL_SIGNER_VERSION_HEADER,
2020
};
2121

2222
use crate::entities::SignerEpochSettings;
2323
use crate::message_adapters::{
2424
FromEpochSettingsAdapter, ToRegisterSignatureMessageAdapter, ToRegisterSignerMessageAdapter,
2525
};
26-
use crate::services::SignaturePublisher;
2726

2827
const JSON_CONTENT_TYPE: HeaderValue = HeaderValue::from_static("application/json");
2928

@@ -172,20 +171,6 @@ pub trait AggregatorClient: Sync + Send {
172171
) -> Result<AggregatorFeaturesMessage, AggregatorClientError>;
173172
}
174173

175-
#[async_trait]
176-
impl<T: AggregatorClient> SignaturePublisher for T {
177-
async fn publish(
178-
&self,
179-
signed_entity_type: &SignedEntityType,
180-
signatures: &SingleSignatures,
181-
protocol_message: &ProtocolMessage,
182-
) -> StdResult<()> {
183-
self.register_signatures(signed_entity_type, signatures, protocol_message)
184-
.await?;
185-
Ok(())
186-
}
187-
}
188-
189174
/// AggregatorHTTPClient is a http client for an aggregator
190175
pub struct AggregatorHTTPClient {
191176
aggregator_endpoint: String,

mithril-signer/src/services/certifier.rs

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@ use chrono::Utc;
33
use slog::{debug, Logger};
44
use std::sync::Arc;
55

6-
use mithril_common::entities::{
7-
ProtocolMessage, SignedEntityConfig, SignedEntityType, SingleSignatures, TimePoint,
8-
};
6+
use mithril_common::entities::{ProtocolMessage, SignedEntityConfig, SignedEntityType, TimePoint};
97
use mithril_common::logging::LoggerExtensions;
108
use mithril_common::StdResult;
119
use mithril_signed_entity_lock::SignedEntityTypeLock;
1210

1311
use crate::entities::BeaconToSign;
14-
use crate::services::SingleSigner;
12+
use crate::services::{SignaturePublisher, SingleSigner};
1513

1614
/// Certifier Service
1715
///
@@ -54,19 +52,6 @@ pub trait SignedBeaconStore: Sync + Send {
5452
async fn mark_beacon_as_signed(&self, entity: &BeaconToSign) -> StdResult<()>;
5553
}
5654

57-
/// Publishes computed single signatures to a third party.
58-
#[cfg_attr(test, mockall::automock)]
59-
#[async_trait]
60-
pub trait SignaturePublisher: Send + Sync {
61-
/// Publish computed single signatures.
62-
async fn publish(
63-
&self,
64-
signed_entity_type: &SignedEntityType,
65-
signatures: &SingleSignatures,
66-
protocol_message: &ProtocolMessage,
67-
) -> StdResult<()>;
68-
}
69-
7055
/// Implementation of the [Certifier Service][CertifierService] for the Mithril Signer.
7156
pub struct SignerCertifierService {
7257
signed_beacon_store: Arc<dyn SignedBeaconStore>,
@@ -177,7 +162,7 @@ mod tests {
177162
};
178163
use mithril_common::test_utils::fake_data;
179164

180-
use crate::services::MockSingleSigner;
165+
use crate::services::{MockSignaturePublisher, MockSingleSigner};
181166

182167
use super::{tests::tests_tooling::*, *};
183168

mithril-signer/src/services/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ mod cardano_transactions;
1414
mod certifier;
1515
mod epoch_service;
1616
mod signable_builder;
17+
mod signature_publisher;
1718
mod single_signer;
1819
mod upkeep_service;
1920

@@ -24,5 +25,6 @@ pub use cardano_transactions::*;
2425
pub use certifier::*;
2526
pub use epoch_service::*;
2627
pub use signable_builder::*;
28+
pub use signature_publisher::*;
2729
pub use single_signer::*;
2830
pub use upkeep_service::*;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
use async_trait::async_trait;
2+
use mithril_common::entities::{ProtocolMessage, SignedEntityType, SingleSignatures};
3+
use mithril_common::StdResult;
4+
5+
use crate::services::AggregatorClient;
6+
7+
use super::SignaturePublisher;
8+
9+
#[async_trait]
10+
impl<T: AggregatorClient> SignaturePublisher for T {
11+
async fn publish(
12+
&self,
13+
signed_entity_type: &SignedEntityType,
14+
signature: &SingleSignatures,
15+
protocol_message: &ProtocolMessage,
16+
) -> StdResult<()> {
17+
self.register_signatures(signed_entity_type, signature, protocol_message)
18+
.await?;
19+
Ok(())
20+
}
21+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
use async_trait::async_trait;
2+
use mithril_common::entities::{ProtocolMessage, SignedEntityType, SingleSignatures};
3+
use mithril_common::StdResult;
4+
5+
/// Publishes computed single signature to a third party.
6+
#[cfg_attr(test, mockall::automock)]
7+
#[async_trait]
8+
pub trait SignaturePublisher: Send + Sync {
9+
/// Publish computed single signature.
10+
async fn publish(
11+
&self,
12+
signed_entity_type: &SignedEntityType,
13+
signature: &SingleSignatures,
14+
protocol_message: &ProtocolMessage,
15+
) -> StdResult<()>;
16+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
mod http;
2+
mod interface;
3+
4+
pub use interface::*;

0 commit comments

Comments
 (0)