#channel #message #split #data-processing #abstraction #synchronization #send

split_channel

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

10 breaking releases

new 0.12.0 Dec 4, 2024
0.11.0 Nov 7, 2024
0.10.0 Oct 8, 2024
0.5.0 Feb 19, 2024
0.1.0 Jul 10, 2023

#289 in Concurrency

Download history 132/week @ 2024-08-19 125/week @ 2024-09-02 172/week @ 2024-09-16 75/week @ 2024-09-30 159/week @ 2024-10-07 4/week @ 2024-10-14 111/week @ 2024-11-04 8/week @ 2024-11-11 6/week @ 2024-11-18 131/week @ 2024-12-02

152 downloads per month
Used in busybee

Apache-2.0

265KB
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
~835K SLoC