| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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()`.
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Eliminate the data_ variable and instead use a block scope.
This seems a bit nicer, and will align slightly better with
forthcoming changes.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
We're going to introduce a new call site for this.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
Be clearer that `fut` is only `None` during the main loop.
|
| | | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | |_|/
|/| | |
|
| | | |
| | |
| | |
| | |
| | | |
Clippy is complaining that these can be simplified,
so I took its recommendations.
|
| |/ /
| |
| |
| |
| | |
This comes up on OSX; I hadn't seen it before, so I assume it is new
with Rust 1.86.
|
| |\ \
| | |
| | |
| | |
| | | |
arti-ureq: New library which integrates with ureq
See merge request tpo/core/arti!2724
|
| | | |
| | |
| | |
| | | |
Fixes #1519
|
| | | |
| | |
| | |
| | | |
We will soon need to construct `V1Nonce`s.
|
| |/ /
| |
| |
| | |
`u32` is `Copy`, so the getter doesn't need to return a ref.
|
| |\ \
| | |
| | |
| | |
| | | |
Initial metrics framework
See merge request tpo/core/arti!2918
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
beta clippy pointed out that it shouldn't be exhaustive.
but `#[strum_discriminants(non_exhaustive)]` is rejected.
|
| | | |
| | |
| | |
| | |
| | | |
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2918#note_3185872
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2918#note_3185871
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2918#note_3185869
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2918#note_3185869
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2918#note_3185867
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2918#note_3185866
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2918#note_3185864
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2918#note_3185863
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2918#note_3185862
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2918#note_3185859
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Almost the only remaining use of this was for SocketAddr which we
should just import.
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2918#note_3185858
|
| | | |
| | |
| | |
| | | |
This avoids warnings from failure to cfg-decorate imports.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This proves the concept. Many more metrics will need to be added
throughout the codebase.
With this compiled in and enabled, I see this with curl:
> ```
> # TYPE arti_hss_proxy_connections_failed_total counter
> arti_hss_proxy_connections_failed_total{nickname="ztest",action="destroy_circuit"} 0
> arti_hss_proxy_connections_failed_total{nickname="ztest",action="ignore_stream"} 0
> arti_hss_proxy_connections_failed_total{nickname="ztest",action="forward"} 0
> arti_hss_proxy_connections_failed_total{nickname="ztest",action="reject_stream"} 0
>
> # TYPE arti_hss_proxy_connections_total counter
> arti_hss_proxy_connections_total{nickname="ztest",action="reject_stream"} 0
> arti_hss_proxy_connections_total{nickname="ztest",action="forward"} 1
> arti_hss_proxy_connections_total{nickname="ztest",action="destroy_circuit"} 0
> arti_hss_proxy_connections_total{nickname="ztest",action="ignore_stream"} 0
>
> # TYPE arti_hss_proxy_connections_ok_total counter
> arti_hss_proxy_connections_ok_total{nickname="ztest",action="destroy_circuit"} 0
> arti_hss_proxy_connections_ok_total{nickname="ztest",action="reject_stream"} 0
> arti_hss_proxy_connections_ok_total{nickname="ztest",action="ignore_stream"} 0
> arti_hss_proxy_connections_ok_total{nickname="ztest",action="forward"} 1
> ```
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
This means that we can use the same variable names for the clones,
which is considerably less confusing.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
New cargo feature `metrics`, currently experimental.
New config option `metrics.prometheus.listen`. Uses standard `Listen`
syntax, but not every configuration is supported due to upstream
limitations.
If the config option is set, use metrics-exporter-prometheus to offer
an HTTP scrape endpoint. Or, if compiled out, fail.
Currently there are no actual metrics exported at all.
|
| | | |
| | |
| | |
| | |
| | | |
Otherwise it can be very confusing pushing the bump in the carpet back
and forth.
|
| | | |
| | |
| | |
| | |
| | | |
We're going to need this because of deficiencies in
metrics-exporter-prometheus.
|
| | | |
| | |
| | |
| | |
| | | |
This won't involve an extra dep, because we already use `itertools`
throughout the codebase.
|
| |/ /
| |
| |
| |
| | |
For service introduction circuits, we have `IptMsgHandler`, so we've
already worked something out :)
|
| |/ |
|
| |\
| |
| |
| |
| | |
Fix clippy warnings with rust 1.86
See merge request tpo/core/arti!2920
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Example:
```text
warning: struct pattern is not needed for a unit variant
--> crates/hashx/src/program.rs:165:32
|
165 | Instruction::Target { .. } => Opcode::Target,
| ^^^^^^^ help: remove the struct pattern
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_struct_pattern
note: the lint level is defined here
--> crates/hashx/src/lib.rs:9:9
|
9 | #![warn(clippy::all)]
| ^^^^^^^^^^^
= note: `#[warn(clippy::unneeded_struct_pattern)]` implied by `#[warn(clippy::all)]`
```
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
```text
warning: length comparison to one
--> crates/tor-netdoc/src/parse/tokenize.rs:470:12
|
470 | if args.len() >= 1 {
| ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!args.is_empty()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero
note: the lint level is defined here
--> crates/tor-netdoc/src/lib.rs:9:9
|
9 | #![warn(clippy::all)]
| ^^^^^^^^^^^
= note: `#[warn(clippy::len_zero)]` implied by `#[warn(clippy::all)]`
```
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Example:
```text
warning: doc list item overindented
--> crates/arti-rpc-client-core/src/conn/connimpl.rs:322:9
|
322 | /// indicates that no more messages will be received for this request.
| ^^^ help: try using ` ` (2 spaces)
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items
note: the lint level is defined here
--> crates/arti-rpc-client-core/src/lib.rs:8:9
|
8 | #![warn(clippy::all)]
| ^^^^^^^^^^^
= note: `#[warn(clippy::doc_overindented_list_items)]` implied by `#[warn(clippy::all)]`
```
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
```text
warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator
--> crates/tor-config/src/load.rs:606:18
|
606 | .last()
| ^^^^^^ help: try: `next_back()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last
note: the lint level is defined here
--> crates/tor-config/src/lib.rs:9:9
|
9 | #![warn(clippy::all)]
| ^^^^^^^^^^^
= note: `#[warn(clippy::double_ended_iterator_last)]` implied by `#[warn(clippy::all)]`
```
|
| |\ \
| |/
|/|
| |
| | |
fix builds for Android
See merge request tpo/core/arti!2824
|