MARS documentation
Rust librariesmars-serverFederation

mars-server · federation::transport

Public declarations and documentation for mars-server::federation::transport.

Package: mars-server · Workspace version: 0.1.0 · Module: federation::transport

This reference follows declared modules and public syntax, including public implementation methods. Function bodies and constant values are omitted. Feature conditions are retained. Private-module re-exports and trait resolution require the compiler; not every declaration is a root import.

federation::transport::FederationTransportError

Bounded transport failure classes used by circuit-breaker metrics.

#[derive(Debug, Clone, Copy, PartialEq, Eq, thiserror::Error)]
pub enum FederationTransportError {
    #[error("federation request timed out")]
    Timeout,
    #[error("federation peer is unavailable")]
    Unavailable,
    #[error("federation TLS authentication failed")]
    Tls,
    #[error("federation protocol response is invalid")]
    Protocol,
    #[error("federation response exceeded its size limit")]
    ResponseTooLarge,
    #[error("federation operation is unsupported")]
    Unsupported,
}

Source line: 25.

federation::transport::FederationTransportError::as_str

Stable, bounded metric label.

pub const fn as_str(self) -> &'static str;

Source line: 42.

federation::transport::FederationTransport

MARS-owned network boundary for federation.

#[async_trait]
pub trait FederationTransport: Send + Sync {
    async fn sync(
        &self,
        peer: &FederationPeerState,
        request: SignedFederationEnvelope<SyncRequest>,
    ) -> Result<SignedFederationEnvelope<SyncResponse>, FederationTransportError>;

    async fn discover(
        &self,
        peer: &FederationPeerState,
        request: SignedFederationEnvelope<FederatedDiscoveryRequest>,
    ) -> Result<SignedFederationEnvelope<FederatedDiscoveryResponse>, FederationTransportError>;
}

Source line: 56.

federation::transport::FederationTransportRegistry

Immutable-after-startup transport registry for multiple identity-bound peers.

#[derive(Default)]
pub struct FederationTransportRegistry {

}

Source line: 73.

federation::transport::FederationTransportRegistry::new

pub fn new() -> Self;

Source line: 78.

federation::transport::FederationTransportRegistry::register

pub fn register(
        &mut self,
        peer_did: impl Into<String>,
        transport: Arc<dyn FederationTransport>,
    ) -> Result<(), FederationTransportError>;

Source line: 82.

federation::transport::FederationTransportRegistry::len

pub fn len(&self) -> usize;

Source line: 94.

federation::transport::FederationTransportRegistry::is_empty

pub fn is_empty(&self) -> bool;

Source line: 98.

federation::transport::ReqwestFederationTransport

HTTPS transport with DNS answers pinned for the client lifetime.

pub struct ReqwestFederationTransport {

}

Source line: 133.

federation::transport::ReqwestFederationTransport::validate_mtls_files

Parse configured certificate/key/CA material without opening a socket.

pub fn validate_mtls_files(config: &MtlsConfig) -> Result<(), FederationTransportError>;

Source line: 155.

federation::transport::ReqwestFederationTransport::for_peer

Resolve, validate, and pin one peer. No request is issued during construction.

pub async fn for_peer(
        peer: &FederationPeerConfig,
        public_key_base64url: impl Into<String>,
        request_timeout: Duration,
        connect_timeout: Duration,
    ) -> Result<Self, FederationTransportError>;

Source line: 167.

Source provenance

Source: mars-server/src/federation/transport.rs · SHA-256 7152b5ddcd1ea06c2c526873fc8affc4df4d24269516c983b64a967105e15619. Package overview.

On this page