X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fdatabase.h;h=e7acb31fbd9b44398a930a4c4a12fa069c1780f0;hb=30a4090b04dff1084df3789efe78afd1e2bf6d90;hp=c7fe3833eca7e18707a193ae8e663e6eb18f2456;hpb=84a0666848ccbea920f0bd398baf149c1a12ea74;p=citadel.git diff --git a/citadel/database.h b/citadel/database.h index c7fe3833e..e7acb31fb 100644 --- a/citadel/database.h +++ b/citadel/database.h @@ -1,10 +1,24 @@ -/* $Id$ */ -void defrag_databases (void); +/* + * Copyright (c) 1987-2012 by the citadel.org team + * + * This program is open source software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef DATABASE_H +#define DATABASE_H + + void open_databases (void); void close_databases (void); -int cdb_store (int cdb, void *key, int keylen, void *data, int datalen); +int cdb_store (int cdb, const void *key, int keylen, void *data, int datalen); int cdb_delete (int cdb, void *key, int keylen); -struct cdbdata *cdb_fetch (int cdb, void *key, int keylen); +struct cdbdata *cdb_fetch (int cdb, const void *key, int keylen); void cdb_free (struct cdbdata *cdb); void cdb_rewind (int cdb); struct cdbdata *cdb_next_item (int cdb); @@ -18,6 +32,9 @@ void cdb_trunc(int cdb); void *checkpoint_thread(void *arg); void cdb_chmod_data(void); void cdb_checkpoint(void); +void check_handles(void *arg); +void cdb_cull_logs(void); + /* * Database records beginning with this magic number are assumed to @@ -36,4 +53,21 @@ struct CtdlCompressHeader { size_t compressed_len; }; +typedef enum __eCheckType { + eCheckExist, /* look up the item, return the timestamp if its there, 0 if not. */ + eCheckUpdate, /* if it exists, refresh in db timestamp. return the timstamp if its there, 0 if not. */ + eUpdate, /* insert/update the new value, return the old if its there, 0 if not. */ + eWrite /* write this to DB, unconditional. */ +}eCheckType; + +time_t CheckIfAlreadySeen(const char *Facility, + StrBuf *guid, + time_t now, + time_t antiexpire, + eCheckType cType, + long ccid, + long ioid); + + +#endif /* DATABASE_H */