From 5c34ad92c1ca185cf8af5d88657a6f3e5def437b Mon Sep 17 00:00:00 2001 From: Lucas Kent Date: Tue, 7 Feb 2023 11:21:44 +1100 Subject: [PATCH] TransformBuilder::build takes &self intead of self --- .../transforms/cassandra/sink_cluster/mod.rs | 18 ++++---- shotover-proxy/src/transforms/chain.rs | 4 +- shotover-proxy/src/transforms/load_balance.rs | 6 +-- shotover-proxy/src/transforms/mod.rs | 44 ++++++++++--------- shotover-proxy/src/transforms/parallel_map.rs | 4 +- shotover-proxy/src/transforms/redis/cache.rs | 6 +-- 6 files changed, 43 insertions(+), 39 deletions(-) diff --git a/shotover-proxy/src/transforms/cassandra/sink_cluster/mod.rs b/shotover-proxy/src/transforms/cassandra/sink_cluster/mod.rs index 52e39ffa1..75d4f5055 100644 --- a/shotover-proxy/src/transforms/cassandra/sink_cluster/mod.rs +++ b/shotover-proxy/src/transforms/cassandra/sink_cluster/mod.rs @@ -172,25 +172,25 @@ impl CassandraSinkClusterBuilder { true } - pub fn build(self) -> Box { + pub fn build(&self) -> Box { Box::new(CassandraSinkCluster { - contact_points: self.contact_points, - shotover_peers: self.shotover_peers, + contact_points: self.contact_points.clone(), + shotover_peers: self.shotover_peers.clone(), control_connection: None, connection_factory: self.connection_factory.new_with_same_config(), control_connection_address: None, init_handshake_complete: false, version: None, - failed_requests: self.failed_requests, + failed_requests: self.failed_requests.clone(), read_timeout: self.read_timeout, - local_shotover_node: self.local_shotover_node, - pool: self.pool, + local_shotover_node: self.local_shotover_node.clone(), + pool: self.pool.clone(), // Because the self.nodes_rx is always copied from the original nodes_rx created before any node lists were sent, // once a single node list has been sent all new connections will immediately recognize it as a change. - nodes_rx: self.nodes_rx, - keyspaces_rx: self.keyspaces_rx, + nodes_rx: self.nodes_rx.clone(), + keyspaces_rx: self.keyspaces_rx.clone(), rng: SmallRng::from_rng(rand::thread_rng()).unwrap(), - task_handshake_tx: self.task_handshake_tx, + task_handshake_tx: self.task_handshake_tx.clone(), }) } } diff --git a/shotover-proxy/src/transforms/chain.rs b/shotover-proxy/src/transforms/chain.rs index 8128e9287..4d08debef 100644 --- a/shotover-proxy/src/transforms/chain.rs +++ b/shotover-proxy/src/transforms/chain.rs @@ -354,7 +354,7 @@ impl TransformChainBuilder { /// Clone the chain while adding a producer for the pushed messages channel pub fn build(&self) -> TransformChain { - let chain = self.chain.iter().cloned().map(|x| x.build()).collect(); + let chain = self.chain.iter().map(|x| x.build()).collect(); TransformChain { name: self.name.clone(), @@ -373,7 +373,7 @@ impl TransformChainBuilder { .chain .iter() .map(|x| { - let mut transform = x.clone().build(); + let mut transform = x.build(); transform.set_pushed_messages_tx(pushed_messages_tx.clone()); transform }) diff --git a/shotover-proxy/src/transforms/load_balance.rs b/shotover-proxy/src/transforms/load_balance.rs index 3553ee1d6..2652ba63a 100644 --- a/shotover-proxy/src/transforms/load_balance.rs +++ b/shotover-proxy/src/transforms/load_balance.rs @@ -38,12 +38,12 @@ pub struct ConnectionBalanceAndPoolBuilder { } impl ConnectionBalanceAndPoolBuilder { - pub fn build(self) -> ConnectionBalanceAndPool { + pub fn build(&self) -> ConnectionBalanceAndPool { ConnectionBalanceAndPool { active_connection: None, max_connections: self.max_connections, - all_connections: self.all_connections, - chain_to_clone: self.chain_to_clone, + all_connections: self.all_connections.clone(), + chain_to_clone: self.chain_to_clone.clone(), } } diff --git a/shotover-proxy/src/transforms/mod.rs b/shotover-proxy/src/transforms/mod.rs index 3553bae9f..71bbc479b 100644 --- a/shotover-proxy/src/transforms/mod.rs +++ b/shotover-proxy/src/transforms/mod.rs @@ -104,36 +104,40 @@ pub enum TransformBuilder { } impl TransformBuilder { - pub fn build(self) -> Transforms { + pub fn build(&self) -> Transforms { match self { - TransformBuilder::CassandraSinkSingle(t) => Transforms::CassandraSinkSingle(t), + TransformBuilder::CassandraSinkSingle(t) => Transforms::CassandraSinkSingle(t.clone()), TransformBuilder::CassandraSinkCluster(t) => { Transforms::CassandraSinkCluster(t.build()) } - TransformBuilder::CassandraPeersRewrite(t) => Transforms::CassandraPeersRewrite(t), + TransformBuilder::CassandraPeersRewrite(t) => { + Transforms::CassandraPeersRewrite(t.clone()) + } TransformBuilder::RedisCache(t) => Transforms::RedisCache(t.build()), - TransformBuilder::Tee(t) => Transforms::Tee(t), - TransformBuilder::RedisSinkSingle(t) => Transforms::RedisSinkSingle(t), - TransformBuilder::ConsistentScatter(t) => Transforms::ConsistentScatter(t), - TransformBuilder::RedisTimestampTagger(t) => Transforms::RedisTimestampTagger(t), + TransformBuilder::Tee(t) => Transforms::Tee(t.clone()), + TransformBuilder::RedisSinkSingle(t) => Transforms::RedisSinkSingle(t.clone()), + TransformBuilder::ConsistentScatter(t) => Transforms::ConsistentScatter(t.clone()), + TransformBuilder::RedisTimestampTagger(t) => { + Transforms::RedisTimestampTagger(t.clone()) + } TransformBuilder::RedisClusterPortsRewrite(t) => { - Transforms::RedisClusterPortsRewrite(t) + Transforms::RedisClusterPortsRewrite(t.clone()) } - TransformBuilder::DebugPrinter(t) => Transforms::DebugPrinter(t), - TransformBuilder::DebugForceParse(t) => Transforms::DebugForceParse(t), - TransformBuilder::NullSink(t) => Transforms::NullSink(t), - TransformBuilder::RedisSinkCluster(t) => Transforms::RedisSinkCluster(t), + TransformBuilder::DebugPrinter(t) => Transforms::DebugPrinter(t.clone()), + TransformBuilder::DebugForceParse(t) => Transforms::DebugForceParse(t.clone()), + TransformBuilder::NullSink(t) => Transforms::NullSink(t.clone()), + TransformBuilder::RedisSinkCluster(t) => Transforms::RedisSinkCluster(t.clone()), TransformBuilder::ParallelMap(t) => Transforms::ParallelMap(t.build()), TransformBuilder::PoolConnections(t) => Transforms::PoolConnections(t.build()), - TransformBuilder::Coalesce(t) => Transforms::Coalesce(t), - TransformBuilder::QueryTypeFilter(t) => Transforms::QueryTypeFilter(t), - TransformBuilder::QueryCounter(t) => Transforms::QueryCounter(t), + TransformBuilder::Coalesce(t) => Transforms::Coalesce(t.clone()), + TransformBuilder::QueryTypeFilter(t) => Transforms::QueryTypeFilter(t.clone()), + TransformBuilder::QueryCounter(t) => Transforms::QueryCounter(t.clone()), #[cfg(test)] - TransformBuilder::Loopback(t) => Transforms::Loopback(t), - TransformBuilder::Protect(t) => Transforms::Protect(t), - TransformBuilder::DebugReturner(t) => Transforms::DebugReturner(t), - TransformBuilder::DebugRandomDelay(t) => Transforms::DebugRandomDelay(t), - TransformBuilder::RequestThrottling(t) => Transforms::RequestThrottling(t), + TransformBuilder::Loopback(t) => Transforms::Loopback(t.clone()), + TransformBuilder::Protect(t) => Transforms::Protect(t.clone()), + TransformBuilder::DebugReturner(t) => Transforms::DebugReturner(t.clone()), + TransformBuilder::DebugRandomDelay(t) => Transforms::DebugRandomDelay(t.clone()), + TransformBuilder::RequestThrottling(t) => Transforms::RequestThrottling(t.clone()), } } diff --git a/shotover-proxy/src/transforms/parallel_map.rs b/shotover-proxy/src/transforms/parallel_map.rs index bc1be61e8..566e14bfb 100644 --- a/shotover-proxy/src/transforms/parallel_map.rs +++ b/shotover-proxy/src/transforms/parallel_map.rs @@ -122,9 +122,9 @@ impl Transform for ParallelMap { } impl ParallelMapBuilder { - pub fn build(self) -> ParallelMap { + pub fn build(&self) -> ParallelMap { ParallelMap { - chains: self.chains.into_iter().map(|x| x.build()).collect(), + chains: self.chains.iter().map(|x| x.build()).collect(), ordered: self.ordered, } } diff --git a/shotover-proxy/src/transforms/redis/cache.rs b/shotover-proxy/src/transforms/redis/cache.rs index 811a843ff..e6f787f38 100644 --- a/shotover-proxy/src/transforms/redis/cache.rs +++ b/shotover-proxy/src/transforms/redis/cache.rs @@ -566,11 +566,11 @@ impl Transform for SimpleRedisCache { } } impl SimpleRedisCacheBuilder { - pub fn build(self) -> SimpleRedisCache { + pub fn build(&self) -> SimpleRedisCache { SimpleRedisCache { cache_chain: self.cache_chain.build(), - caching_schema: self.caching_schema, - missed_requests: self.missed_requests, + caching_schema: self.caching_schema.clone(), + missed_requests: self.missed_requests.clone(), } }