1
1
use std:: sync:: Arc ;
2
2
3
- use async_trait:: async_trait;
4
- use mithril_common:: {
3
+ use crate :: {
5
4
digesters:: ImmutableDigester ,
6
5
entities:: { Beacon , ProtocolMessage , ProtocolMessagePartKey } ,
7
6
signable_builder:: SignableBuilder ,
8
7
StdResult ,
9
8
} ;
9
+ use async_trait:: async_trait;
10
+ use slog:: { debug, info, Logger } ;
10
11
11
- /// A [SignableBuilder] for cardano immutable files.
12
- pub struct ImmutableSignableBuilder {
12
+ /// This structure is responsible of calculating the message for Cardano immutable files snapshots .
13
+ pub struct CardanoImmutableFilesFullSignableBuilder {
13
14
immutable_digester : Arc < dyn ImmutableDigester > ,
15
+ logger : Logger ,
14
16
}
15
17
16
- impl ImmutableSignableBuilder {
18
+ impl CardanoImmutableFilesFullSignableBuilder {
17
19
/// Constructor
18
- pub fn new ( immutable_digester : Arc < dyn ImmutableDigester > ) -> Self {
19
- Self { immutable_digester }
20
+ pub fn new ( immutable_digester : Arc < dyn ImmutableDigester > , logger : Logger ) -> Self {
21
+ Self {
22
+ immutable_digester,
23
+ logger,
24
+ }
20
25
}
21
26
}
22
27
23
28
#[ async_trait]
24
- impl SignableBuilder < Beacon , ProtocolMessage > for ImmutableSignableBuilder {
29
+ impl SignableBuilder < Beacon , ProtocolMessage > for CardanoImmutableFilesFullSignableBuilder {
25
30
async fn compute_signable ( & self , beacon : Beacon ) -> StdResult < ProtocolMessage > {
31
+ debug ! ( self . logger, "SignableBuilder::compute_signable({beacon:?})" ) ;
26
32
let digest = self . immutable_digester . compute_digest ( & beacon) . await ?;
33
+ info ! ( self . logger, "SignableBuilder: digest = '{digest}'." ) ;
27
34
let mut protocol_message = ProtocolMessage :: new ( ) ;
28
35
protocol_message. set_message_part ( ProtocolMessagePartKey :: SnapshotDigest , digest) ;
29
36
@@ -35,9 +42,10 @@ impl SignableBuilder<Beacon, ProtocolMessage> for ImmutableSignableBuilder {
35
42
mod tests {
36
43
use super :: * ;
37
44
45
+ use crate :: digesters:: { ImmutableDigester , ImmutableDigesterError } ;
46
+ use crate :: entities:: Beacon ;
38
47
use async_trait:: async_trait;
39
- use mithril_common:: digesters:: { ImmutableDigester , ImmutableDigesterError } ;
40
- use mithril_common:: entities:: Beacon ;
48
+ use slog:: Drain ;
41
49
42
50
#[ derive( Default ) ]
43
51
pub struct ImmutableDigesterImpl ;
@@ -48,10 +56,18 @@ mod tests {
48
56
Ok ( format ! ( "immutable {}" , beacon. immutable_file_number) )
49
57
}
50
58
}
59
+
60
+ fn create_logger ( ) -> slog:: Logger {
61
+ let decorator = slog_term:: PlainDecorator :: new ( slog_term:: TestStdoutWriter ) ;
62
+ let drain = slog_term:: CompactFormat :: new ( decorator) . build ( ) . fuse ( ) ;
63
+ let drain = slog_async:: Async :: new ( drain) . build ( ) . fuse ( ) ;
64
+ slog:: Logger :: root ( Arc :: new ( drain) , slog:: o!( ) )
65
+ }
51
66
#[ tokio:: test]
52
67
async fn compute_signable ( ) {
53
68
let digester = ImmutableDigesterImpl :: default ( ) ;
54
- let signable_builder = ImmutableSignableBuilder :: new ( Arc :: new ( digester) ) ;
69
+ let signable_builder =
70
+ CardanoImmutableFilesFullSignableBuilder :: new ( Arc :: new ( digester) , create_logger ( ) ) ;
55
71
let protocol_message = signable_builder
56
72
. compute_signable ( Beacon :: default ( ) )
57
73
. await
0 commit comments