<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/stream/incoming.rs, branch arti-v1.4.6</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.4.6</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.4.6'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2025-07-17T18:01:47Z</updated>
<entry>
<title>tor-proto: add the `XonXoffReader` and connect it to the reactor</title>
<updated>2025-07-17T18:01:47Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-17T05:47:08Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=ac0a34306105bb003573a854c64eedc9cefac51e'/>
<id>urn:sha1:ac0a34306105bb003573a854c64eedc9cefac51e</id>
<content type='text'>
The idea here is that the reactor builds an `XonXoffReaderCtrl` for the
new stream, and the `XonXoffReaderCtrl` can receive notifications from
the reactor's `StreamFlowControl`. The `XonXoffReaderCtrl` can be
combined with any `AsyncRead` to build a `XonXoffReader`, essentially
wrapping the `AsyncRead` with a type that handles XON/XOFF flow control.
Essentially, the reactor gives you a type that allows you to add
XON/XOFF flow control support to any `AsyncRead`.

We will add this `XonXoffReader` to the `DataReader` in a future commit.
</content>
</entry>
<entry>
<title>tor-proto: combine some objects into a `StreamComponents`</title>
<updated>2025-07-15T05:33:24Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-15T00:35:14Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=8268b4b6747ad1bfec5d1aa5d95e61248996990a'/>
<id>urn:sha1:8268b4b6747ad1bfec5d1aa5d95e61248996990a</id>
<content type='text'>
As we continue adding more functionality to streams like flow control,
we'll have more objects to pass around. This tries to group them
together.
</content>
</entry>
<entry>
<title>tor-proto: rename `StreamReader` to `StreamReceiver`</title>
<updated>2025-06-26T17:01:22Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-06-26T03:20:38Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d633fbc26e84b190306998833f5c8a1e10b58e50'/>
<id>urn:sha1:d633fbc26e84b190306998833f5c8a1e10b58e50</id>
<content type='text'>
In rust, the typical nomenclature is to use "receiver" for channels, and
"reader" for byte streams. For example `mpsc::Receiver` for something
that returns objects and `AsyncRead` for something that reads bytes.

Since we also have a `DataReader` for reading bytes, I think renaming
this from `StreamReader` to `StreamReceiver` better describes what it is
(it's not a "reader" in the typical `Read`/`AsyncRead` sense).

This type is public in the API, but is not actually accessible. As far
as I can tell there is no way to construct it or access it.
</content>
</entry>
<entry>
<title>tor-proto: pass the time provider to the `DataWriter`</title>
<updated>2025-06-05T15:14:50Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-05-27T19:09:34Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=8c920998ff2bf7f08c544b058a20cd291a65b61c'/>
<id>urn:sha1:8c920998ff2bf7f08c544b058a20cd291a65b61c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add a RelayCellFormat argument to encode().</title>
<updated>2025-04-16T14:58:49Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-04-09T17:33:16Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=18d314e9985562a9548044920eaf0caf4935788a'/>
<id>urn:sha1:18d314e9985562a9548044920eaf0caf4935788a</id>
<content type='text'>
This will let us actually _send_ messages in the right format.

This approach is not ideal for packed/fragmented messages;
they will need a separate RelayCellEncoder.

part of #1944.
</content>
</entry>
<entry>
<title>squash! Upgrade rand dependency to 0.9.</title>
<updated>2025-03-18T16:09:44Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-03-18T13:01:31Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=2f8993c22c2b86010e4fd8b5169ef0ab83f8c754'/>
<id>urn:sha1:2f8993c22c2b86010e4fd8b5169ef0ab83f8c754</id>
<content type='text'>
- `rand::thread_rng()` has been deprecated and renamed to `rand::rng()`
</content>
</entry>
<entry>
<title>tor-proto: Add a tunnel module.</title>
<updated>2025-02-20T20:15:12Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2025-02-13T16:58:04Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=31ee1dbbe88f92d99d66614d0625cb6e87d48edd'/>
<id>urn:sha1:31ee1dbbe88f92d99d66614d0625cb6e87d48edd</id>
<content type='text'>
Move StreamTarget to the tunnel module and the circuit module.

From now on streams will be implemented on tunnels, not circuits.

This moves `StreamTarget` to the tunnel module. A future change will
replace `ClientCirc` with `ClientTunnel` inside `StreamTarget`.

This is mostly code motion, best reviewed with `--color-moved`.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>tor-proto: Put a StreamAccount in DataStream etc.</title>
<updated>2024-10-03T14:10:47Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2024-10-02T15:42:18Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=7b97ce4ee6d9f7eb42646f870feb7bde42001ad6'/>
<id>urn:sha1:7b97ce4ee6d9f7eb42646f870feb7bde42001ad6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Some HasMemoryCost impls in tor-proto</title>
<updated>2024-10-02T18:11:26Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2024-09-25T16:50:03Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=83fe0a0db66b02e287fdbd96c107781e6f113609'/>
<id>urn:sha1:83fe0a0db66b02e287fdbd96c107781e6f113609</id>
<content type='text'>
</content>
</entry>
<entry>
<title>extract tor_async_utils::oneshot into ::oneshot-fused-workaround</title>
<updated>2024-08-28T14:27:46Z</updated>
<author>
<name>Jim Newsome</name>
<email>jnewsome@torproject.org</email>
</author>
<published>2024-08-22T19:20:36Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=46f7f01092e6ac55e3e958dc3a2228b1d36e26a1'/>
<id>urn:sha1:46f7f01092e6ac55e3e958dc3a2228b1d36e26a1</id>
<content type='text'>
Having this in the `tor-async-utils` crate prevents us from doing both
of the following without introducing a circular dependency:

* using it in `tor-rtmock` (which we currently do, particularly in
  tests).
* using `tor-rtmock` to test things in `tor-async-utils`. We don't do
  this yet, but it is generally sensible to do so. In particular we
  want to move the `stream_peak` module there, which is currently tested
  with `tor-rtmock`.

Moving this into its own crate avoids this circular dependency.
</content>
</entry>
</feed>
