Skip to main content

FederationManager

Struct FederationManager 

Source
pub struct FederationManager { /* private fields */ }
Expand description

Federation manager that coordinates all peer connections.

The manager maintains a set of federation links and a namespace registry, routing messages to the appropriate peers based on address patterns.

Implementations§

Source§

impl FederationManager

Source

pub fn new(config: FederationConfig) -> Self

Create a new federation manager

Source

pub fn event_sender(&self) -> Sender<LinkEvent>

Get the event sender for creating new links

Source

pub fn take_event_receiver(&mut self) -> Option<Receiver<LinkEvent>>

Take the event receiver (can only be called once).

The caller should process events in a loop to handle messages from federation peers.

Create a federation link for an established transport connection.

The link will perform the CLASP handshake, exchange federation metadata, and begin relaying messages. Call link.run(receiver) to start it.

Source

pub async fn process_event(&self, event: &LinkEvent)

Process a link event, updating internal state.

Call this for each event received from take_event_receiver(). Returns the event for further processing by the router.

Source

pub async fn should_forward(&self, address: &str, origin: Option<&str>) -> bool

Check if an address should be forwarded to federation peers

Source

pub async fn peers_for_address( &self, address: &str, exclude_origin: Option<&str>, ) -> Vec<String>

Get peers that should receive a message for the given address

Source

pub async fn peer_info(&self, router_id: &str) -> Option<PeerInfo>

Get information about a peer

Source

pub async fn active_peers(&self) -> Vec<PeerInfo>

Get all active peers

Source

pub async fn peer_count(&self) -> usize

Get peer count

Source

pub fn mode(&self) -> &FederationMode

Get the federation mode

Source

pub fn router_id(&self) -> &str

Get the local router ID

Source

pub fn owned_namespaces(&self) -> &[String]

Get local namespace patterns

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more