Libical API Documentation 4.0 UNRELEASED Go to the stable 3.0 documentation
Loading...
Searching...
No Matches
icalbdbset.h
Go to the documentation of this file.
1/*======================================================================
2 FILE: icalbdbset.h
3
4 SPDX-FileCopyrightText: 2001, Critical Path
5 SPDX-License-Identifier: LGPL-2.1-only OR MPL-2.0
6======================================================================*/
7
14
15#ifndef ICALBDBSET_H
16#define ICALBDBSET_H
17
18#include "libical_icalss_export.h"
19#include "icalset.h"
20
21#include <db.h>
22
23typedef struct icalbdbset_impl icalbdbset;
24
25enum icalbdbset_subdb_type
26{
27 ICALBDB_CALENDARS,
28 ICALBDB_EVENTS,
29 ICALBDB_TODOS,
30 ICALBDB_REMINDERS
31};
32typedef enum icalbdbset_subdb_type icalbdbset_subdb_type;
33
35LIBICAL_ICALSS_EXPORT int icalbdbset_init_dbenv(char *db_env_dir,
36 void (*logDbFunc)(const DB_ENV *,
37 const char *, const char *));
38
39LIBICAL_ICALSS_EXPORT icalset *icalbdbset_init(icalset *set, const char *dsn, void *options);
40
41LIBICAL_ICALSS_EXPORT int icalbdbset_cleanup(void);
42
43LIBICAL_ICALSS_EXPORT void icalbdbset_checkpoint(void);
44
45LIBICAL_ICALSS_EXPORT void icalbdbset_rmdbLog(void);
46
49LIBICAL_ICALSS_EXPORT icalset *icalbdbset_new(const char *database_filename,
50 icalbdbset_subdb_type subdb_type,
51 int dbtype, u_int32_t flag);
52
53LIBICAL_ICALSS_EXPORT DB *icalbdbset_bdb_open_secondary(DB *dbp,
54 const char *database,
55 const char *sub_database,
56 int (*callback)(DB *db,
57 const DBT *dbt1,
58 const DBT *dbt2,
59 DBT *dbt3),
60 int type);
61
62LIBICAL_ICALSS_EXPORT char *icalbdbset_parse_data(DBT *dbt, char *(*pfunc)(const DBT *dbt));
63
64LIBICAL_ICALSS_EXPORT void icalbdbset_free(icalset *set);
65
66/* cursor operations */
67LIBICAL_ICALSS_EXPORT int icalbdbset_acquire_cursor(DB *dbp, DB_TXN *tid, DBC **rdbcp);
68
69LIBICAL_ICALSS_EXPORT int icalbdbset_cget(DBC *dbcp, DBT *key, DBT *data,
70 u_int32_t access_method);
71
72LIBICAL_ICALSS_EXPORT int icalbdbset_cput(DBC *dbcp, DBT *key, DBT *data,
73 u_int32_t access_method);
74
75LIBICAL_ICALSS_EXPORT int icalbdbset_get_first(DBC *dbcp, DBT *key, DBT *data);
76
77LIBICAL_ICALSS_EXPORT int icalbdbset_get_next(DBC *dbcp, DBT *key, DBT *data);
78
79LIBICAL_ICALSS_EXPORT int icalbdbset_get_last(DBC *dbcp, DBT *key, DBT *data);
80
81LIBICAL_ICALSS_EXPORT int icalbdbset_get_key(DBC *dbcp, DBT *key, DBT *data);
82
83LIBICAL_ICALSS_EXPORT int icalbdbset_delete(DB *dbp, DBT *key);
84
85LIBICAL_ICALSS_EXPORT int icalbdbset_put(DB *dbp, DBT *key, DBT *data, u_int32_t access_method);
86
87LIBICAL_ICALSS_EXPORT int icalbdbset_get(DB *dbp, DB_TXN *tid, DBT *key, DBT *data,
88 u_int32_t flags);
89
90LIBICAL_ICALSS_EXPORT const char *icalbdbset_path(icalset *set);
91
92LIBICAL_ICALSS_EXPORT const char *icalbdbset_subdb(icalset *set);
93
94/* Mark the set as changed, so it will be written to disk when it
95 is freed. Commit writes to disk immediately. */
96LIBICAL_ICALSS_EXPORT void icalbdbset_mark(icalset *set);
97
98LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_commit(icalset *set);
99
100LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_add_component(icalset *set, icalcomponent *child);
101
102LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_remove_component(icalset *set,
103 icalcomponent *child);
104
105LIBICAL_ICALSS_EXPORT int icalbdbset_count_components(icalset *set, icalcomponent_kind kind);
106
107/* Restrict the component returned by icalbdbset_first, _next to those
108 that pass the gauge. _clear removes the gauge */
109LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_select(icalset *set, icalgauge *gauge);
110
111LIBICAL_ICALSS_EXPORT void icalbdbset_clear(icalset *set);
112
113/* Gets and searches for a component by uid */
114LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_fetch(icalset *set,
115 icalcomponent_kind kind, const char *uid);
116
117LIBICAL_ICALSS_EXPORT int icalbdbset_has_uid(icalset *set, const char *uid);
118
119LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_fetch_match(icalset *set, const icalcomponent *c);
120
121LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_modify(icalset *set, icalcomponent *old,
122 icalcomponent *newc);
123
124/* cluster management functions */
125LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_set_cluster(icalset *set, icalcomponent *cluster);
126
127LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_free_cluster(icalset *set);
128
129LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_get_cluster(icalset *set);
130
131/* Iterate through components. If a gauge has been defined, these
132 will skip over components that do not pass the gauge */
133
134LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_get_current_component(icalset *set);
135
136LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_get_first_component(icalset *set);
137
138LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_get_next_component(icalset *set);
139
140/* External iterator for thread safety */
141LIBICAL_ICALSS_EXPORT icalsetiter icalbdbset_begin_component(icalset *set,
143 icalgauge *gauge, const char *tzid);
144
145LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_form_a_matched_recurrence_component(icalsetiter *
146 itr);
147
148LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbsetiter_to_next(icalset *set, icalsetiter *i);
149
150LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbsetiter_to_prior(icalset *set, icalsetiter *i);
151
152/* Return a reference to the internal component. You probably should
153 not be using this. */
154
155LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_get_component(icalset *set);
156
157LIBICAL_ICALSS_EXPORT DB_ENV *icalbdbset_get_env(void);
158
159LIBICAL_ICALSS_EXPORT int icalbdbset_begin_transaction(DB_TXN *parent_id, DB_TXN **txnid);
160
161LIBICAL_ICALSS_EXPORT int icalbdbset_commit_transaction(DB_TXN *txnid);
162
163LIBICAL_ICALSS_EXPORT DB *icalbdbset_bdb_open(const char *path,
164 const char *subdb,
165 int type, int mode, u_int32_t flag);
166
168typedef struct icalbdbset_options {
169 icalbdbset_subdb_type subdb;
170 int dbtype;
171 int mode;
172 u_int32_t flag;
173 char *(*pfunc)(const DBT *dbt);
175 int (*callback)(DB *db,
177 const DBT *dbt1, const DBT *dbt2, DBT *dbt3);
178} icalbdbset_options;
180
181#endif /* !ICALBDBSET_H */
icalerrorenum icalbdbset_select(icalset *set, icalgauge *gauge)
Definition icalbdbset.c:986
DB * icalbdbset_bdb_open_secondary(DB *dbp, const char *database, const char *sub_database, int(*callback)(DB *db, const DBT *dbt1, const DBT *dbt2, DBT *dbt3), int type)
Definition icalbdbset.c:350
void icalbdbset_clear(icalset *set)
int icalbdbset_init_dbenv(char *db_env_dir, void(*logDbFunc)(const DB_ENV *, const char *, const char *))
Definition icalbdbset.c:52
const char * icalbdbset_path(icalset *set)
Definition icalbdbset.c:684
icalcomponent * icalbdbset_get_current_component(icalset *set)
icalset * icalbdbset_new(const char *database_filename, icalbdbset_subdb_type subdb_type, int dbtype, u_int32_t flag)
Definition icalbdbset.c:330
icalerrorenum icalbdbset_commit(icalset *set)
Definition icalbdbset.c:703
icalcomponent_kind
Definition icalenums.h:29
icalerrorenum
Represents the different types of errors that can be triggered in libical.
Definition icalerror.h:42
Icalset is the "base class" for representations of a collection of iCal components.