Skip to content

Commit 6535c38

Browse files
committed
load_balancing: extract plan()'s return type
Introduced a new alias - `Plan`. Its task is to decrease unnecessary verbosity of `LoadBalancingPolicy::plan()` return type: `Box<dyn Iterator<Item = Arc<Node>> + Send + Sync + 'a>` becomes `Plan<'a>`.
1 parent f3d9d1f commit 6535c38

File tree

4 files changed

+10
-28
lines changed

4 files changed

+10
-28
lines changed

scylla/src/transport/load_balancing/dc_aware_round_robin.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use super::{ChildLoadBalancingPolicy, LoadBalancingPolicy, Statement};
1+
use super::{ChildLoadBalancingPolicy, LoadBalancingPolicy, Plan, Statement};
22
use crate::transport::{cluster::ClusterData, node::Node};
33
use std::sync::{
44
atomic::{AtomicUsize, Ordering},
@@ -51,11 +51,7 @@ const EMPTY_NODE_LIST: &Vec<Arc<Node>> = &vec![];
5151
const ORDER_TYPE: Ordering = Ordering::Relaxed;
5252

5353
impl LoadBalancingPolicy for DcAwareRoundRobinPolicy {
54-
fn plan<'a>(
55-
&self,
56-
_statement: &Statement,
57-
cluster: &'a ClusterData,
58-
) -> Box<dyn Iterator<Item = Arc<Node>> + Send + Sync + 'a> {
54+
fn plan<'a>(&self, _statement: &Statement, cluster: &'a ClusterData) -> Plan<'a> {
5955
let index = self.index.fetch_add(1, ORDER_TYPE);
6056

6157
let local_nodes = self.retrieve_local_nodes(cluster);

scylla/src/transport/load_balancing/mod.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,12 @@ pub struct Statement<'a> {
2323
pub keyspace: Option<&'a str>,
2424
}
2525

26+
pub type Plan<'a> = Box<dyn Iterator<Item = Arc<Node>> + Send + Sync + 'a>;
27+
2628
/// Policy that decides which nodes to contact for each query
2729
pub trait LoadBalancingPolicy: Send + Sync {
2830
/// It is used for each query to find which nodes to query first
29-
fn plan<'a>(
30-
&self,
31-
statement: &Statement,
32-
cluster: &'a ClusterData,
33-
) -> Box<dyn Iterator<Item = Arc<Node>> + Send + Sync + 'a>;
31+
fn plan<'a>(&self, statement: &Statement, cluster: &'a ClusterData) -> Plan<'a>;
3432

3533
/// Returns name of load balancing policy
3634
fn name(&self) -> String;

scylla/src/transport/load_balancing/round_robin.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use super::{ChildLoadBalancingPolicy, LoadBalancingPolicy, Statement};
1+
use super::{ChildLoadBalancingPolicy, LoadBalancingPolicy, Plan, Statement};
22
use crate::transport::{cluster::ClusterData, node::Node};
33
use std::sync::{
44
atomic::{AtomicUsize, Ordering},
@@ -28,11 +28,7 @@ impl Default for RoundRobinPolicy {
2828
const ORDER_TYPE: Ordering = Ordering::Relaxed;
2929

3030
impl LoadBalancingPolicy for RoundRobinPolicy {
31-
fn plan<'a>(
32-
&self,
33-
_statement: &Statement,
34-
cluster: &'a ClusterData,
35-
) -> Box<dyn Iterator<Item = Arc<Node>> + Send + Sync + 'a> {
31+
fn plan<'a>(&self, _statement: &Statement, cluster: &'a ClusterData) -> Plan<'a> {
3632
let index = self.index.fetch_add(1, ORDER_TYPE);
3733

3834
let nodes_count = cluster.all_nodes.len();

scylla/src/transport/load_balancing/token_aware.rs

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use super::{ChildLoadBalancingPolicy, LoadBalancingPolicy, Statement};
1+
use super::{ChildLoadBalancingPolicy, LoadBalancingPolicy, Plan, Statement};
22
use crate::routing::Token;
33
use crate::transport::topology::Strategy;
44
use crate::transport::{cluster::ClusterData, node::Node};
@@ -103,11 +103,7 @@ impl TokenAwarePolicy {
103103
}
104104

105105
impl LoadBalancingPolicy for TokenAwarePolicy {
106-
fn plan<'a>(
107-
&self,
108-
statement: &Statement,
109-
cluster: &'a ClusterData,
110-
) -> Box<dyn Iterator<Item = Arc<Node>> + Send + Sync + 'a> {
106+
fn plan<'a>(&self, statement: &Statement, cluster: &'a ClusterData) -> Plan<'a> {
111107
match statement.token {
112108
Some(token) => {
113109
let keyspace = statement.keyspace.and_then(|k| cluster.keyspaces.get(k));
@@ -422,11 +418,7 @@ mod tests {
422418
struct DumbPolicy {}
423419

424420
impl LoadBalancingPolicy for DumbPolicy {
425-
fn plan<'a>(
426-
&self,
427-
_: &Statement,
428-
_: &'a ClusterData,
429-
) -> Box<dyn Iterator<Item = Arc<Node>> + Send + Sync + 'a> {
421+
fn plan<'a>(&self, _: &Statement, _: &'a ClusterData) -> Plan<'a> {
430422
let empty_node_list: Vec<Arc<Node>> = Vec::new();
431423

432424
Box::new(empty_node_list.into_iter())

0 commit comments

Comments
 (0)