in src/entrystore/src/seg/memcache.rs [198:253]
fn replace(&mut self, replace: &Replace) -> Response {
if self.data.get_no_freq_incr(replace.key()).is_none() {
return Response::not_stored(replace.noreply());
}
let ttl = replace.ttl().get().unwrap_or(0);
if ttl < 0 {
// immediate expire maps to a delete
self.data.delete(replace.key());
Response::stored(replace.noreply())
} else if let Ok(s) = std::str::from_utf8(replace.value()) {
if let Ok(v) = s.parse::<u64>() {
if self
.data
.insert(
replace.key(),
v,
Some(&replace.flags().to_be_bytes()),
Duration::from_secs(ttl as u64),
)
.is_ok()
{
Response::stored(replace.noreply())
} else {
Response::server_error("")
}
} else if self
.data
.insert(
replace.key(),
replace.value(),
Some(&replace.flags().to_be_bytes()),
Duration::from_secs(ttl as u64),
)
.is_ok()
{
Response::stored(replace.noreply())
} else {
Response::server_error("")
}
} else if self
.data
.insert(
replace.key(),
replace.value(),
Some(&replace.flags().to_be_bytes()),
Duration::from_secs(ttl as u64),
)
.is_ok()
{
Response::stored(replace.noreply())
} else {
Response::server_error("")
}
}