Commit Graph
54 Commits
Author SHA1 Message Date
Nils Andreas Svee 50f0dcb4dd perf(baseliner): bound the reselection channel to prevent memory buildup
Change the reselection channel from unbounded to a size of 1 and use non-blocking sends to avoid unnecessary queuing of reselection triggers.
2026-07-17 11:39:07 +07:00
Nils Andreas Svee 9811592f13 feat(platform): introduce abstractions for cross-platform interface statistics and traffic control
Decouple the rate controller from Linux-specific Netlink calls to support other operating systems. This adds a macOS backend for interface statistics and an "observe-only" mode for platforms where traffic shaping is not yet implemented.
2026-07-17 11:35:43 +07:00
Nils Andreas Svee b56c8b72cc refactor(main): modularize main loop and improve resource cleanup logic 2026-07-14 22:53:01 +07:00
Nils Andreas Svee 4aaf8fa100 chore: add SPDX license identifiers and copyright headers to source files
Apply the MPL-2.0 license to all source files and include the full license text to ensure legal compliance and proper attribution.
2026-04-23 12:39:52 +07:00
Nils Andreas Svee 58d536bb22 refactor(pinger): replace hashlru with standard HashMap and manual TTL cleanup
Remove the hashlru dependency to reduce bloat, replacing it with a Mutex-wrapped HashMap and manual entry expiration logic.
2026-04-23 00:33:07 +07:00
Nils Andreas Svee 1b959d52ed feat(main): Initialize and pass InFlightProbeCache to pinger threads 2026-04-23 00:16:19 +07:00
Nils Andreas Svee 6ae19b619a feat(pinger): Introduce InFlightProbeCache and update Ping traits 2026-04-23 00:16:19 +07:00
Nils Andreas Svee 3322e82b6c refactor: replace std::sync::mpsc with flume for improved channel performance
Migrate internal message passing to flume to leverage better performance and additional features like eventual fairness and selection.
2026-04-22 22:39:06 +07:00
Nils Andreas Svee e22c100e57 refactor(main): Relocate and enhance signal handler with improved logging 2026-04-22 21:45:27 +07:00
Nils Andreas Svee 72fe0230ee style: Apply general code formatting and import reordering 2026-04-22 21:45:25 +07:00
Nils Andreas Svee 8739ed4419 fix(metrics): use AtomicU32 for drop counter to support MIPS targets
Also bumps version to 0.4.1.
2026-04-14 02:14:55 +07:00
Nils Andreas Svee 3c689b1d1e feat(main): Orchestrate application shutdown and cleanup 2026-04-14 02:03:53 +07:00
Nils Andreas Svee 6e4e6b85e9 feat(shutdown): Implement global shutdown signal handling 2026-04-14 02:03:53 +07:00
Nils Andreas Svee f8976a78a2 feat(metrics): support arbitrary event tags and enhance monitoring coverage
Enable key-value metadata for events to track dry-run status and introduce new monitoring events for rate controller failure states.
2026-04-14 01:45:07 +07:00
Nils Andreas Svee 60e7ffc9e7 refactor(main): integrate MetricsSender across application entry point 2026-04-13 18:57:51 +07:00
Nils Andreas Svee 451d42640b refactor(metrics): encapsulate metric dispatch with MetricsSender 2026-04-13 18:57:50 +07:00
Nils Andreas Svee b930a01fd6 feat(observability): emit a startup event metric to signal application initialization
Send a telemetry event when the process starts to provide better visibility into application lifecycle transitions.
2026-04-13 17:49:19 +07:00
Nils Andreas Svee 1d7fd5800b refactor(observability): initialize metrics collection earlier in the startup sequence
Move the metrics thread and error channel initialization before the settling period and peer setup to ensure early telemetry is captured.
2026-04-13 17:34:17 +07:00
Nils Andreas Svee da3487e506 feat(observability): make metrics collection optional and granular
Wrap metrics senders in Option and conditionally initialize the monitoring thread to support granular configuration and reduced overhead.
2026-04-13 15:22:15 +07:00
Nils Andreas Svee 671e3f2671 refactor: standardize channel naming with tx and rx suffixes
Rename internal channel senders and receivers to follow standard Rust conventions for improved code consistency and readability.
2026-04-13 15:07:00 +07:00
Nils Andreas Svee 1452409fe8 feat(observability): Integrate metrics exporter into main application flow 2026-04-13 15:01:46 +07:00
Nils Andreas Svee 853f807e2c feat: add metrics module for monitoring
Initialize the Metrics structure to receive and process ping statistics as part of the monitoring subsystem.
2026-04-13 12:11:05 +07:00
Nils Andreas Svee f0fb3c9640 feat(monitoring): add dry-run mode to simulate qdisc rate changes
Enable a monitoring-only mode that logs intended bandwidth adjustments without applying them to the system via netlink.
2026-04-13 12:11:05 +07:00
Nils Andreas Svee 6d44556d63 style: reformat thread builder calls in main.rs
Standardize the formatting of thread spawning for the receiver and sender to improve code consistency and readability.
2026-04-13 12:06:50 +07:00
Nils Andreas Svee c2a7c5dfdb refactor(main): Optimize reflector list assignment 2026-02-22 17:05:06 +07:00
Nils Andreas Svee 1a87372ffb refactor(main): Centralize thread error handling 2026-02-22 16:58:01 +07:00
Nils Andreas Svee d4ad24ce4a feat(util): Introduce Mutex/RwLock error handling traits 2026-02-22 16:57:02 +07:00
Nils Andreas Svee fa370b323b feat(pinger): Configurable tick interval 2026-02-22 12:13:14 +07:00
Nils Andreas Svee 67bb185e28 refactor(main): Make reflector pool configurable 2026-02-21 22:42:20 +07:00
Nils Andreas Svee 90d7e75096 refactor: remove custom endian traits in favor of standard library 2026-02-20 22:40:37 +07:00
Nils Andreas Svee 7d11f2a273 no need to have the cake definition in it's own file
also remove everything we don't use
2022-11-25 20:21:54 +01:00
Nils Andreas Svee 5c0a6c304f ratecontroller: use durations instead of manually handling time 2022-11-10 13:54:26 +01:00
Nils Andreas Svee d5823634ca Handle initialization for first ratecontroller run better 2022-10-29 22:34:52 +02:00
Nils Andreas Svee 13ba3eaffe Rename 'clock' to 'time' 2022-10-29 22:30:19 +02:00
Nils Andreas Svee befccc0d6f move util functions into respective modules 2022-10-19 21:23:52 +02:00
Nils Andreas Svee cacc5b1a6b Apply Clippy recommendations 2022-10-15 14:58:05 +02:00
Nils Andreas Svee c1286b0ba9 Add clock wrapper class 2022-10-15 13:44:30 +02:00
Nils Andreas Svee f7bbb32788 Forgot to add endian mod to main 2022-10-15 13:43:37 +02:00
Nils Andreas Svee 1adc5fda77 Split out the ratecontroller logic into functions
The original Lua code was duplicated per direction, making it more difficult to read and more prone to mistakes when changing things.

Start splitting this logic out into functions that are called per direction
2022-10-13 17:18:54 +02:00
Nils Andreas Svee 214ffef6f3 Use proper error handling instead of lurking panics everywhere 2022-10-04 16:20:24 +02:00
Nils Andreas Svee 999987d157 Correct comment about ICMP ID 2022-10-03 14:21:12 +02:00
Nils Andreas Svee 2dae569088 Don't hardcode initial shaper bandwidth 2022-09-29 12:09:43 +02:00
Nils Andreas Svee e4f7b301b5 Use the version from Cargo 2022-09-29 00:24:46 +02:00
Nils Andreas Svee 0cbde6d1ea Clean up socket creation a bit 2022-09-29 00:24:31 +02:00
Nils Andreas Svee cf14fcd5f8 Some cleanups 2022-09-28 01:41:51 +02:00
Nils Andreas Svee f20ff59e78 Allow selection of measurement type in config 2022-09-28 01:29:43 +02:00
Nils Andreas Svee d73693c25f Set interface "directions" based on names 2022-09-28 00:50:20 +02:00
Nils Andreas Svee 9219ac690a Use a RwLock instead of a Mutex for the peers 2022-09-28 00:43:48 +02:00
Nils Andreas Svee e3b7b7e9ba Implement missing features, some cleanup 2022-09-28 00:25:35 +02:00
Nils Andreas Svee b147006a69 partly working implementation 2022-09-17 14:39:27 +02:00