<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/stream, 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:27:25Z</updated>
<entry>
<title>tor-basic-utils: add `assert_val_impl_trait!` macro</title>
<updated>2025-07-17T18:27:25Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-17T17:15:36Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=ad940e7327f6a64923fe4316500bfaaba26bafeb'/>
<id>urn:sha1:ad940e7327f6a64923fe4316500bfaaba26bafeb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-proto: replace `DataReader`</title>
<updated>2025-07-17T18:02:07Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-17T07:19:38Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=66eec4843d37547c2e32e8f2e66fdadd999d8bff'/>
<id>urn:sha1:66eec4843d37547c2e32e8f2e66fdadd999d8bff</id>
<content type='text'>
`DataReader` -&gt; `DataReaderInner`
`DataReaderNew` -&gt; `DataReader`

This means that the `DataReader` now supports XON/XOFF flow control
using the `XonXoffReader`.

This means that it can receive requests for a new drain rate from the
reactor, and can send the new drain rate to the reactor once there is no
more stream data queued.
</content>
</entry>
<entry>
<title>tor-proto: add `DataReaderNew`</title>
<updated>2025-07-17T18:02:07Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-17T06:59:32Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=14d95aee7878ce28cb7f8af539b2bca287e785fc'/>
<id>urn:sha1:14d95aee7878ce28cb7f8af539b2bca287e785fc</id>
<content type='text'>
This will later become `DataReader`.
</content>
</entry>
<entry>
<title>tor-proto: add `StreamReceiver::is_empty()`</title>
<updated>2025-07-17T18:02:07Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-17T06:44:01Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=bcb65bfbf5f198654eaee747dd680b99963c96ca'/>
<id>urn:sha1:bcb65bfbf5f198654eaee747dd680b99963c96ca</id>
<content type='text'>
</content>
</entry>
<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 plumbing for sending XON</title>
<updated>2025-07-17T18:01:47Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-16T19:48:06Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=4bcfcc3cae31f901e828369383e4660778eaa8c6'/>
<id>urn:sha1:4bcfcc3cae31f901e828369383e4660778eaa8c6</id>
<content type='text'>
Nothing actually causes an XON to be sent yet. But this adds the code so
that anything holding the `StreamTarget` can request to send an XON.
</content>
</entry>
<entry>
<title>tor-cell: add `FlowCtrlVersion::V0`</title>
<updated>2025-07-16T17:36:43Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-16T14:50:18Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=15422178d62506ad61b87a38f59cbc8536c5becd'/>
<id>urn:sha1:15422178d62506ad61b87a38f59cbc8536c5becd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-proto: send XOFF messages when the queue grows too large</title>
<updated>2025-07-16T17:36:43Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-15T04:59:24Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=be5da87e8530a34a88db2a01b42a03431a9df8db'/>
<id>urn:sha1:be5da87e8530a34a88db2a01b42a03431a9df8db</id>
<content type='text'>
</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: 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>
</feed>
