peermerge/
feeds.rs

1use random_access_storage::RandomAccess;
2use std::fmt::Debug;
3
4mod common;
5#[cfg(feature = "hypercore-feed")]
6mod hypercore;
7
8pub(crate) use common::{get_feed, get_feed_discovery_keys, insert_feed, remove_feed};
9pub(crate) use common::{FeedMap, SHUTDOWN_SIGNAL_NAME};
10
11pub use ::hypercore_protocol::{Protocol as FeedProtocol, ProtocolBuilder};
12#[cfg(not(target_arch = "wasm32"))]
13pub(crate) use hypercore::{
14    create_new_read_disk_hypercore as create_new_read_disk_feed,
15    create_new_write_disk_hypercore as create_new_write_disk_feed, get_path_from_discovery_key,
16    open_disk_hypercore as open_disk_feed,
17};
18pub(crate) use hypercore::{
19    create_new_read_memory_hypercore as create_new_read_memory_feed,
20    create_new_write_memory_hypercore as create_new_write_memory_feed,
21};
22pub(crate) use hypercore::{on_protocol, HypercoreWrapper as Feed};
23#[cfg(not(target_arch = "wasm32"))]
24pub use random_access_disk::RandomAccessDisk as FeedDiskPersistence;
25pub use random_access_memory::RandomAccessMemory as FeedMemoryPersistence;
26
27/// Type for a feed's persistence
28pub trait FeedPersistence: RandomAccess + Debug + Send + 'static {}
29
30impl<T> FeedPersistence for T where T: RandomAccess + Debug + Send + 'static {}
31
32// TODO: Expose p2panda's versions of
33// Feed, FeedPersistence, FeedMemoryPersistence, FeedDiskPersistence, ProtocolBuilder, Protocol<IO>
34// and create/open_*_feed functions below.