617: Sort seller list inside of `list_sellers` r=thomaseizinger a=da-kami

By sorting the list inside we have a more deterministic output that makes processing in JSON easier.

Co-authored-by: Daniel Karzel <daniel@comit.network>
This commit is contained in:
bors[bot] 2021-07-08 03:41:41 +00:00 committed by GitHub
commit 41982e0ff9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 3 deletions

View File

@ -285,7 +285,7 @@ async fn main() -> Result<()> {
.context("Failed to read in seed file")?;
let identity = seed.derive_libp2p_identity();
let mut sellers = list_sellers(
let sellers = list_sellers(
rendezvous_node_peer_id,
rendezvous_point,
namespace,
@ -293,7 +293,6 @@ async fn main() -> Result<()> {
identity,
)
.await?;
sellers.sort();
if json {
for seller in sellers {

View File

@ -15,6 +15,12 @@ use std::collections::hash_map::Entry;
use std::collections::HashMap;
use std::time::Duration;
/// Returns sorted list of sellers, with [Online](Status::Online) listed first.
///
/// First uses the rendezvous node to discover peers in the given namespace,
/// then fetches a quote from each peer that was discovered. If fetching a quote
/// from a discovered peer fails the seller's status will be
/// [Unreachable](Status::Unreachable).
pub async fn list_sellers(
rendezvous_node_peer_id: PeerId,
rendezvous_node_addr: Multiaddr,
@ -289,7 +295,10 @@ impl EventLoop {
.collect::<Result<Vec<_>, _>>();
match all_quotes_fetched {
Ok(sellers) => break sellers,
Ok(mut sellers) => {
sellers.sort();
break sellers;
}
Err(StillPending {}) => continue,
}
}