Update the processor for the previous commit

This commit is contained in:
Luke Parker 2022-07-13 02:48:11 -04:00
parent 6cc8ce840e
commit a1599df126
No known key found for this signature in database
GPG key ID: F9F1386DB1E119B6
2 changed files with 8 additions and 7 deletions

View file

@ -1,4 +1,4 @@
use std::{marker::Send, collections::HashMap};
use std::{marker::Send, io::Cursor, collections::HashMap};
use async_trait::async_trait;
use thiserror::Error;
@ -17,7 +17,7 @@ pub enum NetworkError {}
#[async_trait]
pub trait Network: Send {
async fn round(&mut self, data: Vec<u8>) -> Result<HashMap<u16, Vec<u8>>, NetworkError>;
async fn round(&mut self, data: Vec<u8>) -> Result<HashMap<u16, Cursor<Vec<u8>>>, NetworkError>;
}
#[derive(Clone, Error, Debug)]

View file

@ -1,4 +1,4 @@
use std::{sync::{Arc, RwLock}, collections::HashMap};
use std::{io::Cursor, sync::{Arc, RwLock}, collections::HashMap};
use async_trait::async_trait;
@ -11,7 +11,7 @@ struct LocalNetwork {
i: u16,
size: u16,
round: usize,
rounds: Arc<RwLock<Vec<HashMap<u16, Vec<u8>>>>>
rounds: Arc<RwLock<Vec<HashMap<u16, Cursor<Vec<u8>>>>>>
}
impl LocalNetwork {
@ -27,13 +27,13 @@ impl LocalNetwork {
#[async_trait]
impl Network for LocalNetwork {
async fn round(&mut self, data: Vec<u8>) -> Result<HashMap<u16, Vec<u8>>, NetworkError> {
async fn round(&mut self, data: Vec<u8>) -> Result<HashMap<u16, Cursor<Vec<u8>>>, NetworkError> {
{
let mut rounds = self.rounds.write().unwrap();
if rounds.len() == self.round {
rounds.push(HashMap::new());
}
rounds[self.round].insert(self.i, data);
rounds[self.round].insert(self.i, Cursor::new(data));
}
while {
@ -43,7 +43,8 @@ impl Network for LocalNetwork {
tokio::task::yield_now().await;
}
let res = self.rounds.try_read().unwrap()[self.round].clone();
let mut res = self.rounds.try_read().unwrap()[self.round].clone();
res.remove(&self.i);
self.round += 1;
Ok(res)
}