<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/stream.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: add dedicated types for the incoming stream queue</title>
<updated>2025-07-16T17:36:43Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-15T03:38:23Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=9067118cff859a40772462c20fd0bc44a5e8bedc'/>
<id>urn:sha1:9067118cff859a40772462c20fd0bc44a5e8bedc</id>
<content type='text'>
XON/XOFF flow control will want to know how many data bytes are queued
on a stream, so the new types track that.
</content>
</entry>
<entry>
<title>tor-proto: rename `StreamSendFlowControl` and related changes</title>
<updated>2025-07-15T05:33:24Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-14T18:19:32Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=7e32d68cef82190be965061200736217b5acf17f'/>
<id>urn:sha1:7e32d68cef82190be965061200736217b5acf17f</id>
<content type='text'>
The plan is to use `StreamSendFlowControl` (now `StreamFlowControl`) for
both outgoing and incoming directions, so a name change is needed.

This also updates some comments, and renames some related struct fields
that have the word "send" in them.
</content>
</entry>
<entry>
<title>tor-proto: establish channel for rate limit updates</title>
<updated>2025-07-07T17:12:05Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-06-16T22:28:16Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=dce923d2010f66127a5a68b127778366ef517624'/>
<id>urn:sha1:dce923d2010f66127a5a68b127778366ef517624</id>
<content type='text'>
</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: 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>proto: Rename DataStreamCtrl to ClientDataStreamCtrl</title>
<updated>2025-01-30T16:11:01Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-01-30T15:31:51Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=af6ba7ea0379e2129e1cef1952d193f6783c5bbb'/>
<id>urn:sha1:af6ba7ea0379e2129e1cef1952d193f6783c5bbb</id>
<content type='text'>
The API for this type, and the fact that it implements
ClientStreamCtrl unconditionally, means that it is only for client
DataStreams.
</content>
</entry>
<entry>
<title>tor-proto: Encapsulate flow-control</title>
<updated>2024-08-13T19:46:46Z</updated>
<author>
<name>Jim Newsome</name>
<email>jnewsome@torproject.org</email>
</author>
<published>2024-08-12T20:49:48Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=4df401ec43b8f1c4e2eff662f1173847718cc3a4'/>
<id>urn:sha1:4df401ec43b8f1c4e2eff662f1173847718cc3a4</id>
<content type='text'>
Encapsulate flow-control into a separate object that partially abstracts
away the difference between window-based (legacy) flow control and
xon-based (prop324) flow control.
</content>
</entry>
<entry>
<title>Add an IncomingStreamRequestFilter to check early properties</title>
<updated>2024-03-26T16:55:05Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-03-20T15:39:05Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=25da33c91ccbd3ac266edf871925ee6a341d4729'/>
<id>urn:sha1:25da33c91ccbd3ac266edf871925ee6a341d4729</id>
<content type='text'>
Based on designs in #1124.

Note that there is a TODO here about a hack I had to do to appease
the borrow checker.
</content>
</entry>
<entry>
<title>tor-proto: Add IncomingCmdChecker for IncomingStream.</title>
<updated>2023-08-03T15:18:35Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2023-07-28T10:04:23Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=3d5c712c552588b9f3cecb5e0ace74a71ff18acc'/>
<id>urn:sha1:3d5c712c552588b9f3cecb5e0ace74a71ff18acc</id>
<content type='text'>
</content>
</entry>
</feed>
