Skip to content
This repository was archived by the owner on Nov 6, 2020. It is now read-only.

Commit 4b11d79

Browse files
authored
fix(ManageNetwork): replace Range with RangeInclusive (#10209)
* fix(ManageNetwork): replace Range -> RangeIncls Fixes `TODO: Range should be changed to RangeInclusive once stable (https://github.com/rust-lang/rust/pull/50758)` * fix(tests) * fix(grumbles): off-by-one error in debug_asserts * RangeInclusive::end() is inclusive which means that if start and end is equal the `debug_assert(range.end() > range.start()` will fail which is shouldn't
1 parent c35abe4 commit 4b11d79

File tree

5 files changed

+16
-22
lines changed

5 files changed

+16
-22
lines changed

ethcore/sync/src/api.rs

+7-9
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
use std::sync::{Arc, mpsc, atomic};
1818
use std::collections::{HashMap, BTreeMap};
1919
use std::io;
20-
use std::ops::Range;
20+
use std::ops::RangeInclusive;
2121
use std::time::Duration;
2222
use bytes::Bytes;
2323
use devp2p::NetworkService;
@@ -615,9 +615,7 @@ pub trait ManageNetwork : Send + Sync {
615615
/// Stop network
616616
fn stop_network(&self);
617617
/// Returns the minimum and maximum peers.
618-
/// Note that `range.end` is *exclusive*.
619-
// TODO: Range should be changed to RangeInclusive once stable (https://github.com/rust-lang/rust/pull/50758)
620-
fn num_peers_range(&self) -> Range<u32>;
618+
fn num_peers_range(&self) -> RangeInclusive<u32>;
621619
/// Get network context for protocol.
622620
fn with_proto_context(&self, proto: ProtocolId, f: &mut FnMut(&NetworkContext));
623621
}
@@ -656,7 +654,7 @@ impl ManageNetwork for EthSync {
656654
self.stop();
657655
}
658656

659-
fn num_peers_range(&self) -> Range<u32> {
657+
fn num_peers_range(&self) -> RangeInclusive<u32> {
660658
self.network.num_peers_range()
661659
}
662660

@@ -935,7 +933,7 @@ impl ManageNetwork for LightSync {
935933
self.network.stop();
936934
}
937935

938-
fn num_peers_range(&self) -> Range<u32> {
936+
fn num_peers_range(&self) -> RangeInclusive<u32> {
939937
self.network.num_peers_range()
940938
}
941939

@@ -948,12 +946,12 @@ impl LightSyncProvider for LightSync {
948946
fn peer_numbers(&self) -> PeerNumbers {
949947
let (connected, active) = self.proto.peer_count();
950948
let peers_range = self.num_peers_range();
951-
debug_assert!(peers_range.end > peers_range.start);
949+
debug_assert!(peers_range.end() >= peers_range.start());
952950
PeerNumbers {
953951
connected: connected,
954952
active: active,
955-
max: peers_range.end as usize - 1,
956-
min: peers_range.start as usize,
953+
max: *peers_range.end() as usize,
954+
min: *peers_range.start() as usize,
957955
}
958956
}
959957

parity/informant.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -146,15 +146,15 @@ impl InformantData for FullNodeInformantData {
146146
(Some(sync), Some(net)) => {
147147
let status = sync.status();
148148
let num_peers_range = net.num_peers_range();
149-
debug_assert!(num_peers_range.end > num_peers_range.start);
149+
debug_assert!(num_peers_range.end() >= num_peers_range.start());
150150

151151
cache_sizes.insert("sync", status.mem_used);
152152

153153
Some(SyncInfo {
154154
last_imported_block_number: status.last_imported_block_number.unwrap_or(chain_info.best_block_number),
155155
last_imported_old_block_number: status.last_imported_old_block_number,
156156
num_peers: status.num_peers,
157-
max_peers: status.current_max_peers(num_peers_range.start, num_peers_range.end - 1),
157+
max_peers: status.current_max_peers(*num_peers_range.start(), *num_peers_range.end()),
158158
snapshot_sync: status.is_snapshot_syncing(),
159159
})
160160
}

rpc/src/v1/impls/parity.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -187,13 +187,13 @@ impl<C, M, U, S> Parity for ParityClient<C, M, U> where
187187
fn net_peers(&self) -> Result<Peers> {
188188
let sync_status = self.sync.status();
189189
let num_peers_range = self.net.num_peers_range();
190-
debug_assert!(num_peers_range.end > num_peers_range.start);
190+
debug_assert!(num_peers_range.end() >= num_peers_range.start());
191191
let peers = self.sync.peers().into_iter().map(Into::into).collect();
192192

193193
Ok(Peers {
194194
active: sync_status.num_active_peers,
195195
connected: sync_status.num_peers,
196-
max: sync_status.current_max_peers(num_peers_range.start, num_peers_range.end - 1),
196+
max: sync_status.current_max_peers(*num_peers_range.start(), *num_peers_range.end()),
197197
peers: peers
198198
})
199199
}

rpc/src/v1/tests/mocked/manage_network.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
// You should have received a copy of the GNU General Public License
1515
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
1616

17-
use std::ops::Range;
17+
use std::ops::RangeInclusive;
1818
use sync::ManageNetwork;
1919
use self::ethcore_network::{ProtocolId, NetworkContext};
2020

@@ -30,6 +30,6 @@ impl ManageNetwork for TestManageNetwork {
3030
fn add_reserved_peer(&self, _peer: String) -> Result<(), String> { Ok(()) }
3131
fn start_network(&self) {}
3232
fn stop_network(&self) {}
33-
fn num_peers_range(&self) -> Range<u32> { 25 .. 51 }
33+
fn num_peers_range(&self) -> RangeInclusive<u32> { 25..=50 }
3434
fn with_proto_context(&self, _: ProtocolId, _: &mut FnMut(&NetworkContext)) { }
3535
}

util/network-devp2p/src/service.rs

+3-7
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use host::Host;
2020
use io::*;
2121
use parking_lot::RwLock;
2222
use std::net::SocketAddr;
23-
use std::ops::Range;
23+
use std::ops::RangeInclusive;
2424
use std::sync::Arc;
2525
use ansi_term::Colour;
2626
use network::ConnectionFilter;
@@ -95,12 +95,8 @@ impl NetworkService {
9595
}
9696

9797
/// Returns the number of peers allowed.
98-
///
99-
/// Keep in mind that `range.end` is *exclusive*.
100-
pub fn num_peers_range(&self) -> Range<u32> {
101-
let start = self.config.min_peers;
102-
let end = self.config.max_peers + 1;
103-
start .. end
98+
pub fn num_peers_range(&self) -> RangeInclusive<u32> {
99+
self.config.min_peers..=self.config.max_peers
104100
}
105101

106102
/// Returns external url if available.

0 commit comments

Comments
 (0)