1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use crate::{SyncChannel, TrackChannel};
use std::{
io::{BufReader, BufWriter},
os::unix::net::UnixStream,
};
pub type UnixChannel = SyncChannel<BufReader<UnixStream>, BufWriter<UnixStream>>;
pub type TrackUnixChannel = TrackChannel<UnixChannel>;
pub fn unix_channel_pair() -> (UnixChannel, UnixChannel) {
let (tx, rx) = UnixStream::pair().unwrap();
let sender = SyncChannel::new(BufReader::new(tx.try_clone().unwrap()), BufWriter::new(tx));
let receiver = SyncChannel::new(BufReader::new(rx.try_clone().unwrap()), BufWriter::new(rx));
(sender, receiver)
}
pub fn track_unix_channel_pair() -> (TrackUnixChannel, TrackUnixChannel) {
let (tx, rx) = UnixStream::pair().unwrap();
let sender = TrackChannel::new(SyncChannel::new(
BufReader::new(tx.try_clone().unwrap()),
BufWriter::new(tx),
));
let receiver = TrackChannel::new(SyncChannel::new(
BufReader::new(rx.try_clone().unwrap()),
BufWriter::new(rx),
));
(sender, receiver)
}