Skip to main content Module send Copy item path Source use std::collections::BTreeMap ; π use std::iter::once ; π use std::net::IpAddr ; π use std::sync::atomic::AtomicBool ; π use std::sync::atomic::Ordering ; π use std::time::Duration ; π use std::time::Instant ; π use axum::extract::State; π use futures::FutureExt; π use futures::Stream; π use futures::StreamExt; π use futures::TryFutureExt; π use futures::TryStreamExt; π use ruma::CanonicalJsonObject; π use ruma::CanonicalJsonValue; π use ruma::MilliSecondsSinceUnixEpoch; π use ruma::OwnedDeviceId; π use ruma::OwnedEventId; π use ruma::OwnedRoomId; π use ruma::OwnedUserId; π use ruma::RoomId; π use ruma::ServerName; π use ruma::TransactionId; π use ruma::UserId; π use ruma::api::error::ErrorKind; π use ruma::api::federation::transactions::edu::DeviceListUpdateContent; π use ruma::api::federation::transactions::edu::DirectDeviceContent; π use ruma::api::federation::transactions::edu::Edu; π use ruma::api::federation::transactions::edu::PresenceContent; π use ruma::api::federation::transactions::edu::PresenceUpdate; π use ruma::api::federation::transactions::edu::ReceiptContent; π use ruma::api::federation::transactions::edu::ReceiptData; π use ruma::api::federation::transactions::edu::ReceiptMap; π use ruma::api::federation::transactions::edu::SigningKeyUpdateContent; π use ruma::api::federation::transactions::edu::TypingContent; π use ruma::api::federation::transactions::send_transaction_message; π use ruma::events::receipt::ReceiptEvent; π use ruma::events::receipt::ReceiptEventContent; π use ruma::events::receipt::ReceiptType; π use ruma::int; π use ruma::serde::Raw; π use ruma::to_device::DeviceIdOrAllDevices; π use ruma::uint; π use tuwunel_core::Err ; π use tuwunel_core::Error ; π use tuwunel_core::Result ; π use tuwunel_core::debug ; π use tuwunel_core::debug ; π use tuwunel_core::debug::INFO_SPAN_LEVEL ; π use tuwunel_core::debug_warn ; π use tuwunel_core::defer ; π use tuwunel_core::err ; π use tuwunel_core::error ; π use tuwunel_core::error ; π use tuwunel_core::itertools::Itertools; π use tuwunel_core::result::LogErr ; π use tuwunel_core::smallvec::SmallVec; π use tuwunel_core::trace ; π use tuwunel_core::utils::debug::str_truncated ; π use tuwunel_core::utils::future::TryExtExt ; π use tuwunel_core::utils::millis_since_unix_epoch ; π use tuwunel_core::utils::stream::BroadbandExt ; π use tuwunel_core::utils::stream::IterStream ; π use tuwunel_core::utils::stream::ReadyExt ; π use tuwunel_core::utils::stream::TryBroadbandExt ; π use tuwunel_core::utils::stream::automatic_width ; π use tuwunel_core::warn ; π use tuwunel_matrix::room::state::resolution::is_topologically_sorted_in_place ; π use tuwunel_matrix::room::state::resolution::topological_sort ; π use tuwunel_matrix::room::state::resolution::topological_sort ; π use tuwunel_service::Services ; π use tuwunel_service::sending::EDU_LIMIT ; π use tuwunel_service::sending::PDU_LIMIT ; π use tuwunel_service::users::DeviceListChange ; π use crate::ClientIp ; π use crate::Ruma ; π already_sorted π Whether the batch is already in causal order, in which case the sort can be
skipped. handle π handle_edu π handle_edu_device_list_update π handle_edu_direct_to_device π handle_edu_direct_to_device_event π handle_edu_direct_to_device_user π handle_edu_presence π handle_edu_presence_update π handle_edu_receipt π handle_edu_receipt_room π handle_edu_receipt_room_user π handle_edu_signing_key_update π handle_edu_typing π handle_edus π handle_pdu π handle_pdus π handle_room π prev_event_ids π The prev_events of a PDU held as canonical JSON. send_transaction_message_route π PUT /_matrix/federation/v1/send/{txnId}sort_pdus π Reorder a roomβs transaction PDUs so each event follows the in-batch events
it references. An already-ordered batch is returned unchanged; references to
events outside the batch are non-edges. The sort is an optimization, so a
failure falls back to the arrival order. to_device_deliverable π A local account we store or forward to-device events for. Deliveries π Recipient devices of one AllDevices to-device send paired with their
inbox counts. Pdu π ResolvedMap π RoomPdus π RoomsPdus π TxnPdus π