Elektra Projekt
Functions
KDB Backends :: KDB access functions

Methods to access the backend handle. More...

Functions

void * kdbhSetBackendData (KDB *handle, void *data)
 
void * kdbhGetBackendData (const KDB *handle)
 
KDBCap * kdbhSetCapability (KDB *handle, KDBCap *cap)
 
KDBCap * kdbhGetCapability (const KDB *handle)
 
Trie * kdbhGetTrie (const KDB *handle)
 
void kdbhSetTrie (KDB *handle, Trie *trie)
 
const Key * kdbhGetMountpoint (KDB *handle)
 
void kdbhSetMountpoint (KDB *handle, const Key *mountpoint)
 
KeySet * kdbhGetConfig (KDB *handle)
 

Detailed Description

Methods to access the backend handle.

To use them:

#include <kdb.h>

These functions provide access to the information stored in Backend Handles.

Function Documentation

void* kdbhGetBackendData ( const KDB *  handle)

Get the previously set backend-specific data from the handle.

This is useful when your backend have a backend-global context or environment.

This method will probably be called everytime one of your kdb*() implementations is called. And if you change something inside the data, you don't have to kdbhSetBackendData() again, bacause you are manipulating your data, and not a copy of it.

Example:
struct MyBackendData {
int context1;
int context2;
};
int kdbOpen_mybackend(KDB *handle) {
struct MyBackendData *context;
context=malloc(sizeof(struct MyBackendData));
// a random initialization...
context->context1=1;
context->context2=2;
kdbhSetBackendData(*handle,context);
return 0;
}
int kdbGetKey_maybackend(KDB handle) {
struct MyBackendData *context;
context=kdbhGetBackendData(handle);
// No do something with the context
. . .
return 0;
}

On the kdbClose() implementation of your backend, you must remember to free all resources associated to your data.

Example of kdbClose() implementation that correctly cleans the context:
int kdbClose_mybackend(KDB &handle) {
struct MyBackendData *context;
context=kdbhGetBackendData(handle);
free(context);
return 0;
}
Returns
a pointer to the data previously set be kdbhSetBackendData()
Parameters
handlecontains internal information of opened key database
KDBCap* kdbhGetCapability ( const KDB *  handle)

Gets capability for handle.

Parameters
handlecontains internal information of opened key database
Returns
The backend name set in handle.
KeySet* kdbhGetConfig ( KDB *  handle)

Returns configuration for handle.

Every backend may have its own configuration using a Keyset.

Parameters
handlecontains internal information of opened key database
Returns
the keyset containing configuration for a backend
const Key* kdbhGetMountpoint ( KDB *  handle)

Gets mountpoint for handle.

Every mounted backend has a specific mountpoint where it is mounted. You may need to know where you were mounted inside a backend to calculate relative pathes.

The keyName() is where the backend is mounted, keyString() gives the name of which backend is mounted.

Parameters
handlecontains internal information of opened key database
See Also
kdbhSetMountpoint()
Returns
The Key containing the mountpoint.
Trie* kdbhGetTrie ( const KDB *  handle)

Gets trie for handle.

The trie is a datastructure containing the mounted backends.

Parameters
handlecontains internal information of opened key database
See Also
kdbhSetTrie()
Returns
The backend name set in handle.
void* kdbhSetBackendData ( KDB *  handle,
void *  data 
)

Set some backend-specific data in the handle.

This is useful when your backend have a backend-global context or environment.

Parameters
handlecontains internal information of opened key database
dataa pointer to general data specific to a backend implementation.
See Also
kdbhGetBackendData()
KDBCap* kdbhSetCapability ( KDB *  handle,
KDBCap *  cap 
)

Sets capabilty for handle.

Parameters
capa pointer to capability structure
handlecontains internal information of opened key database
Returns
The backend name set in handle.
void kdbhSetMountpoint ( KDB *  handle,
const Key *  mountpoint 
)

Sets mountpoint for handle.

You must not change the mountpoint inside your backend, it was set correctly already for you.

Parameters
handlecontains internal information of opened key database
mountpointthe key containing as name where backend is mounted and as value the backendname
See Also
kdbhGetMountpoint()
Returns
nothing
void kdbhSetTrie ( KDB *  handle,
Trie *  trie 
)

Sets trie for handle.

The trie is a datastructure containing the mounted backends. This must not done inside backends, it was set correctly already for you.

Parameters
handlecontains internal information of opened key database
triethe datastructure referencing to the other handles of backends
See Also
kdbhGetTrie()
Returns
nothing