in src/replay.rs [348:387]
fn ascii(&mut self) {
// open files
let zlog = File::open(&self.trace).expect("failed to open input zlog");
let zbuf = BufReader::new(zlog);
let log = Decoder::with_buffer(zbuf).expect("failed to init zstd decoder");
let buf_log = BufReader::new(log);
let mut lines = buf_log.lines();
while let Some(Ok(line)) = lines.next() {
let parts: Vec<&str> = line.split(',').collect();
let ts: u64 = parts[0].parse::<u64>().expect("invalid timestamp") + 1;
let verb = parts[5];
let key = parts[1].to_string();
let vlen: usize = parts[3].parse().expect("failed to parse vlen");
let ttl: u32 = parts[6].parse().expect("failed to parse ttl");
let mut request = match verb {
"get" => Request::Get { key },
"gets" => Request::Gets { key },
"set" => Request::Set { key, vlen, ttl },
"add" => Request::Add { key, vlen, ttl },
"replace" => Request::Replace { key, vlen, ttl },
"delete" => Request::Delete { key },
_ => {
self.stats.skip += 1;
continue;
}
};
self.controller.delay(ts);
while let Err(r) = self.work.push(request) {
request = r;
}
self.stats.sent += 1;
}
}