1#![deny(missing_docs)]
7
8pub mod config;
10pub mod event;
12pub mod flags;
14pub mod metadata;
16pub mod solid_entry_point;
18pub mod storage;
20pub mod tangle;
22pub mod tangle_worker;
24pub mod tip_pool_cleaner_worker;
26pub mod traversal;
28pub mod unreferenced_message;
30pub mod urts;
32
33mod conflict;
34mod vec_set;
35mod vertex;
36mod vertices;
37
38pub use conflict::ConflictReason;
39pub use tangle::Tangle;
40pub use tangle_worker::TangleWorker;
41
42use tip_pool_cleaner_worker::TipPoolCleanerWorker;
43
44use crate::vec_set::VecSet;
45
46use bee_message::Message;
47use bee_runtime::node::{Node, NodeBuilder};
48
49use std::{ops::Deref, sync::Arc};
50
51#[derive(Clone)]
53pub struct MessageRef(pub(crate) Arc<Message>);
54
55impl Deref for MessageRef {
56 type Target = Message;
57
58 fn deref(&self) -> &Self::Target {
59 &*self.0
60 }
61}
62
63pub fn init<N: Node>(tangle_config: &config::TangleConfig, node_builder: N::Builder) -> N::Builder
65where
66 N::Backend: storage::StorageBackend,
67{
68 node_builder
69 .with_worker_cfg::<TangleWorker>(tangle_config.clone())
70 .with_worker::<TipPoolCleanerWorker>()
71}