the-algorithm/tweetypie/common/src/scala/com/twitter/tweetypie/caching/CacheResult.scala

46 lines
1.3 KiB
Scala

package com.twitter.tweetypie.caching
/**
* Encodes the possible states of a value loaded from memcached.
*
* @see [[ValueSerializer]] and [[CacheOperations]]
*/
sealed trait CacheResult[+V]
object CacheResult {
/**
* Signals that the value could not be successfully loaded from
* cache. `Failure` values should not be written back to cache.
*
* This value may result from an error talking to the memcached
* instance or it may be returned from the Serializer when the value
* should not be reused, but should also not be overwritten.
*/
final case class Failure(e: Throwable) extends CacheResult[Nothing]
/**
* Signals that the cache load attempt was successful, but there was
* not a usable value.
*
* When processing a `Miss`, the value should be written back to
* cache if it loads successfully.
*/
case object Miss extends CacheResult[Nothing]
/**
* Signals that the value was found in cache.
*
* It is not necessary to load the value from the original source.
*/
case class Fresh[V](value: V) extends CacheResult[V]
/**
* Signals that the value was found in cache.
*
* This value should be used, but it should be refreshed
* out-of-band.
*/
case class Stale[V](value: V) extends CacheResult[V]
}