kdbbackend.h

00001 /***************************************************************************
00002                 kdbbackend.h  -  Methods for backend programing
00003                              -------------------
00004     begin                : Mon Dec 25 2004
00005     copyright            : (C) 2004 by Avi Alkalay
00006     email                : avi@unix.sh
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the BSD License (revised).                      *
00013  *                                                                         *
00014  ***************************************************************************/
00015 
00016 
00017 /* Subversion stuff
00018 
00019 $Id: kdbbackend.h 876 2006-08-04 07:18:44Z ylecaillez $
00020 
00021 */
00022 
00023 #ifndef KDBBACKEND_H
00024 #define KDBBACKEND_H
00025 
00026 typedef struct _KDBBackend *    KDBHandle;
00027 
00028 #include <pthread.h>
00029 #include <kdb.h>
00030 #include <kdbprivate.h>
00031 
00032 #ifdef ELEKTRA_STATIC
00033         #define KDBEXPORT(module) KDBBackend *libelektra_##module##_LTX_kdbBackendFactory(void) 
00034 #else
00035         #define KDBEXPORT(module) KDBBackend *kdbBackendFactory(void)
00036 #endif
00037 
00038 typedef struct _KDBBackend KDBBackend;
00039 
00040 
00041 
00042 
00043 
00049 enum KDBBackendMethod {
00050     KDB_BE_OPEN=1,               
00051     KDB_BE_CLOSE=1<<1,           
00052     KDB_BE_STATKEY=1<<2,         
00053     KDB_BE_GETKEY=1<<3,          
00054     KDB_BE_SETKEY=1<<4,          
00055     KDB_BE_SETKEYS=1<<5,         
00056     KDB_BE_RENAME=1<<6,          
00057     KDB_BE_REMOVEKEY=1<<7,       
00058     KDB_BE_GETCHILD=1<<8,        
00059     KDB_BE_MONITORKEY=1<<9,      
00060     KDB_BE_MONITORKEYS=1<<10,    
00061     KDB_BE_END=0                 
00062 };
00063 
00064 
00065 #ifdef __cplusplus
00066 extern "C" {
00067 #endif
00068 
00069 KDBBackend *kdbBackendExport(const char *backendName, ...);
00070 
00071 typedef KDBBackend *(*KDBBackendFactory)(void);
00072 
00073 /* Let the backend be aware of default implementations we provide */
00074 int kdbSetKeys_default(KDBHandle handle, KeySet *ks);
00075 int kdbRename_default(KDBHandle handle, Key *key, const char *newName);
00076 uint32_t kdbMonitorKeys_default(KDBHandle handle, KeySet *interests,
00077         uint32_t diffMask, unsigned long iterations, unsigned sleep);
00078 uint32_t kdbMonitorKey_default(KDBHandle handle, Key *interest,
00079         uint32_t diffMask, unsigned long iterations, unsigned sleep);
00080 
00081 
00082 /* Some handle manipulation methods */
00083 void *kdbhSetBackendData(KDBHandle handle, void *data);
00084 void *kdbhGetBackendData(KDBHandle handle);
00085 
00086 pid_t kdbhGetPID(const KDBHandle handle);
00087 pid_t kdbhSetPID(KDBHandle handle,pid_t pid);
00088 
00089 pthread_t kdbhGetTID(const KDBHandle handle);
00090 pthread_t kdbhSetTID(KDBHandle handle,pthread_t tid);
00091 
00092 uid_t kdbhGetUID(const KDBHandle handle);
00093 uid_t kdbhSetUID(KDBHandle handle,uid_t uid);
00094 
00095 gid_t kdbhGetGID(const KDBHandle handle);
00096 gid_t kdbhSetGID(KDBHandle handle,gid_t gid);
00097 
00098 mode_t kdbhGetUMask(const KDBHandle handle);
00099 mode_t kdbhSetUMask(KDBHandle handle,mode_t umask);
00100 
00101 char *kdbhGetUserName(const KDBHandle handle);
00102 char *kdbhSetUserName(KDBHandle handle,char *userName);
00103 
00104 char *kdbhGetBackendName(const KDBHandle handle);
00105 char *kdbhSetBackendName(KDBHandle handle,char *backendName);
00106 
00107 #ifdef __cplusplus
00108 }
00109 #endif
00110 
00111 
00112 
00113 
00114 
00115 #endif /* KDBBACKEND_H */

Generated on Mon Dec 17 18:45:35 2007 for Elektra Project by  doxygen 1.5.4