1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
Copyright © 2023, ParallelChain Lab
Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
*/
//! Implementation of [ParallelChain protocol](https://github.com/parallelchain-io/parallelchain-protocol)
//! peer-to-peer (P2P) networking.
//!
//! ## Starting a peer
//!
//! ```no_run
//! use crate::configuration::Config;
//! use crate::messages::MessageGateChain;
//! use crate::engine;
//! use crate::network::{SendCommand, NetworkTopic};
//!
//! // 1. Build a configuration.
//! let config = Config::new();
//!
//! // 2. Create message gate chain.
//! let gates = MessageGateChain::new()
//! // .chain(message_gate1)
//! // .chain(message_gate2)
//! // ...
//!
//! // 3. Start P2P network.
//! let network = engine::start(config, vec![], gates).await.unwrap();
//!
//! // 4. Send out messages.
//! let sender = network.sender();
//! let _ = sender.send(SendCommand::Broadcast(NetworkTopic::new("topic".to_string()), Vec::new())).await;
//! ```
pub
pub