Nils Andreas Svee
7e0f434251
refactor: replace legacy Config with Settings
...
Remove legacy src/config.rs and migrate all application consumers to
the nested Settings model. Baseliner, metrics, pingers, ratecontroller,
reflector selector, and main now use Settings. Derived min rates become
methods on NetworkSettings rather than stored legacy fields.
MeasurementType and ObservabilityProtocol move into the settings module.
2026-08-07 16:04:59 +07:00
Nils Andreas Svee
7f557f26d4
style(reflector): remove redundant comment in reflector selector
...
Eliminate an outdated comment to improve code readability and maintain a clean codebase.
2026-07-24 00:05:41 +07:00
Nils Andreas Svee
c1bcb22b23
refactor(baseliner): Replace shared Mutex state with thread-safe control snapshots
...
Eliminate lock contention between the baseliner, ratecontroller, and selector by moving to a message-passing architecture using immutable snapshots of reflector state. This improves data consistency and simplifies cross-thread communication.
2026-07-24 00:05:41 +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
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
ea19c6d68b
style: remove unused synchronization imports
...
Eliminate unused Arc, Mutex, and RwLock imports to clean up codebase and reduce compiler warnings.
2026-04-22 22:26:44 +07:00
Nils Andreas Svee
a81d208c0d
style: refine logging verbosity and improve diagnostic messages
...
Demote baseline telemetry to debug level, add context to rate controller warnings, and remove redundant string conversions in reflector selection logs.
2026-04-22 22:09:26 +07:00
Nils Andreas Svee
d0e3394f03
refactor: add ArcMutex/ArcRwLock type aliases
...
Replace repeated Arc> and Arc> with concise type aliases for readability.
2026-04-18 19:04:35 +02:00
Nils Andreas Svee
bda1a44b6e
feat(threads): Add graceful shutdown checks to worker loops
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
2db63e6159
refactor(reflector_selector): migrate to MetricsSender for event dispatch
2026-04-13 18:57:50 +07:00
Nils Andreas Svee
530a715bdf
fix(observability): refresh metric timestamps on each loop iteration
...
Move clock initialization inside processing loops to ensure exported metrics reflect the current time rather than a stale timestamp.
2026-04-13 16:32:30 +07:00
Nils Andreas Svee
5af5b6597b
feat(observability): report reflector selection events and outcomes
...
Emit metrics detailing why a reflector reselection was triggered and which peers were selected to improve selection process visibility.
2026-04-13 15:28:56 +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
e5ba021a96
feat(observability): Pass metrics sender to rate controller and reflector selector
2026-04-13 15:01:46 +07:00
Nils Andreas Svee
c116dd3e74
refactor(sync): Replace unwrap with anyhow-based locking
2026-02-22 16:57:11 +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
1357a23578
fix(reflector): Remove no-op 'len()' call
2026-02-22 12:13:14 +07:00
Nils Andreas Svee
830e21363a
refactor: replace rand crate with fastrand
...
Replaces the `rand` crate with `fastrand` for improved performance in rate control and reflector selection.
2026-02-22 00:33:57 +07:00
Nils Andreas Svee
99a7928a66
style(reflector): Reorder imports and truncate vector
2026-02-21 22:42:20 +07:00
Nils Andreas Svee
127ed692c3
refactor(reflector): Improve candidate selection loop
2026-02-21 22:42:20 +07:00
Nils Andreas Svee
66a2834192
feat(reflector): Use configurable reselection time
2026-02-21 22:42:20 +07:00
Nils Andreas Svee
a427d4078b
chore(deps): Update rand and log imports
2026-02-21 00:22:57 +07:00
Nils Andreas Svee
3b9f00cd75
fix: account for rand crate changes
2025-05-08 23:48:38 +07:00
Nils Andreas Svee
bb9d1ed4af
reflector_selector: Simplify setting sleep time
2022-10-29 22:43:47 +02:00
Nils Andreas Svee
cacc5b1a6b
Apply Clippy recommendations
2022-10-15 14:58:05 +02:00
Nils Andreas Svee
890b3f8c19
Drop pub(crate) and use pub everywhere for now
2022-10-04 16:25:42 +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
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