Skip to content

Commit a0cb23e

Browse files
authored
chore: remove redundant imports, reduce duplicated code and misc cleanup (#391)
1 parent a34051c commit a0cb23e

25 files changed

+174
-231
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# 0.15.0
2+
- chore: cleanup of imports and duplicated code.
23
- refactor: use impl Trait in function parameter instead. [PR 383](https://github.com/dariusc93/rust-ipfs/pull/383)
34
- refactor: remove lifetime from RepoPutBlock and return RepoPutBlock in Ipfs::put_block. [PR 384](https://github.com/dariusc93/rust-ipfs/pull/384)
45
- chore: update libp2p to 0.55.0. [PR 375](https://github.com/dariusc93/rust-ipfs/pull/375)

examples/dag_creation.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use ipld_core::ipld;
21
use rust_ipfs::{Ipfs, IpfsPath};
32

43
use rust_ipfs::UninitializedIpfsDefault as UninitializedIpfs;
@@ -11,9 +10,9 @@ async fn main() -> anyhow::Result<()> {
1110
let ipfs: Ipfs = UninitializedIpfs::new().start().await?;
1211

1312
// Create a DAG
14-
let cid1 = ipfs.put_dag(ipld!("block1")).await?;
15-
let cid2 = ipfs.put_dag(ipld!("block2")).await?;
16-
let root = ipld!([cid1, cid2]);
13+
let cid1 = ipfs.put_dag("block1").await?;
14+
let cid2 = ipfs.put_dag("block2").await?;
15+
let root = [cid1, cid2];
1716
let cid = ipfs.put_dag(root).await?;
1817
let path = IpfsPath::from(cid);
1918

examples/relay-client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ mod ext_behaviour {
144144
}
145145

146146
impl NetworkBehaviour for Behaviour {
147-
type ConnectionHandler = rust_ipfs::libp2p::swarm::dummy::ConnectionHandler;
147+
type ConnectionHandler = libp2p::swarm::dummy::ConnectionHandler;
148148
type ToSwarm = Infallible;
149149

150150
fn handle_pending_inbound_connection(

examples/repo_dag.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use ipld_core::ipld;
21
use rust_ipfs::dag::IpldDag;
32
use rust_ipfs::repo::Repo;
43
use rust_ipfs::IpfsPath;
@@ -11,9 +10,9 @@ async fn main() -> anyhow::Result<()> {
1110
let repo = Repo::new_memory();
1211
let dag = IpldDag::from(repo.clone());
1312

14-
let cid1 = dag.put_dag(ipld!("block1")).await?;
15-
let cid2 = dag.put_dag(ipld!("block2")).await?;
16-
let root = ipld!([cid1, cid2]);
13+
let cid1 = dag.put_dag("block1").await?;
14+
let cid2 = dag.put_dag("block2").await?;
15+
let root = [cid1, cid2];
1716
let cid = dag.put_dag(root).await?;
1817
let path = IpfsPath::from(cid);
1918

src/dag.rs

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ use rust_unixfs::{
2121
};
2222
use serde::de::DeserializeOwned;
2323
use serde::Serialize;
24+
use std::borrow::Borrow;
2425
use std::convert::TryFrom;
2526
use std::error::Error as StdError;
2627
use std::iter::Peekable;
@@ -232,18 +233,7 @@ impl IpldDag {
232233
local_only: bool,
233234
timeout: Option<Duration>,
234235
) -> Result<Ipld, ResolveError> {
235-
let resolved_path = match &self.ipfs {
236-
Some(ipfs) => ipfs
237-
.resolve_ipns(&path, true)
238-
.await
239-
.map_err(|_| ResolveError::IpnsResolutionFailed(path))?,
240-
None => {
241-
if !matches!(path.root(), PathRoot::Ipld(_)) {
242-
return Err(ResolveError::IpnsResolutionFailed(path));
243-
}
244-
path
245-
}
246-
};
236+
let resolved_path = resolve_path(self.ipfs.as_ref(), path).await?;
247237

248238
let cid = match resolved_path.root().cid() {
249239
Some(cid) => cid,
@@ -296,18 +286,7 @@ impl IpldDag {
296286
local_only: bool,
297287
timeout: Option<Duration>,
298288
) -> Result<(ResolvedNode, SlashedPath), ResolveError> {
299-
let resolved_path = match &self.ipfs {
300-
Some(ipfs) => ipfs
301-
.resolve_ipns(&path, true)
302-
.await
303-
.map_err(|_| ResolveError::IpnsResolutionFailed(path))?,
304-
None => {
305-
if !matches!(path.root(), PathRoot::Ipld(_)) {
306-
return Err(ResolveError::IpnsResolutionFailed(path));
307-
}
308-
path
309-
}
310-
};
289+
let resolved_path = resolve_path(self.ipfs.as_ref(), path).await?;
311290

312291
let cid = match resolved_path.root().cid() {
313292
Some(cid) => cid,
@@ -677,6 +656,27 @@ impl std::future::IntoFuture for DagPut {
677656
}
678657
}
679658

659+
async fn resolve_path(
660+
ipfs: Option<&Ipfs>,
661+
path: impl Borrow<IpfsPath>,
662+
) -> Result<IpfsPath, ResolveError> {
663+
let path = path.borrow().clone();
664+
let resolved_path = match ipfs {
665+
Some(ipfs) => ipfs
666+
.resolve_ipns(&path, true)
667+
.await
668+
.map_err(|_| ResolveError::IpnsResolutionFailed(path))?,
669+
None => {
670+
if !matches!(path.root(), PathRoot::Ipld(_)) {
671+
return Err(ResolveError::IpnsResolutionFailed(path));
672+
}
673+
path
674+
}
675+
};
676+
677+
Ok(resolved_path)
678+
}
679+
680680
/// `IpfsPath`'s `Cid`-based variant can be resolved to the block, projections represented by this
681681
/// type.
682682
///
@@ -1061,8 +1061,7 @@ mod tests {
10611061
let p = IpfsPath::try_from(*path).unwrap();
10621062

10631063
let (resolved, matched_segments) =
1064-
super::resolve_local_ipld(root, example_doc.clone(), &mut p.iter().peekable())
1065-
.unwrap();
1064+
resolve_local_ipld(root, example_doc.clone(), &mut p.iter().peekable()).unwrap();
10661065

10671066
assert_eq!(matched_segments, 4);
10681067

@@ -1086,7 +1085,7 @@ mod tests {
10861085
).unwrap();
10871086

10881087
let (resolved, matched_segments) =
1089-
super::resolve_local_ipld(root, example_doc, &mut p.iter().peekable()).unwrap();
1088+
resolve_local_ipld(root, example_doc, &mut p.iter().peekable()).unwrap();
10901089

10911090
match resolved.unwrap_complete() {
10921091
ResolvedNode::Link(_, cid) if cid == target => {}
@@ -1110,7 +1109,7 @@ mod tests {
11101109
.unwrap();
11111110

11121111
let (resolved, matched_segments) =
1113-
super::resolve_local_ipld(root, example_doc, &mut p.iter().peekable()).unwrap();
1112+
resolve_local_ipld(root, example_doc, &mut p.iter().peekable()).unwrap();
11141113
assert_eq!(resolved.unwrap_complete(), ResolvedNode::Link(root, cid));
11151114
assert_eq!(matched_segments, 5);
11161115

@@ -1126,7 +1125,7 @@ mod tests {
11261125
)
11271126
.unwrap();
11281127

1129-
let e = super::resolve_local_ipld(root, example_doc, &mut p.iter().peekable()).unwrap_err();
1128+
let e = resolve_local_ipld(root, example_doc, &mut p.iter().peekable()).unwrap_err();
11301129
assert!(
11311130
matches!(
11321131
e,
@@ -1147,7 +1146,7 @@ mod tests {
11471146
)
11481147
.unwrap();
11491148

1150-
let e = super::resolve_local_ipld(root, example_doc, &mut p.iter().peekable()).unwrap_err();
1149+
let e = resolve_local_ipld(root, example_doc, &mut p.iter().peekable()).unwrap_err();
11511150
assert!(
11521151
matches!(
11531152
e,
@@ -1171,7 +1170,7 @@ mod tests {
11711170
.unwrap();
11721171

11731172
// FIXME: errors, again the number of matched
1174-
let e = super::resolve_local_ipld(root, example_doc, &mut p.iter().peekable()).unwrap_err();
1173+
let e = resolve_local_ipld(root, example_doc, &mut p.iter().peekable()).unwrap_err();
11751174
assert!(
11761175
matches!(
11771176
e,

src/keystore.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,12 @@ impl KeyStorage for MemoryKeyStorage {
201201
.cloned()
202202
.ok_or(anyhow::anyhow!("Key doesnt exist"))
203203
}
204+
205+
async fn contains(&self, name: &str) -> Result<bool, Error> {
206+
let inner = self.inner.lock().await;
207+
Ok(inner.contains_key(name))
208+
}
209+
204210
async fn remove(&self, name: &str) -> Result<(), Error> {
205211
let mut inner = self.inner.lock().await;
206212
inner
@@ -209,11 +215,6 @@ impl KeyStorage for MemoryKeyStorage {
209215
.ok_or(anyhow::anyhow!("Key doesnt exist"))
210216
}
211217

212-
async fn contains(&self, name: &str) -> Result<bool, Error> {
213-
let inner = self.inner.lock().await;
214-
Ok(inner.contains_key(name))
215-
}
216-
217218
async fn rename(&self, name: &str, new_name: &str) -> Result<(), Error> {
218219
let mut inner = self.inner.lock().await;
219220
if inner.contains_key(new_name) {

src/p2p/addressbook.rs

Lines changed: 47 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -145,22 +145,15 @@ impl Behaviour {
145145

146146
fn keep_peer_alive(&mut self, peer_id: &PeerId) {
147147
self.peer_keepalive.insert(*peer_id);
148-
if let Some(conns) = self.connections.get(peer_id) {
149-
self.events.extend(
150-
conns
151-
.iter()
152-
.copied()
153-
.map(|connection_id| ToSwarm::NotifyHandler {
154-
peer_id: *peer_id,
155-
handler: swarm::NotifyHandler::One(connection_id),
156-
event: handler::In::Protect,
157-
}),
158-
)
159-
}
148+
self.set_peer_protected_status(peer_id, handler::In::Protect);
160149
}
161150

162151
fn dont_keep_peer_alive(&mut self, peer_id: &PeerId) {
163152
self.peer_keepalive.remove(peer_id);
153+
self.set_peer_protected_status(peer_id, handler::In::Unprotect);
154+
}
155+
156+
fn set_peer_protected_status(&mut self, peer_id: &PeerId, event: handler::In) {
164157
if let Some(conns) = self.connections.get(peer_id) {
165158
self.events.extend(
166159
conns
@@ -169,7 +162,7 @@ impl Behaviour {
169162
.map(|connection_id| ToSwarm::NotifyHandler {
170163
peer_id: *peer_id,
171164
handler: swarm::NotifyHandler::One(connection_id),
172-
event: handler::In::Unprotect,
165+
event,
173166
}),
174167
)
175168
}
@@ -361,6 +354,17 @@ impl NetworkBehaviour for Behaviour {
361354
type ConnectionHandler = handler::Handler;
362355
type ToSwarm = Infallible;
363356

357+
fn handle_established_inbound_connection(
358+
&mut self,
359+
_: ConnectionId,
360+
peer_id: PeerId,
361+
_: &Multiaddr,
362+
_: &Multiaddr,
363+
) -> Result<THandler<Self>, ConnectionDenied> {
364+
let keepalive = self.peer_keepalive.contains(&peer_id);
365+
Ok(handler::Handler::new(keepalive))
366+
}
367+
364368
fn handle_pending_outbound_connection(
365369
&mut self,
366370
_: ConnectionId,
@@ -382,17 +386,6 @@ impl NetworkBehaviour for Behaviour {
382386
Ok(list)
383387
}
384388

385-
fn handle_established_inbound_connection(
386-
&mut self,
387-
_: ConnectionId,
388-
peer_id: PeerId,
389-
_: &Multiaddr,
390-
_: &Multiaddr,
391-
) -> Result<THandler<Self>, ConnectionDenied> {
392-
let keepalive = self.peer_keepalive.contains(&peer_id);
393-
Ok(handler::Handler::new(keepalive))
394-
}
395-
396389
fn handle_established_outbound_connection(
397390
&mut self,
398391
_: ConnectionId,
@@ -405,14 +398,6 @@ impl NetworkBehaviour for Behaviour {
405398
Ok(handler::Handler::new(keepalive))
406399
}
407400

408-
fn on_connection_handler_event(
409-
&mut self,
410-
_: PeerId,
411-
_: ConnectionId,
412-
_: swarm::THandlerOutEvent<Self>,
413-
) {
414-
}
415-
416401
fn on_swarm_event(&mut self, event: FromSwarm) {
417402
match event {
418403
FromSwarm::AddressChange(ev) => self.on_address_change(ev),
@@ -433,6 +418,14 @@ impl NetworkBehaviour for Behaviour {
433418
}
434419
}
435420

421+
fn on_connection_handler_event(
422+
&mut self,
423+
_: PeerId,
424+
_: ConnectionId,
425+
_: swarm::THandlerOutEvent<Self>,
426+
) {
427+
}
428+
436429
fn poll(&mut self, cx: &mut Context) -> Poll<ToSwarm<Self::ToSwarm, THandlerInEvent<Self>>> {
437430
if let Some(event) = self.events.pop_front() {
438431
return Poll::Ready(event);
@@ -467,7 +460,25 @@ mod test {
467460
Multiaddr, PeerId, Swarm, SwarmBuilder,
468461
};
469462

470-
use crate::AddPeerOpt;
463+
use crate::{AddPeerOpt, NetworkBehaviour};
464+
465+
async fn wait_on_connection<B: NetworkBehaviour>(
466+
swarm1: &mut Swarm<B>,
467+
swarm2: &mut Swarm<B>,
468+
peer_id: PeerId,
469+
) {
470+
loop {
471+
futures::select! {
472+
event = swarm1.select_next_some() => {
473+
if let SwarmEvent::ConnectionEstablished { peer_id: peer, .. } = event {
474+
assert_eq!(peer, peer_id);
475+
break;
476+
}
477+
}
478+
_ = swarm2.next() => {}
479+
}
480+
}
481+
}
471482

472483
#[tokio::test]
473484
async fn dial_with_peer_id() -> anyhow::Result<()> {
@@ -480,17 +491,7 @@ mod test {
480491

481492
swarm1.dial(peer2)?;
482493

483-
loop {
484-
futures::select! {
485-
event = swarm1.select_next_some() => {
486-
if let SwarmEvent::ConnectionEstablished { peer_id, .. } = event {
487-
assert_eq!(peer_id, peer2);
488-
break;
489-
}
490-
}
491-
_ = swarm2.next() => {}
492-
}
493-
}
494+
wait_on_connection(&mut swarm1, &mut swarm2, peer2).await;
494495
Ok(())
495496
}
496497

@@ -503,17 +504,7 @@ mod test {
503504

504505
swarm1.dial(peer2)?;
505506

506-
loop {
507-
futures::select! {
508-
event = swarm1.select_next_some() => {
509-
if let SwarmEvent::ConnectionEstablished { peer_id, .. } = event {
510-
assert_eq!(peer_id, peer2);
511-
break;
512-
}
513-
}
514-
_ = swarm2.next() => {}
515-
}
516-
}
507+
wait_on_connection(&mut swarm1, &mut swarm2, peer2).await;
517508

518509
swarm1.disconnect_peer_id(peer2).expect("Shouldnt fail");
519510

@@ -612,17 +603,7 @@ mod test {
612603

613604
swarm1.dial(opt)?;
614605

615-
loop {
616-
futures::select! {
617-
event = swarm1.select_next_some() => {
618-
if let SwarmEvent::ConnectionEstablished { peer_id, .. } = event {
619-
assert_eq!(peer_id, peer2);
620-
break;
621-
}
622-
}
623-
_ = swarm2.next() => {}
624-
}
625-
}
606+
wait_on_connection(&mut swarm1, &mut swarm2, peer2).await;
626607

627608
let addrs = swarm1
628609
.behaviour()

0 commit comments

Comments
 (0)