chore: clean code

This commit is contained in:
2022-03-19 23:05:03 +08:00
parent e0b7a148ba
commit 87f21a0b93

View File

@@ -17,30 +17,27 @@ use tokio::time::sleep;
async fn main() {
let stream_id = AtomicU64::new(1);
let (left_sender, left_receiver) = channel::<StreamPackage>(512);
let (right_sender, right_receiver) = channel::<StreamPackage>(512);
let (left_to_right_sender, left_to_right_receiver) = channel::<StreamPackage>(512);
let (right_to_left_sender, right_to_left_receiver) = channel::<StreamPackage>(512);
let left_stream_map = Arc::new(Mutex::new(HashMap::<u64, Sender<StreamPackage>>::new()));
let right_stream_map = Arc::new(Mutex::new(HashMap::<u64, Sender<StreamPackage>>::new()));
let right_consumer_stream_map = Arc::new(Mutex::new(HashMap::<u64, Sender<StreamPackage>>::new()));
let left_consumer_stream_map = Arc::new(Mutex::new(HashMap::<u64, Sender<StreamPackage>>::new()));
let cloned_left_stream_map = left_stream_map.clone();
let cloned_right_stream_map = right_stream_map.clone();
loop_consume(left_receiver, cloned_left_stream_map);
loop_consume(right_receiver, cloned_right_stream_map);
loop_consume(left_to_right_receiver, right_consumer_stream_map.clone());
loop_consume(right_to_left_receiver, left_consumer_stream_map.clone());
let mut joins = vec![];
for _ in 0..3 {
let new_stream_id = stream_id.fetch_add(1, Ordering::SeqCst);
let left_stream = create_stream(new_stream_id, right_sender.clone(), left_stream_map.clone());
let right_stream = create_stream(new_stream_id, left_sender.clone(), right_stream_map.clone());
let left_stream = create_stream(new_stream_id, right_to_left_sender.clone(), right_consumer_stream_map.clone());
let right_stream = create_stream(new_stream_id, left_to_right_sender.clone(), left_consumer_stream_map.clone());
let (left_stream_reader, mut left_stream_writer) = tokio::io::split(left_stream);
let (right_stream_reader, mut right_stream_writer) = tokio::io::split(right_stream);
let a = loop_read(left_stream_reader, format!("#{} left reader", new_stream_id));
let b = loop_read(right_stream_reader, format!("#{} right reader", new_stream_id));
let c = tokio::spawn(async move {
for i in 0..3 {
sleep(Duration::from_millis(100)).await;
@@ -56,10 +53,7 @@ async fn main() {
let _ = right_stream_writer.shutdown().await;
});
joins.push(a);
joins.push(b);
joins.push(c);
joins.push(d);
joins.extend([a, b, c, d]);
}
for j in joins {
let _ = tokio::join!(j);