<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-chanmgr/src/factory.rs, branch arti-v1.2.8</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.2.8</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.2.8'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2024-09-11T18:15:16Z</updated>
<entry>
<title>tor-chanmgr: add experimental `ChanMgr::handle_incoming`</title>
<updated>2024-09-11T18:15:16Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2024-09-04T14:38:13Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6dda7fc80834962d9485b8d92f63feacbcad4be8'/>
<id>urn:sha1:6dda7fc80834962d9485b8d92f63feacbcad4be8</id>
<content type='text'>
The channel manager in the future will need to be able to receive
incoming streams. The type of the stream depends on an associated type
within `ChannelFactory`, so this commit exposes this associated type
through several other types, eventually to the `ChanMgr`.

The new methods are behind the experimental "relay" feature flag.
</content>
</entry>
<entry>
<title>tor-chanmgr: make `CompoundFactory` generic over `ChannelFactory`</title>
<updated>2024-09-11T18:14:33Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2024-08-26T19:00:55Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=c4d69b977e3438b91b4cef0a7eaac3b7070be23d'/>
<id>urn:sha1:c4d69b977e3438b91b4cef0a7eaac3b7070be23d</id>
<content type='text'>
This has two advantages:

1. Code is a little easier to follow with generics rather than dynamic
   dispatch, especially since the type is fixed at compile time anyways.
2. It allows us to access associated types of the `ChannelFactory`,
   which will be useful later for getting the stream type from the
   `ChanBuilder`.
</content>
</entry>
<entry>
<title>proto: Make Channel explicitly Arc&lt;.&gt;</title>
<updated>2024-05-16T16:24:12Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-05-16T15:51:41Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=822ff7b1ba21ed59b697aab45fd0b00f88479cef'/>
<id>urn:sha1:822ff7b1ba21ed59b697aab45fd0b00f88479cef</id>
<content type='text'>
Previously, Channel was a type that you could Clone that implicitly
its state.  Now, Channel always appears as an Arc&lt;Channel&gt;.

This change has several benefits:

  * It makes the relationship between Channel struct and the
    underlying channel more clear.
  * It enables Channel to participate in the RPC system,
    where everything has to be an Arc&lt;.&gt;
  * It enables us to have a Weak&lt;Channel&gt;, if we ever want to.
  * It will let us move various members out of ChannelDetails.

We did this change a while ago with ClientCirc.
</content>
</entry>
<entry>
<title>Resolve a pair of warnings about redundant closures.</title>
<updated>2023-08-22T16:24:51Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2023-08-22T13:18:24Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=c0e050b640c7922a649c4bf8bc08fb862235a36e'/>
<id>urn:sha1:c0e050b640c7922a649c4bf8bc08fb862235a36e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rename TransportHelper =&gt; TransportImplHelper.</title>
<updated>2022-11-30T18:05:46Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-11-30T18:05:46Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=acc2de7b31625c5c9664eca3d699686ae4601c8f'/>
<id>urn:sha1:acc2de7b31625c5c9664eca3d699686ae4601c8f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Abolish ChanMgr::set_default_transport</title>
<updated>2022-11-30T16:00:31Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2022-11-30T16:00:31Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=ab74506dc9c0a048f0101e6d802054a383b55cee'/>
<id>urn:sha1:ab74506dc9c0a048f0101e6d802054a383b55cee</id>
<content type='text'>
The comment says
  // TODO pt-client: It's not clear to me that we really need this method.
and empirically, deleting it, and its callee, is fine.
</content>
</entry>
<entry>
<title>chanmgr: Report Pt errors correctly.</title>
<updated>2022-11-29T16:10:26Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-11-29T16:10:26Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=4fff9f9dda33ffdbc74694b1c4484bf004a01f3e'/>
<id>urn:sha1:4fff9f9dda33ffdbc74694b1c4484bf004a01f3e</id>
<content type='text'>
We were panicking if the PtMgr gave us an error, which isn't so
good.
</content>
</entry>
<entry>
<title>tor-chanmgr: Introduce the BootstrapReporter API, publicize ChanBuilder</title>
<updated>2022-11-28T18:52:21Z</updated>
<author>
<name>eta</name>
<email>tor@eta.st</email>
</author>
<published>2022-11-28T15:32:56Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=a3c9fc5b1aa9f1072448fdea336f561b71ce1176'/>
<id>urn:sha1:a3c9fc5b1aa9f1072448fdea336f561b71ce1176</id>
<content type='text'>
This commit makes the `ChanBuilder` type in `tor-chanmgr` usable by
consumers outside of that crate, like the doc comment for
`ChannelFactory` says you need to be able to do in order to turn your
`TransportHelper` into something useful.

As part of doing this, the `event_sender` its constructor takes needed
to be dealt with, since it was a crate-internal type that came from
inside the `ChanMgr`.

Enter `BootstrapReporter`: an opaque wrapper around that sender, now
provided as an additional argument to
`ChannelFactory::connect_via_transport`. You can now construct a
`ChanBuilder` outside this crate, and it'll still be able to report its
bootstrap status by unwrapping this new type that's threaded through
from the `ChanMgr`. (This was a fair deal of manually threading the type
through all the layers in this crate!)

Note that you cannot implement bootstrap updating using something that
isn't `ChanBuilder` yet due to the type being entirely opaque (but, of
course, we can figure out exactly what API the reporter should have
later, and add that capability in).
</content>
</entry>
<entry>
<title>Draft: Pluggable transport manager</title>
<updated>2022-11-28T18:52:21Z</updated>
<author>
<name>eta</name>
<email>tor@eta.st</email>
</author>
<published>2022-11-22T16:24:15Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=3b41c78d6fc5eceac3b45ea9ef1540b72f9b4004'/>
<id>urn:sha1:3b41c78d6fc5eceac3b45ea9ef1540b72f9b4004</id>
<content type='text'>
This commit implements `PtMgr`, a pluggable transport manager
responsible for keeping track of spawned PTs and spawning them to
satisfy client requests on demand.

It does this in two parts: the `PtMgr` type exported to the rest of the
code, and the background `PtReactor` that actually does the spawning;
this design ensures that only one attempt to spawn a PT is active at a
time, and will prove useful later for implementing e.g. timeouts.

A few changes were necessary to the rest of the code in order to make
this all work out. Namely:
- `TransportRegistry`'s API didn't make any sense for two reasons:
  - It wasn't feasible for implementors to implement `ChannelFactory`,
    since that'd require constructing a `ChanBuilder` (which requires a
    bootstrap reporting event sender).
  - Treating the PT manager as a registry is over-general; it's only
    necessary for it to spawn pluggable transports, so saddling it with
    other concerns didn't make any sense.
  - (It's possible to get extensibility for arbitrary user customization
    by just letting the user swap in a new `ChannelFactory`, anyway.)
- Therefore, the `PtMgr` implements the new `AbstractPtMgr` trait, which
  is far more narrowly focused; this only exists to solve a dependency
  loop, and is documented as such.
  - This provides a `TransportHelper` instead of a `ChannelFactory`.
</content>
</entry>
<entry>
<title>ChanMgr: Another attempt to build on CI.</title>
<updated>2022-11-23T16:25:15Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-11-23T16:25:15Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=3f5699b95a9b74ae0acd3e2fe0ed3bdcd4f2359c'/>
<id>urn:sha1:3f5699b95a9b74ae0acd3e2fe0ed3bdcd4f2359c</id>
<content type='text'>
</content>
</entry>
</feed>
