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

fix(ManageNetwork): replace Range with RangeInclusive #10209

Merged
merged 3 commits into from
Jan 22, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 7 additions & 9 deletions ethcore/sync/src/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
use std::sync::{Arc, mpsc, atomic};
use std::collections::{HashMap, BTreeMap};
use std::io;
use std::ops::Range;
use std::ops::RangeInclusive;
use std::time::Duration;
use bytes::Bytes;
use devp2p::NetworkService;
Expand Down Expand Up @@ -615,9 +615,7 @@ pub trait ManageNetwork : Send + Sync {
/// Stop network
fn stop_network(&self);
/// Returns the minimum and maximum peers.
/// Note that `range.end` is *exclusive*.
// TODO: Range should be changed to RangeInclusive once stable (https://github.com/rust-lang/rust/pull/50758)
fn num_peers_range(&self) -> Range<u32>;
fn num_peers_range(&self) -> RangeInclusive<u32>;
/// Get network context for protocol.
Copy link
Collaborator Author

@niklasad1 niklasad1 Jan 17, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMHO, the return type RangeInclusive makes it clear that the range is inclusive thus I removed the comment

fn with_proto_context(&self, proto: ProtocolId, f: &mut FnMut(&NetworkContext));
}
Expand Down Expand Up @@ -656,7 +654,7 @@ impl ManageNetwork for EthSync {
self.stop();
}

fn num_peers_range(&self) -> Range<u32> {
fn num_peers_range(&self) -> RangeInclusive<u32> {
self.network.num_peers_range()
}

Expand Down Expand Up @@ -935,7 +933,7 @@ impl ManageNetwork for LightSync {
self.network.stop();
}

fn num_peers_range(&self) -> Range<u32> {
fn num_peers_range(&self) -> RangeInclusive<u32> {
self.network.num_peers_range()
}

Expand All @@ -948,12 +946,12 @@ impl LightSyncProvider for LightSync {
fn peer_numbers(&self) -> PeerNumbers {
let (connected, active) = self.proto.peer_count();
let peers_range = self.num_peers_range();
debug_assert!(peers_range.end > peers_range.start);
debug_assert!(peers_range.end() >= peers_range.start());
PeerNumbers {
connected: connected,
active: active,
max: peers_range.end as usize - 1,
min: peers_range.start as usize,
max: *peers_range.end() as usize,
min: *peers_range.start() as usize,
}
}

Expand Down
4 changes: 2 additions & 2 deletions parity/informant.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,15 +146,15 @@ impl InformantData for FullNodeInformantData {
(Some(sync), Some(net)) => {
let status = sync.status();
let num_peers_range = net.num_peers_range();
debug_assert!(num_peers_range.end > num_peers_range.start);
debug_assert!(num_peers_range.end() >= num_peers_range.start());

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

Some(SyncInfo {
last_imported_block_number: status.last_imported_block_number.unwrap_or(chain_info.best_block_number),
last_imported_old_block_number: status.last_imported_old_block_number,
num_peers: status.num_peers,
max_peers: status.current_max_peers(num_peers_range.start, num_peers_range.end - 1),
max_peers: status.current_max_peers(*num_peers_range.start(), *num_peers_range.end()),
snapshot_sync: status.is_snapshot_syncing(),
})
}
Expand Down
4 changes: 2 additions & 2 deletions rpc/src/v1/impls/parity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -187,13 +187,13 @@ impl<C, M, U, S> Parity for ParityClient<C, M, U> where
fn net_peers(&self) -> Result<Peers> {
let sync_status = self.sync.status();
let num_peers_range = self.net.num_peers_range();
debug_assert!(num_peers_range.end > num_peers_range.start);
debug_assert!(num_peers_range.end() >= num_peers_range.start());
let peers = self.sync.peers().into_iter().map(Into::into).collect();

Ok(Peers {
active: sync_status.num_active_peers,
connected: sync_status.num_peers,
max: sync_status.current_max_peers(num_peers_range.start, num_peers_range.end - 1),
max: sync_status.current_max_peers(*num_peers_range.start(), *num_peers_range.end()),
peers: peers
})
}
Expand Down
4 changes: 2 additions & 2 deletions rpc/src/v1/tests/mocked/manage_network.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.

use std::ops::Range;
use std::ops::RangeInclusive;
use sync::ManageNetwork;
use self::ethcore_network::{ProtocolId, NetworkContext};

Expand All @@ -30,6 +30,6 @@ impl ManageNetwork for TestManageNetwork {
fn add_reserved_peer(&self, _peer: String) -> Result<(), String> { Ok(()) }
fn start_network(&self) {}
fn stop_network(&self) {}
fn num_peers_range(&self) -> Range<u32> { 25 .. 51 }
fn num_peers_range(&self) -> RangeInclusive<u32> { 25..=50 }
fn with_proto_context(&self, _: ProtocolId, _: &mut FnMut(&NetworkContext)) { }
}
10 changes: 3 additions & 7 deletions util/network-devp2p/src/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ use host::Host;
use io::*;
use parking_lot::RwLock;
use std::net::SocketAddr;
use std::ops::Range;
use std::ops::RangeInclusive;
use std::sync::Arc;
use ansi_term::Colour;
use network::ConnectionFilter;
Expand Down Expand Up @@ -95,12 +95,8 @@ impl NetworkService {
}

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

/// Returns external url if available.
Expand Down