Skip to content

Commit e6f3d46

Browse files
committed
remove serde related code
1 parent 00d8d33 commit e6f3d46

File tree

3 files changed

+0
-152
lines changed

3 files changed

+0
-152
lines changed

Cargo.lock

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

misc/peer-store/Cargo.toml

-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ rust-version.workspace = true
1111
libp2p-core = { workspace = true }
1212
libp2p-swarm = { workspace = true }
1313
lru = "0.12.3"
14-
serde = { version = "1.0.217", features = ["derive"], optional = true }
1514
libp2p-identity = { workspace = true, optional = true}
1615

1716
[dev-dependencies]
@@ -23,6 +22,3 @@ serde_json = { version = "1.0.134" }
2322

2423
[lints]
2524
workspace = true
26-
27-
[features]
28-
serde = ["dep:serde", "libp2p-identity/serde"]

misc/peer-store/src/memory_store.rs

-147
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,13 @@
77
//! let store: MemoryStore<()> = MemoryStore::new(Default::default());
88
//! let behaviour = Behaviour::new(store);
99
//! ```
10-
//!
11-
//! ## Persistent storage
12-
//! [`MemoryStore`] keeps all records in memory and will lose all the data
13-
//! once de-allocated. In order to persist the data, enable `serde` feature
14-
//! of `lib2p-peer-store` to read from and write to disk.
1510
1611
use std::{
1712
collections::{HashMap, VecDeque},
1813
num::NonZeroUsize,
1914
task::Waker,
2015
};
2116

22-
#[cfg(feature = "serde")]
23-
use ::serde::{Deserialize, Serialize};
2417
use libp2p_core::{Multiaddr, PeerId};
2518
use libp2p_swarm::FromSwarm;
2619
use lru::LruCache;
@@ -37,24 +30,14 @@ pub enum Event {
3730
/// A in-memory store that uses LRU cache for bounded storage of addresses
3831
/// and a frequency-based ordering of addresses.
3932
#[derive(Default)]
40-
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
41-
#[cfg_attr(
42-
feature = "serde",
43-
serde(bound(
44-
serialize = "T: Clone + Serialize ",
45-
deserialize = "T: Clone + Deserialize<'de>"
46-
))
47-
)]
4833
pub struct MemoryStore<T = ()> {
4934
/// The internal store.
5035
records: HashMap<PeerId, PeerRecord<T>>,
5136
/// Events to emit to [`Behaviour`](crate::Behaviour) and [`Swarm`](libp2p_swarm::Swarm)
52-
#[cfg_attr(feature = "serde", serde(skip))]
5337
pending_events: VecDeque<crate::store::Event<Event>>,
5438
/// Config of the store.
5539
config: Config,
5640
/// Waker for store events.
57-
#[cfg_attr(feature = "serde", serde(skip))]
5841
waker: Option<Waker>,
5942
}
6043

@@ -190,7 +173,6 @@ impl<T> Store for MemoryStore<T> {
190173

191174
/// Config for [`MemoryStore`].
192175
#[derive(Debug, Clone)]
193-
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
194176
pub struct Config {
195177
/// The capacaity of an address store.
196178
/// The least active address will be discarded to make room for new address.
@@ -220,16 +202,6 @@ impl Config {
220202

221203
/// Internal record of [`MemoryStore`].
222204
#[derive(Debug, Clone)]
223-
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
224-
#[cfg_attr(
225-
feature = "serde",
226-
serde(bound(
227-
serialize = "T: Clone + Serialize ",
228-
deserialize = "T: Clone + Deserialize<'de>"
229-
))
230-
)]
231-
#[cfg_attr(feature = "serde", serde(from = "serde::PeerRecord<T>"))]
232-
#[cfg_attr(feature = "serde", serde(into = "serde::PeerRecord<T>"))]
233205
pub struct PeerRecord<T> {
234206
/// A LRU(Least Recently Used) cache for addresses.
235207
/// Will delete the least-recently-used record when full.
@@ -281,73 +253,6 @@ impl<T> PeerRecord<T> {
281253
}
282254
}
283255

284-
#[cfg(feature = "serde")]
285-
pub(crate) mod serde {
286-
use std::num::NonZeroUsize;
287-
288-
use libp2p_core::Multiaddr;
289-
use serde::{Deserialize, Serialize};
290-
291-
impl<T> super::PeerRecord<T> {
292-
/// Build from an iterator. The order is reversed(FILO-ish).
293-
pub(crate) fn from_iter(
294-
cap: NonZeroUsize,
295-
addr_iter: impl Iterator<Item = Multiaddr>,
296-
custom_data: Option<T>,
297-
) -> Self {
298-
let mut lru = lru::LruCache::new(cap);
299-
for addr in addr_iter {
300-
lru.get_or_insert(addr, || ());
301-
}
302-
Self {
303-
addresses: lru,
304-
custom_data,
305-
}
306-
}
307-
308-
pub(crate) fn destruct(self) -> (NonZeroUsize, Vec<Multiaddr>, Option<T>) {
309-
let cap = self.addresses.cap();
310-
let mut addresses = self
311-
.addresses
312-
.into_iter()
313-
.map(|(addr, _)| addr)
314-
.collect::<Vec<_>>();
315-
// This is somewhat unusual: `LruCache::iter()` retains LRU order
316-
// while `LruCache::into_iter()` reverses the order.
317-
addresses.reverse();
318-
(cap, addresses, self.custom_data)
319-
}
320-
}
321-
322-
/// Helper struct for serializing and deserializing [`PeerRecord`](super::PeerRecord)
323-
#[derive(Debug, Clone, Serialize, Deserialize)]
324-
pub struct PeerRecord<T> {
325-
pub addresses: Vec<Multiaddr>,
326-
pub cap: NonZeroUsize,
327-
pub custom_data: Option<T>,
328-
}
329-
impl<T: Clone> From<PeerRecord<T>> for super::PeerRecord<T> {
330-
fn from(value: PeerRecord<T>) -> Self {
331-
// Need to reverse the iterator because `LruCache` is FILO.
332-
super::PeerRecord::from_iter(
333-
value.cap,
334-
value.addresses.into_iter().rev(),
335-
value.custom_data,
336-
)
337-
}
338-
}
339-
impl<T: Clone> From<super::PeerRecord<T>> for PeerRecord<T> {
340-
fn from(value: super::PeerRecord<T>) -> Self {
341-
let (cap, addresses, custom_data) = value.destruct();
342-
PeerRecord {
343-
addresses,
344-
cap,
345-
custom_data,
346-
}
347-
}
348-
}
349-
}
350-
351256
#[cfg(test)]
352257
mod test {
353258
use std::{num::NonZero, str::FromStr};
@@ -428,58 +333,6 @@ mod test {
428333
);
429334
}
430335

431-
#[test]
432-
fn serde_roundtrip() {
433-
let store_json = r#"
434-
{
435-
"records": {
436-
"1Aea5mXJrZNUwKxNU2y9xFE2qTFMjvFYSBf4T8cWEEP5Zd":
437-
{
438-
"addresses": [ "/ip4/127.0.0.2", "/ip4/127.0.0.3", "/ip4/127.0.0.4",
439-
"/ip4/127.0.0.5", "/ip4/127.0.0.6", "/ip4/127.0.0.7",
440-
"/ip4/127.0.0.8", "/ip4/127.0.0.9" ],
441-
"cap": 8,
442-
"custom_data": 7
443-
}
444-
},
445-
"config": {
446-
"record_capacity": 8
447-
}
448-
}
449-
"#;
450-
let store: MemoryStore<u32> = serde_json::from_str(store_json).unwrap();
451-
let peer = PeerId::from_str("1Aea5mXJrZNUwKxNU2y9xFE2qTFMjvFYSBf4T8cWEEP5Zd")
452-
.expect("Parsing to succeed.");
453-
let mut addresses = Vec::new();
454-
for i in 2..10 {
455-
let addr_string = format!("/ip4/127.0.0.{}", i);
456-
addresses.push(Multiaddr::from_str(&addr_string).expect("parsing to succeed"));
457-
}
458-
// should retain order when deserializing from bytes.
459-
assert_eq!(
460-
store
461-
.addresses_of_peer(&peer)
462-
.expect("Peer to exist")
463-
.cloned()
464-
.collect::<Vec<_>>(),
465-
addresses
466-
);
467-
assert_eq!(*store.get_custom_data(&peer).expect("Peer to exist"), 7);
468-
let ser = serde_json::to_string(&store).expect("Serialize to succeed.");
469-
let store_de: MemoryStore<u32> =
470-
serde_json::from_str(&ser).expect("Deserialize to succeed");
471-
// should retain order when serializing
472-
assert_eq!(
473-
store_de
474-
.addresses_of_peer(&peer)
475-
.expect("Peer to exist")
476-
.cloned()
477-
.collect::<Vec<_>>(),
478-
addresses
479-
);
480-
assert_eq!(*store_de.get_custom_data(&peer).expect("Peer to exist"), 7);
481-
}
482-
483336
#[test]
484337
fn update_address_on_connect() {
485338
async fn expect_record_update(

0 commit comments

Comments
 (0)