@@ -8,26 +8,34 @@ use crate::{
8
8
types:: { AsB64 , DispersalStatus , EigenDASubmission } ,
9
9
} ;
10
10
11
- pub struct StateListener < EigenDA , Db > {
11
+ pub struct StateListener < EigenDA , Db , Clock > {
12
12
eigenda_adapter : EigenDA ,
13
13
storage : Db ,
14
14
metrics : Metrics ,
15
+ clock : Clock ,
15
16
}
16
17
17
- impl < EigenDA , Db > StateListener < EigenDA , Db > {
18
- pub fn new ( l1_adapter : EigenDA , storage : Db , last_finalization_time_metric : IntGauge ) -> Self {
18
+ impl < EigenDA , Db , Clock > StateListener < EigenDA , Db , Clock > {
19
+ pub fn new (
20
+ l1_adapter : EigenDA ,
21
+ storage : Db ,
22
+ clock : Clock ,
23
+ last_finalization_time_metric : IntGauge ,
24
+ ) -> Self {
19
25
Self {
20
26
eigenda_adapter : l1_adapter,
21
27
storage,
22
28
metrics : Metrics :: new ( last_finalization_time_metric) ,
29
+ clock,
23
30
}
24
31
}
25
32
}
26
33
27
- impl < EigenDA , Db > StateListener < EigenDA , Db >
34
+ impl < EigenDA , Db , Clock > StateListener < EigenDA , Db , Clock >
28
35
where
29
36
EigenDA : crate :: state_listener:: port:: eigen_da:: Api ,
30
37
Db : crate :: state_listener:: port:: Storage ,
38
+ Clock : crate :: state_listener:: port:: Clock ,
31
39
{
32
40
async fn check_non_finalized (
33
41
& self ,
74
82
changes. push ( ( submission_id, DispersalStatus :: Confirmed ) ) ;
75
83
}
76
84
DispersalStatus :: Finalized => {
85
+ let now = self . clock . now ( ) ;
86
+ self . metrics . last_finalization_time . set ( now. timestamp ( ) ) ;
77
87
tracing:: info!(
78
88
"Finalized submission with request_id: {}" ,
79
89
submission. as_base64( ) ,
@@ -104,10 +114,11 @@ where
104
114
}
105
115
}
106
116
107
- impl < EigenDA , Db > Runner for StateListener < EigenDA , Db >
117
+ impl < EigenDA , Db , Clock > Runner for StateListener < EigenDA , Db , Clock >
108
118
where
109
119
EigenDA : crate :: state_listener:: port:: eigen_da:: Api + Send + Sync ,
110
120
Db : crate :: state_listener:: port:: Storage ,
121
+ Clock : crate :: state_listener:: port:: Clock + Send + Sync ,
111
122
{
112
123
async fn run ( & mut self ) -> crate :: Result < ( ) > {
113
124
let non_finalized = self . storage . get_non_finalized_eigen_submission ( ) . await ?;
@@ -134,7 +145,7 @@ struct Metrics {
134
145
last_finalization_interval : IntGauge ,
135
146
}
136
147
137
- impl < L1 , Db > RegistersMetrics for StateListener < L1 , Db > {
148
+ impl < EigenDA , Db , Clock > RegistersMetrics for StateListener < EigenDA , Db , Clock > {
138
149
fn metrics ( & self ) -> Vec < Box < dyn Collector > > {
139
150
vec ! [
140
151
Box :: new( self . metrics. last_eth_block_w_blob. clone( ) ) ,
0 commit comments