Federated relay tier: peer flooding, per-member isolation, registry admission and relay discovery
This commit is contained in:
+33
-2
@@ -70,6 +70,16 @@ enum Command {
|
||||
listen: String,
|
||||
#[arg(long, default_value_t = relay::DEFAULT_CAPACITY)]
|
||||
capacity: usize,
|
||||
#[arg(long = "peer")]
|
||||
peers: Vec<String>,
|
||||
#[arg(long)]
|
||||
url: Option<String>,
|
||||
#[arg(long)]
|
||||
registry: Option<String>,
|
||||
#[arg(long)]
|
||||
ma_key: Option<String>,
|
||||
#[arg(long, default_value_t = 3)]
|
||||
max_hops: usize,
|
||||
},
|
||||
Status,
|
||||
Member {
|
||||
@@ -147,6 +157,10 @@ enum RegistryCommand {
|
||||
id: String,
|
||||
},
|
||||
List,
|
||||
SetRelays {
|
||||
#[arg(required = true)]
|
||||
relays: Vec<String>,
|
||||
},
|
||||
Show,
|
||||
Serve {
|
||||
#[arg(long, default_value = "127.0.0.1:7800")]
|
||||
@@ -231,10 +245,26 @@ async fn main() -> Result<()> {
|
||||
println!("control API POST http://{}/v1/local/query", handle.addr);
|
||||
tokio::signal::ctrl_c().await?;
|
||||
}
|
||||
Command::Relay { listen, capacity } => {
|
||||
Command::Relay {
|
||||
listen,
|
||||
capacity,
|
||||
peers,
|
||||
url,
|
||||
registry,
|
||||
ma_key,
|
||||
max_hops,
|
||||
} => {
|
||||
let options = relay::RelayOptions {
|
||||
capacity,
|
||||
peers,
|
||||
url,
|
||||
registry,
|
||||
ma_key,
|
||||
max_hops,
|
||||
};
|
||||
let (listener, addr) = relay::bind(&listen).await?;
|
||||
println!("relay listening on http://{addr} (capacity {capacity})");
|
||||
relay::run(listener, capacity).await?;
|
||||
relay::run(listener, options).await?;
|
||||
}
|
||||
Command::Status => commands::status(&cli.config).await?,
|
||||
Command::Member { command } => match command {
|
||||
@@ -271,6 +301,7 @@ async fn main() -> Result<()> {
|
||||
}
|
||||
RegistryCommand::Remove { id } => commands::registry_remove(&dir, &id)?,
|
||||
RegistryCommand::List => commands::registry_list(&dir)?,
|
||||
RegistryCommand::SetRelays { relays } => commands::registry_set_relays(&dir, &relays)?,
|
||||
RegistryCommand::Show => commands::registry_show(&dir)?,
|
||||
RegistryCommand::Serve { listen } => commands::registry_serve(&dir, &listen).await?,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user