Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 23 additions & 17 deletions breakwater/src/cli_args.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,8 @@ pub const DEFAULT_NETWORK_BUFFER_SIZE_STR: &str = formatcp!("{}", DEFAULT_NETWOR
#[derive(clap::Parser, Debug)]
#[clap(author, version, about, long_about = None)]
pub struct CliArgs {
/// Listen address to bind to (multiple can be specified).
/// The default value will listen on all interfaces for IPv4 and IPv6 packets.
#[clap(short, long = "listener-address", default_value = "[::]:1234")]
pub listen_addresses: Vec<SocketAddr>,
#[clap(flatten)]
pub network_listener: NetworkListenerCliArgs,

/// Width of the drawing surface.
#[clap(long, default_value_t = 1280)]
Expand All @@ -27,15 +25,6 @@ pub struct CliArgs {
#[clap(short, long, default_value_t = 30)]
pub fps: u32,

/// The size in bytes of the network buffer used for each open TCP connection.
/// Please use at least 64 KB (64_000 bytes).
#[clap(
long,
default_value = DEFAULT_NETWORK_BUFFER_SIZE_STR,
value_parser = 64_000..100_000_000,
)]
pub network_buffer_size: i64,

/// Listen address the Prometheus exporter should listen on.
#[clap(short, long, default_value = "[::]:9100")]
pub prometheus_listen_address: String,
Expand All @@ -54,10 +43,6 @@ pub struct CliArgs {
#[clap(long)]
pub disable_statistics_save_file: bool,

/// Allow only a certain number of connections per ip address
#[clap(short, long)]
pub connections_per_ip: Option<u64>,

/// Create (or use an existing) shared memory region for the framebuffer.
/// This enables other applications to read and write Pixel values to the framebuffer or can be
/// used to persist the canvas across restarts.
Expand All @@ -67,3 +52,24 @@ pub struct CliArgs {
#[clap(flatten)]
pub sinks: SinkCliArgs,
}

#[derive(clap::Args, Debug)]
pub struct NetworkListenerCliArgs {
/// Listen address to bind to (multiple can be specified).
/// The default value will listen on all interfaces for IPv4 and IPv6 packets.
#[clap(short, long = "listener-address", default_value = "[::]:1234")]
pub listen_addresses: Vec<SocketAddr>,

/// The size in bytes of the network buffer used for each open TCP connection.
/// Please use at least 64 KB (64_000 bytes).
#[clap(
long,
default_value = DEFAULT_NETWORK_BUFFER_SIZE_STR,
value_parser = 64_000..100_000_000,
)]
pub network_buffer_size: i64,

/// Allow only a certain number of connections per ip address
#[clap(short, long)]
pub connections_per_ip: Option<u64>,
}
16 changes: 10 additions & 6 deletions breakwater/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -75,16 +75,20 @@ async fn main() -> eyre::Result<()> {
)?;

let mut server = Server::new(
&args.listen_addresses,
&args.network_listener.listen_addresses,
fb.clone(),
statistics_tx.clone(),
args.network_buffer_size
args.network_listener
.network_buffer_size
.try_into()
// This should never happen as clap checks the range for us
.with_context(|| {
format!("invalid network buffer size: {}", args.network_buffer_size)
format!(
"invalid network buffer size: {}",
args.network_listener.network_buffer_size
)
})?,
args.connections_per_ip,
args.network_listener.connections_per_ip,
)
.await
.context("failed to start pixelflut server")?;
Expand All @@ -104,7 +108,7 @@ async fn main() -> eyre::Result<()> {
let (sink_tasks, ffmpeg_thread_present) = start_sinks(
&args.sinks,
fb.clone(),
&args.listen_addresses,
&args.network_listener.listen_addresses,
args.fps,
statistics_tx,
statistics_information_rx,
Expand All @@ -123,7 +127,7 @@ async fn main() -> eyre::Result<()> {
.context("failed to stop sink")?;
}

// We need to stop this thread as the last, as others always try to send statistics to it
// We need to stop this thread last, as others always try to send statistics to it
statistics_thread.abort();

if ffmpeg_thread_present {
Expand Down
Loading