#channel #message #split #abstraction #send-recv #data #stream-of-messages

split_channel

split_channel provides a stream-of-messages abstraction with split send/recv channels

5 releases (breaking)

0.5.0 Feb 19, 2024
0.4.0 Dec 27, 2023
0.3.0 Sep 21, 2023
0.2.0 Aug 2, 2023
0.1.0 Jul 10, 2023

#52 in #split


Used in busybee

Apache-2.0

260KB
6K SLoC

split_channel

split_channel provides a stream-of-messages abstraction with split send/recv channels.

Status

Maintenance track. The library is considered stable and will be put into maintenance mode if unchanged for one year. Documentation changes excepted.

Scope

This library provides the abstraction of split send/recv channels. This is a hack of the type system, allowing two &mut references to the same underlying types.

Warts

  • I'm not a fan of the name.

Documentation

The latest documentation is always available at docs.rs.


lib.rs:

split_channel provides a stream-of-messages abstraction with split send/recv channels. Most calls that establish a channel return a tuple of ([RecvChannel], [SendChannel]).

The key idea here is that an &mut RecvChannel and &mut SendChannel exist for the same SslStream<TcpStream>, allowing parallel sending and processing of messages. The general pattern is to lock the send channel, send data, and then use sync42::wait_list::WaitList to synchronize receivers.

Dependencies

~32MB
~819K SLoC