The Container Volatile
Volatile
is a Service to manage data objects in RAM. This includes:
- A
deque
is a double linked list accessible as a key-value store. Index
objects that are serialized as tuples and exposed via API to allow connecting everything to everything as a graph.- A priority
queue
is implemented as self balanced binary trees with a maximum number of nodes. -
A
tree
that can be navigated through commands and through keys, that implements pruning and more. - See C++ ref Volatile
The base tree
A tree is created empty, new_entity() //tree/name/
Nodes are pushed with their parent key by put()ing to //tree/name/key~parentname
(where parentname must exist). The only exception is the empty tree, it can be started by either a push with just a key or a push
with a parent name that will be ignored. E.g., //tree/name/key~void
. All nodes support get()/header()/locate() by //tree/name/key
or by
//tree/name/key~parent
, //tree/name/key~next
, //tree/name/key~child
. The root node can be get()/header()/locate() by
//tree/name/~first
. put() only supports an existing parent. Remove //tree/name/key
removes a whole subtree, all the descendants and the
node itself. Remove //tree/name
removes the whole entity.
In terms of the Jazz server API
A tree is created by GET //tree/name.new
and destroyed with DELETE //tree/name
.
Anything else is just GET, PUT or DELETE calls as in the previous description.
Volatile Blocks support everything described in this reference: slicing, being used in calls, attributes, constant assignment, forwarding, …