veilid6, begin commenting config w/ rustdoc

This commit is contained in:
Adam Shamblin 2022-09-18 17:01:38 -06:00
parent 05fda67c14
commit a7e9200c30
No known key found for this signature in database
GPG Key ID: 22E0BC8E6B4D8C8E

View File

@ -6,6 +6,16 @@ use serde::*;
pub type ConfigCallbackReturn = Result<Box<dyn core::any::Any + Send>, VeilidAPIError>; pub type ConfigCallbackReturn = Result<Box<dyn core::any::Any + Send>, VeilidAPIError>;
pub type ConfigCallback = Arc<dyn Fn(String) -> ConfigCallbackReturn + Send + Sync>; pub type ConfigCallback = Arc<dyn Fn(String) -> ConfigCallbackReturn + Send + Sync>;
/// Enable and configure HTTPS access to the Veilid node
///
/// ```yaml
/// https:
/// enabled: false
/// listen_address: ':5150'
/// path: 'app'
/// url: 'https://localhost:5150'
/// ```
///
#[derive(Default, Debug, Clone, Serialize, Deserialize)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct VeilidConfigHTTPS { pub struct VeilidConfigHTTPS {
pub enabled: bool, pub enabled: bool,
@ -14,6 +24,16 @@ pub struct VeilidConfigHTTPS {
pub url: Option<String>, // Fixed URL is not optional for TLS-based protocols and is dynamically validated pub url: Option<String>, // Fixed URL is not optional for TLS-based protocols and is dynamically validated
} }
/// Enable and configure HTTP access to the Veilid node
///
/// ```yaml
/// http:
/// enabled: false
/// listen_address: ':5150'
/// path: 'app"
/// url: 'https://localhost:5150'
/// ```
///
#[derive(Default, Debug, Clone, Serialize, Deserialize)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct VeilidConfigHTTP { pub struct VeilidConfigHTTP {
pub enabled: bool, pub enabled: bool,
@ -22,12 +42,28 @@ pub struct VeilidConfigHTTP {
pub url: Option<String>, pub url: Option<String>,
} }
/// Application configuration
///
/// Configure web access to the Prograssive Web App (PWA)
///
/// To be implemented...
///
#[derive(Default, Debug, Clone, Serialize, Deserialize)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct VeilidConfigApplication { pub struct VeilidConfigApplication {
pub https: VeilidConfigHTTPS, pub https: VeilidConfigHTTPS,
pub http: VeilidConfigHTTP, pub http: VeilidConfigHTTP,
} }
/// Enable and configure UDP
///
/// ```yaml
/// udp:
/// enabled: true
/// socket_pool_size: 0
/// listen_address: ':5150'
/// public_address: ''
/// ```
///
#[derive(Default, Debug, Clone, Serialize, Deserialize)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct VeilidConfigUDP { pub struct VeilidConfigUDP {
pub enabled: bool, pub enabled: bool,
@ -36,6 +72,16 @@ pub struct VeilidConfigUDP {
pub public_address: Option<String>, pub public_address: Option<String>,
} }
/// Enable and configure TCP
///
/// ```yaml
/// tcp:
/// connect: true
/// listen: true
/// max_connections: 32
/// listen_address: ':5150'
/// public_address: ''
///
#[derive(Default, Debug, Clone, Serialize, Deserialize)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct VeilidConfigTCP { pub struct VeilidConfigTCP {
pub connect: bool, pub connect: bool,
@ -45,6 +91,17 @@ pub struct VeilidConfigTCP {
pub public_address: Option<String>, pub public_address: Option<String>,
} }
/// Enable and configure Web Sockets
///
/// ```yaml
/// ws:
/// connect: true
/// listen: true
/// max_connections: 16
/// listen_address: ':5150'
/// path: 'ws'
/// url: 'ws://localhost:5150/ws'
///
#[derive(Default, Debug, Clone, Serialize, Deserialize)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct VeilidConfigWS { pub struct VeilidConfigWS {
pub connect: bool, pub connect: bool,
@ -55,6 +112,17 @@ pub struct VeilidConfigWS {
pub url: Option<String>, pub url: Option<String>,
} }
/// Enable and configure Secure Web Sockets
///
/// ```yaml
/// wss:
/// connect: true
/// listen: false
/// max_connections: 16
/// listen_address: ':5150'
/// path: 'ws'
/// url: ''
///
#[derive(Default, Debug, Clone, Serialize, Deserialize)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct VeilidConfigWSS { pub struct VeilidConfigWSS {
pub connect: bool, pub connect: bool,
@ -65,6 +133,13 @@ pub struct VeilidConfigWSS {
pub url: Option<String>, // Fixed URL is not optional for TLS-based protocols and is dynamically validated pub url: Option<String>, // Fixed URL is not optional for TLS-based protocols and is dynamically validated
} }
/// Configure Network Protocols
///
/// Veilid can communicate over UDP, TCP, and Web Sockets.
///
/// All protocols are available by default, and the Veilid node will
/// sort out which protocol is used for each peer connection.
///
#[derive(Default, Debug, Clone, Serialize, Deserialize)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct VeilidConfigProtocol { pub struct VeilidConfigProtocol {
pub udp: VeilidConfigUDP, pub udp: VeilidConfigUDP,
@ -73,6 +148,14 @@ pub struct VeilidConfigProtocol {
pub wss: VeilidConfigWSS, pub wss: VeilidConfigWSS,
} }
/// Configure TLS
///
/// ```yaml
/// tls:
/// certificate_path: /path/to/cert
/// private_key_path: /path/to/private/key
/// connection_initial_timeout_ms: 2000
///
#[derive(Default, Debug, Clone, Serialize, Deserialize)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct VeilidConfigTLS { pub struct VeilidConfigTLS {
pub certificate_path: String, pub certificate_path: String,
@ -80,6 +163,8 @@ pub struct VeilidConfigTLS {
pub connection_initial_timeout_ms: u32, pub connection_initial_timeout_ms: u32,
} }
/// Configure the Distributed Hash Table (DHT)
///
#[derive(Default, Debug, Clone, Serialize, Deserialize)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct VeilidConfigDHT { pub struct VeilidConfigDHT {
pub resolve_node_timeout_ms: Option<u32>, pub resolve_node_timeout_ms: Option<u32>,
@ -97,6 +182,8 @@ pub struct VeilidConfigDHT {
pub validate_dial_info_receipt_time_ms: u32, pub validate_dial_info_receipt_time_ms: u32,
} }
/// Configure RPC
///
#[derive(Default, Debug, Clone, Serialize, Deserialize)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct VeilidConfigRPC { pub struct VeilidConfigRPC {
pub concurrency: u32, pub concurrency: u32,
@ -107,6 +194,8 @@ pub struct VeilidConfigRPC {
pub max_route_hop_count: u8, pub max_route_hop_count: u8,
} }
/// Configure the network routing table
///
#[derive(Default, Debug, Clone, Serialize, Deserialize)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct VeilidConfigRoutingTable { pub struct VeilidConfigRoutingTable {
pub limit_over_attached: u32, pub limit_over_attached: u32,