kern.h

00001 /* 
00002    EyeDB Object Database Management System
00003    Copyright (C) 1994-2008 SYSRA
00004    
00005    EyeDB is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Lesser General Public
00007    License as published by the Free Software Foundation; either
00008    version 2.1 of the License, or (at your option) any later version.
00009    
00010    EyeDB is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Lesser General Public License for more details.
00014    
00015    You should have received a copy of the GNU Lesser General Public
00016    License along with this library; if not, write to the Free Software
00017    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA 
00018 */
00019 
00020 /*
00021    Author: Eric Viara <viara@sysra.com>
00022 */
00023 
00024 
00025 #ifndef _EYEDBSM_KERN_H
00026 #define _EYEDBSM_KERN_H
00027 
00028 #include <eyedbsm/eyedbsm.h>
00029 #include "xm_alloc.h"
00030 
00031 namespace eyedbsm {
00032 
00033 struct DbLocalHandle {
00034   int logfd;
00035   char *dbfile;
00036   int xid;
00037 };
00038 
00039 extern Status
00040   ESM_dbOpen(const char *dbfile, int flags,
00041             const OpenHints *hints, int *id, void **pmutp,
00042             int create_mode, unsigned int xid,
00043             unsigned int *pversion, DbHandle **dbh),
00044   ESM_dbClose(const DbHandle *dbh),
00045   ESM_dbOpenLocal(const char *dbfile, int flags,
00046                  int *id, unsigned int *xid,
00047                  DbLocalHandle **dbh),
00048   ESM_dbCloseLocal(const DbLocalHandle *dbh),
00049 
00050   ESM_dbSetuid(DbHandle *dbh, int uid),
00051 
00052   ESM_guestUidGet(DbHandle const *dbh, int *uid),
00053   ESM_guestUidSet(DbHandle *dbh, int uid),
00054 
00055   ESM_rootEntrySet(DbHandle const *dbh, char const *const key,
00056                   void const *const data, unsigned int size, Boolean create),
00057   ESM_rootEntryGet(DbHandle const *dbh, char const *const key,
00058                   void *data, int maxsize),
00059   ESM_rootEntryDelete(DbHandle const *dbh, char const *const key),
00060 
00061   ESM_objectCreate(DbHandle const *dbh, void const *const object,
00062                    unsigned int size, short dspid, Oid *oid, OPMode),
00063   ESM_objectCreate_x(DbHandle const *dbh, void const *const object,
00064                      unsigned int size, short dspid, Oid *oid, OPMode,
00065                     unsigned int create_flags),
00066   ESM_objectDelete(DbHandle const *dbh, Oid const *const oid,
00067                   OPMode),
00068   ESM_objectWrite(DbHandle const *dbh, int start, int length,
00069                  void const *const object, Oid const *const oid,
00070                  OPMode),
00071   ESM_objectWriteCache(DbHandle const *dbh, int start,
00072                       void const *const object, Oid const *const oid),
00073   ESM_objectRead(DbHandle const *dbh, int start, int length, void *object,
00074                 LockMode lockmode, short *pdatid, unsigned int *psize,
00075                 Oid const *const oid, OPMode),
00076   ESM_objectReadNoCopy(DbHandle const *dbh, int start, int length,
00077                       void *object, LockMode lockmode, short *pdatid,
00078                        unsigned int *psize, Oid const *const oid, OPMode),
00079   ESM_objectReadCache(DbHandle const *dbh, int start, void **object,
00080                      LockMode lockmode, Oid const *const oid),
00081   ESM_objectValidate(DbHandle const *, Oid const *const),
00082 
00083 #ifdef ESM_SERVER
00084   ESM_objectCreate_server(DbHandle const *dbh, void const *const object,
00085                           unsigned int size, Oid *oid, rpc_ServerData *data,
00086                          OPmode),
00087   ESM_objectWrite_server(DbHandle const *dbh, int start, int length,
00088                         void const *const object, Oid const *const oid,
00089                         rpc_ServerData *data, OPMode),
00090   ESM_objectRead_server(DbHandle const *dbh, int start, int length,
00091                        void *object, Oid const *const oid, rpc_ServerData *data),
00092 
00093 #endif
00094 
00095   ESM_bornAgainEpilogue(DbHandle const *dbh, Oid const *const o_oid,
00096                        Oid const *const n_oid, NS ns, short datid),
00097 
00098   ESM_objectSizeGet(DbHandle const *dbh, unsigned int *size, LockMode lockmode,
00099                    Oid const *const oid, OPMode),
00100   
00101   ESM_objectSizeModify(DbHandle const *dbh, unsigned int size, Boolean,
00102                       Oid const *const oid, OPMode),
00103 
00104   ESM_objectCheckAccess(DbHandle const *dbh, Boolean write,
00105                        Oid const *const oid, Boolean *access),
00106 
00107   ESM_objectLocationGet(DbHandle const *dbh, const Oid *oid,
00108                        ObjectLocation *objloc),
00109 
00110   ESM_objectsLocationGet(DbHandle const *dbh, const Oid *oid,
00111                         ObjectLocation *objloc, unsigned int oid_cnt),
00112 
00113   ESM_registerStart(DbHandle const *dbh, unsigned int reg_mask),
00114   ESM_registerClear(DbHandle const *dbh),
00115   ESM_registerEnd(DbHandle const *dbh),
00116   ESM_registerGet(DbHandle const *dbh, Register **),
00117 
00118   ESM_objectMoveDatDsp(DbHandle const *dbh, Oid const *const oid,
00119                       short datid, short dspid, Boolean keepDatid,
00120                       OPMode opmode),
00121 
00122   ESM_objectsMoveDatDsp(DbHandle const *dbh, Oid const *const oid,
00123                        unsigned int oid_cnt, short datid, short dspid,
00124                        Boolean keepDatid, OPMode opmode),
00125 
00126   ESM_firstOidDatGet(DbHandle const *dbh, short datid, Oid *oid,
00127                     Boolean *found),
00128   ESM_nextOidDatGet(DbHandle const *dbh, short datid,
00129                    Oid const *const baseoid, Oid *nextoid,
00130                    Boolean *found),
00131 
00132   ESM_firstOidGet_map(DbHandle const *dbh, short datid, Oid *oid,
00133                      Boolean *found),
00134   ESM_nextOidGet_map(DbHandle const *dbh, short datid,
00135                     Oid const *const baseoid, Oid *nextoid,
00136                     Boolean *found),
00137 
00138   ESM_firstOidGet_omp(DbHandle const *dbh, Oid *oid,
00139                      Boolean *found),
00140   ESM_nextOidGet_omp(DbHandle const *dbh,
00141                     Oid const *const baseoid, Oid *nextoid,
00142                     Boolean *found),
00143 
00144   //  ESM_mapInfoGet(DbHandle const *dbh, MapInfo *mpi),
00145 
00146   ESM_suserUnset(DbHandle *dbh),
00147 
00148   ESM_datCreate(DbHandle const *dbh, const char *file, const char *name,
00149                 unsigned long long maxsize, MapType mtype, unsigned int sizeslot,
00150                 DatType, mode_t file_mask, const char *file_group),
00151 
00152   ESM_datMove(DbHandle const *dbh, const char *datfile,
00153              const char *newdatfile, Boolean force),
00154 
00155   ESM_datDelete(DbHandle const *dbh, const char *datfile, Boolean force),
00156 
00157   ESM_datResize(DbHandle const *dbh, const char *datfile,
00158                 unsigned long long newmaxsize),
00159 
00160   ESM_datCheck(DbHandle const *dbh, const char *datfile,
00161               short *datid, short *dspid),
00162                     
00163   ESM_datMoveObjects(DbHandle const *dbh, const char *dat_src,
00164                     const char *dat_dest),
00165                     
00166   ESM_datResetCurSlot(DbHandle const *dbh, const char *datfile),
00167 
00168   ESM_datDefragment(DbHandle const *dbh, const char *datfile, mode_t file_mask, const char *file_group),
00169 
00170   ESM_datsCompress(DbHandle const *dbh),
00171 
00172   ESM_datRename(DbHandle const *dbh, const char *datfile, const char *name),
00173 
00174   ESM_datGetInfo(DbHandle const *dbh, const char *datfile,
00175                 DatafileInfo *info),
00176 
00177   ESM_datGetDspid(DbHandle const *dbh, short datid, short *dspid),
00178 
00179   ESM_dspSetDefault(DbHandle const *dbh, const char *datafile,
00180                Boolean fromDbCreate),
00181 
00182   ESM_dspGetDefault(DbHandle const *dbh, short *dspid),
00183 
00184   ESM_dspCreate(DbHandle const *dbh, const char *dataspace,
00185                const char **datfiles, unsigned int datfile_cnt,
00186                Boolean fromDbCreate),
00187 
00188   ESM_dspUpdate(DbHandle const *dbh, const char *dataspace,
00189                const char **datfiles, unsigned int datfile_cnt),
00190 
00191   ESM_dspDelete(DbHandle const *dbh, const char *dataspace),
00192   ESM_dspRename(DbHandle const *dbh, const char *dataspace,
00193                const char *dataspace_new),
00194 
00195   ESM_dspCheck(DbHandle const *dbh, const char *dataspace, short *dspid,
00196               short datid[], unsigned int *ndat),
00197 
00198   ESM_dspSetCurDat(DbHandle const *dbh, const char *dataspace, const char *),
00199   ESM_dspGetCurDat(DbHandle const *dbh, const char *dataspace, short *cur),
00200 
00201   ESM_protectionCreate(DbHandle const *dbh,
00202                       ProtectionDescription const *desc,
00203                       Oid *oid),
00204 
00205   ESM_protectionDelete(DbHandle const *dbh, Oid const *const oid),
00206 
00207   ESM_protectionModify(DbHandle const *dbh,
00208                       ProtectionDescription const *desc,
00209                       Oid const *oid),
00210 
00211   ESM_protectionGetByName(DbHandle const *dbh,
00212                          char const *name,
00213                          ProtectionDescription **desc,
00214                          Oid *oid),
00215 
00216   ESM_protectionGetByOid(DbHandle const *dbh,
00217                         Oid const *oid,
00218                         ProtectionDescription **desc),
00219 
00220   ESM_protectionListGet(DbHandle const *dbh,
00221                        Oid **oid, ProtectionDescription ***desc,
00222                         unsigned int *nprot),
00223 
00224   ESM_dbProtectionAdd(DbHandle const *dbh,
00225                      DbProtectionDescription const *desc, int nprot),
00226 
00227   ESM_dbProtectionGet(DbHandle const *dbh,
00228                      DbProtectionDescription **desc, unsigned int *nprot),
00229 
00230   ESM_objectProtectionSet(DbHandle const *dbh, Oid const *const oid,
00231                          Oid const *const protoid, OPMode),
00232   ESM_objectProtectionGet(DbHandle const *dbh, Oid const *const oid,
00233                          Oid *protoid),
00234 
00235   ESM_protectionsVolatUpdate(DbHandle const *dbh),
00236 
00237   ESM_objectRestore(DbHandle const *dbh, Oid const *const oid,
00238                     NS ns, short datid),
00239   ESM_objectDeleteByOidLoc(DbHandle const *dbh, Oid const *const oid,
00240                            NS ns, short datid);
00241 
00242 extern int ESM_getOpenFlags(DbHandle const *dbh);
00243 extern unsigned int ESM_xidGet(DbHandle *dbh);
00244 extern void ESM_uidSet(DbHandle *dbh, int uid);
00245 extern int ESM_uidGet(DbHandle *dbh);
00246 
00247 enum ESM_oidsTraceAction {
00248   ESM_allOids = 1,
00249   ESM_invalidOids,
00250   ESM_oidCount
00251 };
00252 
00253 extern void
00254   ESM_oidsTrace(DbHandle const *const, ESM_oidsTraceAction, FILE *);
00255 
00256 extern int
00257   ESM_dataBaseIdGet(DbHandle const *dbh);
00258 
00259 extern const char *
00260   shmfileGet(const char *);
00261 
00262 #define ESM_REGISTER(DBH, OP, X) do { \
00263       if ((DBH)->vd->reg && ((DBH)->vd->reg_mask & (OP))) X; \
00264 } while(0)
00265 
00266 }
00267 
00268 #endif

Generated on Mon Dec 22 18:15:56 2008 for eyedb by  doxygen 1.5.3