Improve and refactor circuit isolation code
With !38 (merged), we now have working circuit isolation code. Here are some follow-up items for %Arti 0.0.1 release: basic anonymity. We should probably talk about these before going ahead and doing them, however: most of these involve some design thinking.
Possibly: Split the Usage types and the Isolation types into separate types, such that they can be used and tested independently. Maybe the concrete
SupportedCircUsagetypes ought to be .
Possibly: Instead of IsolationToken, support isolation profiles with multiple fields, like we do in Tor. This would let us get rid of
IsolationMapin tor-client. Perhaps "isolation" should be represented with a a trait and CircMgr should be parameterized with it?
- Test coverage on IsolationMap, assuming we keep it.
- A function on TorClient to return a clone of the TorClient whose streams are always isolated from the original TorClient.
- Configurable isolation for different types of field in tor-client, like tor has today.
- Integration tests that make sure that streams that are supposed to be isolated are in fact assigned to different circuits.