summaryrefslogtreecommitdiff
path: root/crates/tor-memquota/src
Commit message (Collapse)AuthorAgeFilesLines
* Upgrade to derive_more version 1.0.0Nick Mathewson2024-09-254-6/+5
| | | | | | The `derive_more` crate broke backward compatibility with this version, so this change involved quite a few manual fixups. With luck, they'll keep compatibility for some while in the future.
* tor-memquota: queue plan: Add a cross-referenceIan Jackson2024-09-101-0/+3
|
* tor-memquota: queue plan: Clean up intent and make into a doc commentIan Jackson2024-09-101-32/+24
| | | | Remove extraneous text, wrap it, and change to a more declarative style.
* tor-memquota: queue plan: Copy from !1997 discussionIan Jackson2024-09-101-0/+32
|
* tor-memquota: Worsify formatting to stop rustfmt making it even worseIan Jackson2024-09-101-1/+3
|
* tor-memquota: Use clippy::arithmetic_side_effects, against panicsIan Jackson2024-09-104-0/+12
| | | | | | This detect possibly-panicking operations. Empirically this lint seems rather better now.
* tor-memquota: Document that we're panic-freeIan Jackson2024-09-101-0/+10
|
* tor-memquota: Avoid a perhaps-impossible division-by-zero (fmt)Ian Jackson2024-09-101-1/+5
|
* tor-memquota: Avoid a perhaps-impossible division-by-zeroIan Jackson2024-09-101-1/+3
| | | | | | It is not locally obvious that n_particips can't be zero, here. Certainly if it *is* that would be state corruption, but I don't think I can quite rule it out in the presence of a bug somewhere else.
* tor-memquota: Use a const to hoist a panic to compile-timeIan Jackson2024-09-101-1/+3
|
* tor-memquota: Use checked_sub .. expect in two places (fmt)Ian Jackson2024-09-101-2/+6
|
* tor-memquota: Use checked_sub .. expect in two placesIan Jackson2024-09-101-2/+6
| | | | | In these two places, underflow is statically impossible, but demonstrating that to the compiler is probably too onerous.
* tor-memquota: Move some information into the proper docsIan Jackson2024-09-101-0/+8
| | | | | This sentence is very important piece of overall explanation, but didn't make it into the crate level docs.
* Fix typo in tor_memquota::ConfigBuilder docIan Jackson2024-09-041-1/+1
| | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2374#note_3070500
* tor-memquota: Provide reconfigure methodIan Jackson2024-09-042-1/+56
|
* tor-memquota: Break out reclamation wakeupIan Jackson2024-09-041-1/+6
|
* tor-memquota: Make reclamation wakeup no longer throw internal errorsIan Jackson2024-09-042-5/+6
| | | | I realised a way this could happen without there being a bug.
* tor-memquota: Unstable cargo feature for exposing info for testingIan Jackson2024-09-042-2/+23
|
* tor-memquota: Rework optionality configurationIan Jackson2024-09-045-30/+86
| | | | | | | | | | | | | | | | | | Allow a `Config` to represent "this is supposed to be disabled". This involves wrapping the actual built configuration in an IfEnabled. We treat max = usize::MAX, or max being unspecified, as "disable". We can now reporting an error during config building if max is set but we're compiling the feature out. Conversely, we can now make `MemoryQuotaTracker::new()` unconditional, since enabled confiogurations are uninhabited when the feature is compiled out. We change how we derive the setters, deriving them from the Builder. I chose to abolish the use of derive_builder. See the new comment on ConfigBuilder.
* tor-memquota: impl PartialEq for IfEnabled and EnabledTokenIan Jackson2024-09-041-2/+4
|
* tor-memquota: Add unit tests for config handlingIan Jackson2024-09-041-0/+56
| | | | | We're about to change the config behaviour; adding these tests first allows us to demonstrate the changes.
* Fix typosDimitris Apostolou2024-09-036-15/+15
|
* Move stream_peek into tor-async-utilsJim Newsome2024-08-293-514/+3
|
* Expose StreamUnobtrusivePeeker::as_raw_inner_pin_mutJim Newsome2024-08-271-1/+1
|
* Remove NoopWaker; use futures::task::noop_waker_ref insteadJim Newsome2024-08-274-21/+5
|
* byte_qty: Move to tor-basic-utilsIan Jackson2024-08-275-74/+5
| | | | Code motion of byte_qty.rs, and minimal necessary supporting changes.
* byte_qty: Rename Qty to ByteQty and make it pubIan Jackson2024-08-272-8/+12
| | | | | | | We're going to make this into a proper public type. It's going to move into a different crate, where there's no prelude, so give it a bespoke set of imports too.
* byte_qty: Move Qty into its own module, byte_qty.Ian Jackson2024-08-274-57/+68
| | | | | | | Code motion, part 1. Also explain in comments at the top of the new module why we are doing this at all rather than using an existing thing.
* tor-memquota: Move the macro-containing modules earlier in the lib.rsIan Jackson2024-08-271-2/+3
| | | | | | This makes more sense than having them alphabetical. Noticed while I was working on moving other code.
* Merge branch 'peekable-poll-set' into 'main'Jim Newsome2024-08-213-51/+37
|\ | | | | | | | | Add and use `PeekableStream` and `UnobtrusivePeekableStream` See merge request tpo/core/arti!2345
| * Expose stream_peekJim Newsome2024-08-212-6/+18
| |
| * PeekFuture: implement for all PeekableStreamJim Newsome2024-08-211-5/+6
| |
| * StreamUnobtrusivePeeker: implement PeekableStream and UnobtrusivePeekableStreamJim Newsome2024-08-212-41/+14
| |
* | tor-memquota: IfEnabled: Complete a thought in a commentIan Jackson2024-08-211-1/+3
| | | | | | | | | | Reported at https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2351#note_3062292
* | tor-memquota: Pass EnabledToken to HasMemoryCost methodIan Jackson2024-08-192-17/+29
| |
* | tor-memquota: Pass EnabledToken to IsParticipant methodsIan Jackson2024-08-196-19/+22
| | | | | | | | | | | | | | This will hopefully allow much caller code to be compiled out. The users (IsParticipant impls) don't generally need to bother with it - they can just ignore it.
* | tor-memquota: Put EnabledToken in various structs, including the reclaimerIan Jackson2024-08-193-4/+26
| |
* | tor-memquota: Allow memory tracking to be compiled outIan Jackson2024-08-195-6/+43
| | | | | | | | | | | | | | Now if we run doctests without the feature enabled, we test that a no-op MemoryQuotaTracker works. Those tests aren't currently run in CI, but they will be after !2350.
* | tor-memquota: Support a no-op MemoryQuotaTrackerIan Jackson2024-08-194-51/+168
| | | | | | | | | | | | | | | | | | | | Wrap up most of the structures in IfEnabled. Sadly this diff is very noisy. I experimented with macros for the little enabled check at the start of each function but they didn't really help. We don't test this yet. We'll do a smoke test of this later.
* | tor-memquota: Introduce self_ variables in mtracker.rs (fmt)Ian Jackson2024-08-191-1/+4
| |
* | tor-memquota: Introduce self_ variables in mtracker.rsIan Jackson2024-08-191-48/+69
| | | | | | | | | | | | | | | | We're going to bind self_ to something more complicated, in each of these functions, and that's what all these field references etc. will need to refer to. Do this mechanical change first for clarity.
* | tor-memquota: Introduce IfEnabled and EnabledTokenIan Jackson2024-08-193-0/+84
| | | | | | | | EnabledToken is pub because it's going to appear in public APIs.
* | tor-memquota: find_in_tracker: Allow internal use of non-unit errorsIan Jackson2024-08-191-6/+6
| |
* | tor-memquota: pre-apply rustfmt churnIan Jackson2024-08-192-4/+14
|/ | | | This will make some later diffs easier to read.
* tor-memquota: mq_queue: tests: Replace eprintln with debugIan Jackson2024-08-151-1/+1
| | | | We use `debug!` (tracing logging) everywhere else. Use it here too.
* tor-memquota: mq_queue: tests: fill_and_empty: check balanceIan Jackson2024-08-151-0/+3
|
* tor-memquota: mq_queue: tests: break out check_zero_claimed and fix bugIan Jackson2024-08-151-1/+17
| | | | | | | | | | | Each queue has two `Participation`s, not just one. This didn't matter in the `lifecycle` test, because one of the two Participations was never touched since it was cloned, and a fresh clone starts out with a cache of zero. But we're about to reuse this code in a context where both Participations end up with a cache.
* tor-memquota: mq_queue: impl Default for MpscUnboundedSpecIan Jackson2024-08-151-1/+1
|
* tor-memquota: mq_queue: Provide `new` constructors for SpecsIan Jackson2024-08-152-3/+8
| | | | | Discussed here https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2292#note_3059928
* tor-memquota: mq_queue: Fix doc for `MpscSpec`Ian Jackson2024-08-151-2/+2
| | | | It's not a unit. It's `MpscUnboundedSpec` that's a unit