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