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