Skip to main content

RelayManager

Struct RelayManager 

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

Relay manager for promotion and demotion logic.

Implementations§

Source§

impl RelayManager

Source

pub fn new() -> Self

Creates a new relay manager with default configuration.

Source

pub fn with_config(config: RelayConfig) -> Self

Creates a new relay manager with custom configuration.

Source

pub fn should_promote_to_relay( &self, connection_count: usize, battery_level: u8, is_charging: bool, ) -> bool

Checks if this device should be promoted to relay role.

§Arguments
  • connection_count - Number of active connections
  • battery_level - Current battery level (0-100)
  • is_charging - Whether the device is charging
§Returns

Returns true if the device should become a relay.

Source

pub fn should_demote_from_relay( &self, connection_count: usize, battery_level: u8, is_charging: bool, ) -> bool

Checks if this device should be demoted from relay role.

§Arguments
  • connection_count - Number of active connections
  • battery_level - Current battery level (0-100)
  • is_charging - Whether the device is charging
§Returns

Returns true if the device should stop being a relay.

Source

pub fn evaluate_transition( &mut self, connection_count: usize, battery_level: u8, is_charging: bool, ) -> Option<RelayTransition>

Evaluates whether the relay role should change and, if so, applies the change and returns the transition that occurred.

This is the single entry point that mutates RelayRole: it compares the promote/demote decision against the current role and only returns Some when the role actually flips, so callers can emit a role-change event exactly once per transition. A stable role returns None.

Source

pub fn calculate_relay_score(&self, relay: &RelayInfo) -> f32

Calculates a score for a potential relay.

Higher score = better relay candidate.

Source

pub fn select_best_relays( &self, candidates: Vec<RelayInfo>, count: usize, max_congestion_level: f32, ) -> Vec<RelayInfo>

Selects the best relays from a list of candidates.

§Arguments
  • candidates - List of potential relays
  • count - Number of relays to select
  • max_congestion_level - Congestion level (0.0-1.0) at or above which a candidate is considered overloaded and excluded; pass the caller’s path policy (e.g. PathConfig::max_congestion_level)
§Returns

Returns up to count relay candidates, sorted by score (best first).

Source

pub fn current_role(&self) -> RelayRole

Gets the current relay role.

Source

pub fn set_role(&mut self, role: RelayRole)

Sets the current relay role.

Source

pub fn config(&self) -> &RelayConfig

Gets the relay configuration.

Trait Implementations§

Source§

impl Default for RelayManager

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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<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