The Container Volatile
Volatile is a Service to manage data objects in RAM. This includes:
- A
dequeis a double linked list accessible as a key-value store. Indexobjects that are serialized as tuples and exposed via API to allow connecting everything to everything as a graph.- A priority
queueis implemented as self balanced binary trees with a maximum number of nodes. -
A
treethat 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, …