tuwunel_api/client/admin/federation/
mod.rs1mod destination;
4mod destination_rooms;
5mod list_destinations;
6mod reset_connection;
7
8use ruma::{OwnedServerName, UInt};
9use synapse_admin_api::federation::Destination;
10use tuwunel_service::federation::PeerBackoff;
11
12pub(crate) use self::{
13 destination::admin_destination_details_route,
14 destination_rooms::admin_destination_rooms_route,
15 list_destinations::admin_list_destinations_route,
16 reset_connection::admin_reset_connection_route,
17};
18
19pub(crate) fn destination_from_backoff(
22 destination: OwnedServerName,
23 backoff: Option<PeerBackoff>,
24) -> Destination {
25 let Some(backoff) = backoff else {
26 return Destination::new(destination);
27 };
28
29 Destination {
30 retry_last_ts: millis(backoff.anchor_secs),
31 retry_interval: millis(backoff.delay_secs),
32 failure_ts: Some(millis(backoff.oldest_secs)),
33 ..Destination::new(destination)
34 }
35}
36
37fn millis(secs: u64) -> UInt { UInt::new_saturating(secs.saturating_mul(1000)) }