fn ascii()

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;
        }
    }