pub struct SymbolDistributor {
pub metrics: DistributionMetrics,
/* private fields */
}Expand description
Distributes encoded symbols to replicas.
Handles symbol assignment, distribution, and quorum-based acknowledgement
tracking. The async distribute method is intended for runtime use;
evaluate_outcomes provides a synchronous
test path.
Fields§
§metrics: DistributionMetricsMetrics for distribution operations.
Implementations§
Source§impl SymbolDistributor
impl SymbolDistributor
Sourcepub fn new(config: DistributionConfig) -> Self
pub fn new(config: DistributionConfig) -> Self
Creates a new distributor with the given configuration.
Sourcepub fn config(&self) -> &DistributionConfig
pub fn config(&self) -> &DistributionConfig
Returns a reference to the configuration.
Sourcepub async fn distribute<T: DistributorTransport>(
&mut self,
encoded: &EncodedState,
replicas: &[ReplicaInfo],
transport: &T,
auth_context: &SecurityContext,
) -> DistributionResult
pub async fn distribute<T: DistributorTransport>( &mut self, encoded: &EncodedState, replicas: &[ReplicaInfo], transport: &T, auth_context: &SecurityContext, ) -> DistributionResult
Distributes symbols to replicas using the provided transport.
This orchestrates the assignment, signing, and transmission of symbols.
Sourcepub fn required_acks(
consistency: ConsistencyLevel,
replica_count: usize,
) -> usize
pub fn required_acks( consistency: ConsistencyLevel, replica_count: usize, ) -> usize
Computes the required acknowledgement count for the given consistency level and replica count.
Sourcepub fn compute_assignments(
encoded: &EncodedState,
replicas: &[ReplicaInfo],
) -> Vec<ReplicaAssignment>
pub fn compute_assignments( encoded: &EncodedState, replicas: &[ReplicaInfo], ) -> Vec<ReplicaAssignment>
Computes symbol assignments for the given encoded state and replicas.
Sourcepub fn evaluate_outcomes(
&mut self,
encoded: &EncodedState,
replicas: &[ReplicaInfo],
outcomes: Vec<Outcome<ReplicaAck, ReplicaFailure>>,
duration: Duration,
) -> DistributionResult
pub fn evaluate_outcomes( &mut self, encoded: &EncodedState, replicas: &[ReplicaInfo], outcomes: Vec<Outcome<ReplicaAck, ReplicaFailure>>, duration: Duration, ) -> DistributionResult
Evaluates pre-computed outcomes with quorum semantics.
This is the synchronous core of the distribution logic. The async
distribute method wraps actual I/O around this function.
§Arguments
encoded- The encoded state being distributedreplicas- Target replicas (for computing required acks)outcomes- Pre-computed outcomes from each replicaduration- Time spent distributing