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