@@ -38,10 +38,20 @@ use tokio::{
38
38
time:: Sleep ,
39
39
} ;
40
40
41
- trait PortClock : Clock < Error = <LinuxClock as Clock >:: Error > + PortTimestampToTime { }
42
- impl PortClock for LinuxClock { }
43
- impl PortClock for SharedClock < OverlayClock < LinuxClock > > { }
44
- type BoxedClock = Box < dyn PortClock + Send + Sync > ;
41
+ trait PortClock : Clock < Error = <LinuxClock as Clock >:: Error > + PortTimestampToTime + Send + Sync {
42
+ fn clone_box ( & self ) -> Box < dyn PortClock > ;
43
+ }
44
+ impl PortClock for LinuxClock {
45
+ fn clone_box ( & self ) -> Box < dyn PortClock > {
46
+ Box :: new ( self . clone ( ) )
47
+ }
48
+ }
49
+ impl PortClock for SharedClock < OverlayClock < LinuxClock > > {
50
+ fn clone_box ( & self ) -> Box < dyn PortClock > {
51
+ Box :: new ( self . clone ( ) )
52
+ }
53
+ }
54
+ type BoxedClock = Box < dyn PortClock > ;
45
55
type SharedOverlayClock = SharedClock < OverlayClock < LinuxClock > > ;
46
56
47
57
#[ derive( Parser , Debug ) ]
@@ -305,7 +315,7 @@ async fn actual_main() {
305
315
for port_config in config. ports {
306
316
let interface = port_config. interface ;
307
317
let network_mode = port_config. network_mode ;
308
- let ( port_clock, port_clock2 , timestamping) = match port_config. hardware_clock {
318
+ let ( port_clock, timestamping) = match port_config. hardware_clock {
309
319
Some ( idx) => {
310
320
let mut clock = LinuxClock :: open_idx ( idx) . expect ( "Unable to open clock" ) ;
311
321
if let Some ( id) = clock_name_map. get ( & idx) {
@@ -319,15 +329,13 @@ async fn actual_main() {
319
329
. push ( start_clock_task ( clock. clone ( ) , system_clock. clone ( ) ) ) ;
320
330
}
321
331
(
322
- Box :: new ( clock. clone ( ) ) as BoxedClock ,
323
332
Box :: new ( clock) as BoxedClock ,
324
333
InterfaceTimestampMode :: HardwarePTPAll ,
325
334
)
326
335
}
327
336
None => {
328
337
clock_port_map. push ( None ) ;
329
338
(
330
- system_clock. clone_boxed ( ) ,
331
339
system_clock. clone_boxed ( ) ,
332
340
InterfaceTimestampMode :: SoftwareAll ,
333
341
)
@@ -339,7 +347,7 @@ async fn actual_main() {
339
347
let port = instance. add_port (
340
348
port_config. into ( ) ,
341
349
KalmanConfiguration :: default ( ) ,
342
- port_clock2 ,
350
+ port_clock . clone_box ( ) ,
343
351
rng,
344
352
) ;
345
353
0 commit comments