TestCounter { value: usize },
}
-type TestCounter = BufReader<TestCounterInner>;
+const UPDATE_READER_SIZE : usize = 1024*32;
+const UPDATE_MAX_MSG_SIZE : usize = 1024;
+
#[derive(Debug)]
-struct TestCounterInner { next : usize, }
-impl Read for TestCounterInner {
-
-
+struct UpdateReader {
+ playerid : PlayerId,
+ client : ClientId,
+ startat : Counter,
+ amu : Arc<Mutex<Instance>>>,
+}
+impl Read for UpdateReader {
+ fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
+ let mug = amu.lock()?;
+ loop {
+ implement this!
+ }
+ e
/*
for (tclient, tcl) in &mut g.clients {
if tclient == client {
*/
- fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
thread::sleep(Duration::from_millis(500));
let message = XUpdate::TestCounter { value : self.next };
let data = serde_json::to_string(&message)?;
}
}
+pub struct PreparedUpdate {
+ gen : Counter,
+ client : ClientId,
+ piece : PieceId;
+ client_seq : ClientSequence,
+ json : Arc<String>,
+}
+
pub struct PlayerUpdates {
- pub log : VecDeque<(ClientId, Arc<Update>)>,
+ pub log : VecDeque<PreparedUpdate>,
pub cv : Condvar,
}
clients : Default::default(),
updates : Default::default(),
};
- let g = Arc::new(Mutex::new(gi));
- let mut ig = g.lock().unwrap();
+ let amu = Arc::new(Mutex::new(gi));
+ let mut ig = amu.lock().unwrap();
for (token, nick) in XXX_PLAYERS_TOKENS {
let np = Player {
nick : nick.to_string(),