used internally for kdbSet() More...
Functions | |
Split * | elektraSplitNew (void) |
void | elektraSplitDel (Split *keysets) |
void | elektraSplitResize (Split *split) |
ssize_t | elektraSplitAppend (Split *split, Backend *backend, Key *parentKey, int syncbits) |
ssize_t | elektraSplitSearchBackend (Split *split, Backend *backend, Key *parent) |
int | elektraSplitSearchRoot (Split *split, Key *parentKey) |
int | elektraSplitBuildup (Split *split, KDB *kdb, Key *parentKey) |
int | elektraSplitDivide (Split *split, KDB *handle, KeySet *ks) |
int | elektraSplitAppoint (Split *split, KDB *handle, KeySet *ks) |
int | elektraSplitGet (Split *split, KDB *handle) |
int | elektraSplitMerge (Split *split, KeySet *dest) |
int | elektraSplitSync (Split *split) |
int | elektraSplitPrepare (Split *split) |
used internally for kdbSet()
Splits up a keyset into multiple keysets where each of them will passed to the correct kdbSet().
Increases the size of split and appends a new empty keyset.
Initializes the element with the given parameters at size-1 to be used.
Will automatically resize split if needed.
split | the split object to work with | |
backend | the backend which should be appended | |
parentKey | the parentKey which should be appended | |
syncbits | the initial syncstate which should be appended |
-1 | if no split is found |
Appoints all keys from ks to yet unsynced splits.
split | the split object to work with | |
handle | to determine to which backend a key belongs | |
ks | the keyset to appoint to split |
Walks through the trie and adds all backends below parentKey.
Sets syncbits to 2 if it is a default or root backend (which needs splitting).
split | the split object to work with | |
kdb | the handle to get information about backends | |
parentKey | the information below which key the backends are from interest |
void elektraSplitDel | ( | Split * | keysets | ) |
Delete a split object.
Will free all allocated resources of a splitted keyset.
keysets | the split object to work with |
Splits up the keysets and search for a sync bit.
It does not check if there were removed keys, see elektraSplitRemove() for the next step.
It does not create new backends, this has to be done by buildup before.
split | the split object to work with | |
handle | to get information where the individual keys belong | |
ks | the keyset to divide |
Does some work after getting of backends is finished.
split | the split object to work with | |
handle | the handle to preprocess the keys |
Merges together all parts of split into dest.
split | the split object to work with | |
dest | the destination keyset where all keysets are appended. |
Split* elektraSplitNew | ( | void | ) |
Allocates a new split object.
Initially the size is APPROXIMATE_NR_OF_BACKENDS.
int elektraSplitPrepare | ( | Split * | split | ) |
Prepares for kdbSet() mainloop afterwards.
All splits which do not need sync are removed and a deep copy of the remaining keysets is done.
split | the split object to work with |
0 | on success |
void elektraSplitResize | ( | Split * | split | ) |
Doubles the size of how many parts of keysets can be appended.
split | the split object to work with |
Determines if the backend is already inserted or not.
split | the split object to work with | |
backend | the backend to search for | |
parent | the key to check for domains in default/root backends. |
split | the split object to work with | |
parentKey | the key which relation is searched for |
int elektraSplitSync | ( | Split * | split | ) |
Add sync bits everywhere keys were removed.
Only this function can really decide if sync is needed or not.
split | the split object to work with |