in src/replay.rs [661:692]
fn decode(buffer: &mut Session) -> Result<(), ParseError> {
// no-copy borrow as a slice
let buf: &[u8] = (*buffer).buffer();
debug!("buffer content: {:?}", buf);
for response in &[
"STORED\r\n",
"NOT_STORED\r\n",
"EXISTS\r\n",
"NOT_FOUND\r\n",
"DELETED\r\n",
"TOUCHED\r\n",
] {
let bytes = response.as_bytes();
if buf.len() >= bytes.len() && &buf[0..bytes.len()] == bytes {
let _ = buffer.consume(bytes.len());
return Ok(());
}
}
let mut windows = buf.windows(5);
if let Some(response_end) = windows.position(|w| w == b"END\r\n") {
if response_end > 0 {
RESPONSE_HIT.increment();
}
let _ = buffer.consume(response_end + 5);
return Ok(());
}
Err(ParseError::Incomplete)
}