DurablePersistentMap

trait DurablePersistentMap[T <: Txn[T], K]

Interface for a confluently or partially persistent storing key value map. Keys (type K) might be single object identifiers (as the variable storage case), or combined keys (as in the live map case).

Type Params
K

the key type

T

the underlying system's transaction type

Companion
object
class Object
trait Matchable
class Any

Value members

Abstract methods

def get[A](key: K, tx: T)(implicit path: Access[T], format: TFormat[T, A]): Option[A]

Finds the most recent value for an entity id with respect to version path. If a value is found, it is return along with a suffix suitable for identifier path actualisation.

Finds the most recent value for an entity id with respect to version path. If a value is found, it is return along with a suffix suitable for identifier path actualisation.

Type Params
A

the type of values stored with the entity

Value Params
format

the format used to store the entity's values

key

the identifier for the object

path

the path through which the object has been accessed (the version at which it is read)

tx

the transaction within which the access is performed

Returns

None if no value was found, otherwise a Some of the tuple consisting of the suffix and the value. The suffix is the access path minus the prefix at which the value was found. However, the suffix overlaps the prefix in that it begins with the tree entering/exiting tuple at which the value was found.

def getImmutable[A](key: K, tx: T)(implicit path: Access[T], format: ConstFormat[A]): Option[A]

Finds the most recent value for an entity id with respect to version path.

Finds the most recent value for an entity id with respect to version path.

The format given is _non_transactional. This is because this trait bridges confluent and ephemeral world (it may use a durable backend, but the data structures used for storing the confluent graph are themselves ephemeral). If the value A requires a transactional serialization, the current approach is to pre-serialize the value into an appropriate format (e.g. a byte array) before calling into put. In that case the wrapping structure must be de-serialized after calling get.

Type Params
A

the type of values stored with the entity

Value Params
format

the format used to store the entity's values

key

the identifier for the object

path

the path through which the object has been accessed (the version at which it is read)

tx

the transaction within which the access is performed

Returns

None if no value was found, otherwise a Some of that value.

def isFresh(key: K, tx: T)(implicit path: Access[LazyRef(...)]): Boolean

'''Note:''' requires that path is non-empty.

'''Note:''' requires that path is non-empty.

def put[A](key: K, value: A, tx: T)(implicit path: Access[T], format: TFormat[T, A]): Unit
def putImmutable[A](key: K, value: A, tx: T)(implicit path: Access[T], format: ConstFormat[A]): Unit

Stores a new value for a given write path.

Stores a new value for a given write path.

The format given is _non_transactional. This is because this trait bridges confluent and ephemeral world (it may use a durable backend, but the data structures used for storing the confluent graph are themselves ephemeral). If the value A requires a transactional serialization, the current approach is to pre-serialize the value into an appropriate format (e.g. a byte array) before calling into put. In that case the wrapping structure must be de-serialized after calling get.

Type Params
A

the type of values stored with the entity

Value Params
format

the format used to store the entity's values

key

the identifier for the object

path

the path through which the object has been accessed (the version at which it is read)

tx

the transaction within which the access is performed

value

the value to store

def remove(key: K, tx: T)(implicit path: Access[LazyRef(...)]): Boolean