Skip to main content

asimov_protocol/
peer_hello.rs

1// This is free and unencumbered software released into the public domain.
2
3use super::NodeFeatureSet;
4use serde::{Deserialize, Serialize};
5
6pub const CURRENT_VERSION: u16 = 0;
7pub const MINIMUM_VERSION: u16 = 0;
8pub const MAXIMUM_VERSION: u16 = CURRENT_VERSION;
9pub const REQUIRED_FEATURES: &[&str] = &[];
10pub const SUPPORTED_FEATURES: &[&str] = &[];
11
12#[derive(Clone, Debug, Eq, Serialize, Deserialize, PartialEq)]
13pub struct PeerHello {
14    pub minimum_version: u16,
15    pub maximum_version: u16,
16    pub required_features: NodeFeatureSet<'static>,
17    pub supported_features: NodeFeatureSet<'static>,
18}
19
20impl Default for PeerHello {
21    fn default() -> Self {
22        Self {
23            minimum_version: MINIMUM_VERSION,
24            maximum_version: MAXIMUM_VERSION,
25            required_features: NodeFeatureSet::Borrowed(REQUIRED_FEATURES),
26            supported_features: NodeFeatureSet::Borrowed(SUPPORTED_FEATURES),
27        }
28    }
29}