summaryrefslogtreecommitdiff
path: root/crates/tor-rtmock/src
Commit message (Collapse)AuthorAgeFilesLines
* rtmock: Implement server support.Nick Mathewson2026-01-291-10/+44
|
* rtcompat: new server-related members on TlsProvider trait.Nick Mathewson2026-01-292-1/+16
| | | | | These are as yet unimplemented; there's a stub type for the providers (nativetls) that won't actually have them.
* rtcompat: new own_certificate method on CertifiedConn traitNick Mathewson2026-01-291-0/+6
|
* maint/add_warning: Run script to add new warningGabriela Moldovan2026-01-271-0/+1
| | | | This adds the lint to all our crates.
* Fix name of clippy lint to unchecked_time_subtraction (2)Ian Jackson2025-11-067-7/+7
| | | | Run maint/add_warning
* tor-rtmock-simple-time-typos: Fix typosNiel Duysters2025-10-011-3/+3
|
* Remove "doc_auto_cfg" incantation from all crates.Nick Mathewson2025-09-291-1/+1
| | | | This feature has been removed from nightly, in favor of doc_cfg.
* tor-rtmock: MockTimeCore: fix docsIan Jackson2025-08-121-2/+2
|
* tor-rtmock: Slightly clean up CrateGetters macroIan Jackson2025-08-121-4/+5
| | | | | | | I want to use this as an example in a talk. Add a blank line that makes it more readable, and generate only one impl block with many methods.
* Switch Cargo.toml files to edition 2024.Nick Mathewson2025-08-077-21/+17
| | | | | | | | | | | | | | First, run ``` git grep -l "^edition =" | xargs perl -i -pe 's/^edition *=.*/edition = "2024"/;' ``` Second, manually verify that all Cargo.toml files have changed, and nothing else has changed. Third, run cargo fmt again.
* Update code for Edition 2024Nick Mathewson2025-08-071-13/+21
| | | | | | | | | | | | | | | | | | 1. Run cargo fix --edition 2. Selectively revert the "if let"->"match" changes. These changes are meant to protect us from the lifetime changes for "if let" bindings in Rust 2024. But we're not actually relying on the old lifetime rules anywhere, and the match syntax here is quite ugly. 3. Automatically revert `$pat:expr_2021` to `$pat:expr`. (We don't actually want to restrict the expression syntax that our macros accept). Done with `git grep -l expr_2021 | xargs perl -i -pe 's/expr_2021/expr/g;'` 4. Run cargo fmt.
* tor-rtcompat, tor-rtmock: Allow unused functions.Gabriela Moldovan2025-07-071-0/+1
| | | | These only serve as a compile-time check.
* Temporarily suppress mismatched_lifetime_syntaxes.Gabriela Moldovan2025-07-071-0/+1
| | | | See #2060.
* tor-rtmock: Use subthread_spawn for spawn_blocking.Wesley Aptekar-Cassels2025-06-091-38/+6
| | | | Fixes: #2033
* *: use std::io::Error::other in many placesNick Mathewson2025-05-152-11/+4
| | | | | | | The `IoError::other` function is an easier way to say `IoError::new(IoErrorKind::Other, ...)`. It's been around since 1.74, but clippy started warning about the more verbose version in 1.87.
* rtmock: use Option::replace instead of mem::replaceNick Mathewson2025-05-151-8/+6
| | | | | Option::replace has been around since 1.31, but the clippy warning is new.
* tor-rtcompat: task tests: Allow a clippy lintIan Jackson2025-04-101-0/+1
| | | | | This doesn't seem to happen with my local compiler. Anyway, suppress it. I don't think we want to split up this function.
* tor-rtcompat: task: Break out subthread_yieldIan Jackson2025-04-101-30/+36
| | | | | This gets rid of a clippy complaint about subthread_block_on_future being too complicated.
* tor-rtcompat: task tests: Allow a clippy lintIan Jackson2025-04-101-0/+1
|
* tor-rtcompat: BlockOn: relax bounds on reenter_block_onIan Jackson2025-04-092-2/+2
| | | | The future no longer needs to be `Send + 'static`.
* tor-rtmock: task: subthread_block_on_future; Yield a bit moreIan Jackson2025-04-091-2/+18
|
* tor-rtmock: task tests: New subhtread_pingpong testIan Jackson2025-04-091-1/+43
| | | | | | | | This test demonstrates that the intended use pattern compiles and works. It couldn't exist until now because we couldn't conveniently make a `Send + 'static` future out of `rx.next()`.
* tor-rtmock: task: Redo subthread_block_on_future; poll on the subthread (fmt)Ian Jackson2025-04-091-14/+3
|
* tor-rtmock: task: Redo subthread_block_on_future; poll on the subthreadIan Jackson2025-04-091-68/+62
| | | | | | | | | | | | | | | | | | Previously we put the future into the data structure, had the exeuctor poll it there, and only woke up the subthread when the future was ready. Now, instead, we put a new TaskFutureInfo variant into the data structure, and the executor context switches to the subthread every time. Then we poll the future on the subthread. Moving the future into the data structure meant we had to do use a proxy future to store the return value. Now that's not needed any more. Now the future doesn't need to be Send + 'static. Fixes #1933.
* tor-rtmock: task: Minor refactoringIan Jackson2025-04-091-4/+6
| | | | | | Eliminate the data_ variable and instead use a block scope. This seems a bit nicer, and will align slightly better with forthcoming changes.
* tor-rtmock: task: import Left and RightIan Jackson2025-04-091-3/+3
|
* tor-rtmock: task: impl Debug for TaskFutureInfoIan Jackson2025-04-091-1/+3
|
* tor-rtmock: task: Break out Waker::make_wakerIan Jackson2025-04-091-5/+10
| | | | We're going to introduce a new call site for this.
* tor-rtmock: Improve a commentIan Jackson2025-04-091-1/+6
| | | | Be clearer that `fut` is only `None` during the main loop.
* tor-rtmock: Fix a commentIan Jackson2025-04-091-1/+1
| | | | | | SubthreadFuture was a type in some early version of this branch, that it's not in-tree now. subthread_spawn returns impl Future and the concrete type is a channel receiver.
* AF_UNIX terminology: Rename two error structsIan Jackson2025-03-241-2/+2
| | | | | | We change `NoUnixAddressSupport` to `NoAfUnixSocketSupport` because it doesn't make much sense to talk about support for the addresses separately from support for the sockets.
* tor-rtmock: Add since= to deprecateds (formatting)Ian Jackson2025-03-061-1/+2
|
* tor-rtmock: Add since= to deprecatedsIan Jackson2025-03-062-2/+2
| | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2843#note_3169975
* tor-rtmock: Actually apply deprecated attr to deprecated time.rsIan Jackson2025-03-063-5/+15
|
* tor-rtcompat: Rename spawn_thread to spawn_blockingIan Jackson2025-03-042-9/+9
| | | | Let's use Tokio terminology here.
* tor-rtcompat: Remove the TODO re #1835Ian Jackson2025-03-041-3/+0
| | | | This is the TODO we are fixing with this MR.
* tor-rtcompat: Explain Sendness of reenter_block_on futureIan Jackson2025-03-041-0/+1
| | | | | | | Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167975 Also allow ourselves the option of changing this in the future.
* tor-rtmocK; Detect wrong-context blocking_io and spawn_threadIan Jackson2025-03-041-0/+19
|
* tor-rtmock: Split out spawn_thread_innerIan Jackson2025-03-041-5/+16
| | | | | This will let us call _inner from blocking_io, with a different precondition. No functional change.
* tor-rtmocK; Detect re-entry into MockExecutorIan Jackson2025-03-041-6/+29
|
* tor-rtmock: task: Remove Default impl for ThreadDescriptorIan Jackson2025-03-041-3/+4
| | | | | | | | | This is going to become a hazard. Let's be explicit. This means using educe to derive the Default for Data. We also need to update our educe dependency to 0.4.22, since that's when Default(expression= "...") started working correctly.
* tor-rtmock: Split out executor_main_loopIan Jackson2025-03-041-3/+11
| | | | | | | | execute_until_first_stall is now simply a wrapper which does some logging. It will do a bit more in a moment. Giving the inner function a more obvious name is helpful, since the executor main loop is a thing one is often looking for.
* tor-rt*: Apply deferred formatting churnIan Jackson2025-03-042-4/+5
| | | | rustfmt.
* tor-rtcompat: Remove ToplevelBlockon from RuntimeIan Jackson2025-03-044-3/+16
| | | | | | | | Introduce ToplevelRuntime as an alias, and use it in the top-level programs. Now none of the principal protocol implementation code has access to the executor's toplevel entrypoint, and can't call it by mistake.
* tor-rtcompat: Provide a new function for executor re-entryIan Jackson2025-03-042-0/+16
| | | | | | | | | | | | | | | Forbid re-entering the executor using ToplevelBlockOn::block_on. This was always forbidden in the case of MockExecutor, but that meant that tests using MockExecutor would malfunction if the code under test needed to re-enter the executor from sync code (since the code under test would have to use block_on, which wrong). See #1835. Provide a function which *can* do this, reenter_block_on. The MockExecutor needs to know the difference, and other runtimes may too. They are conceptually quite different operations. Introduce ToplevelRuntime as a convenience alias.
* tor-rtcompat: New plan for blocking interaction, Blocking traitIan Jackson2025-03-042-15/+15
| | | | | | | | | | | | | | | * Document the new plan for blocking interaction in the trait-level docs for the Blocking trait (used to be SpawnBlocking). Add cross-references (in some cases to not-yet-existing pieces). * Rename: spawn_blocking to spawn_thread. We're going to distinguish thread-creation (relatively expensive) from brief entry to sync code (relatively cheap, but more restricted). * Rename the SpawnBlocking trait to Blocking, and its ThreadHandle to ThreadHandle. This trait is going to gain more functionality. * Add the missing mention of `Blocking` to the docs for `Runtime`.
* tor-rtcompat: Rename BlockOn to ToplevelBlockOnIan Jackson2025-03-043-8/+10
| | | | | | | | | | We're going to distinguish top-level runtime entry, from *re*-entry to an existing executor. It is most convenient to rename this trait first. Documentation of the distinction will come later. (We're going to retain the function name `block_on`, but we want the trait to be more obviously a top-level only thing, though, so we give it a name that will hopefully avoid it peroulating throughout the codebase..)
* tor-rtmock: Correct a commentIan Jackson2025-03-041-1/+1
| | | | The MockExecutor doesn't have a threadpool.
* tor-rtmock: Avoid confusing "concurrently" wordIan Jackson2025-02-251-2/+2
|
* tor-rtmock: Explain Subthreads and compare them with bare threadsIan Jackson2025-02-251-0/+31
|