$darkmode
Libical API Documentation 4.0 STABLE VERSION Visit the v3.0 documentation
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 
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 
23 typedef struct icalbdbset_impl icalbdbset;
24 
25 enum icalbdbset_subdb_type
26 {
27  ICALBDB_CALENDARS,
28  ICALBDB_EVENTS,
29  ICALBDB_TODOS,
30  ICALBDB_REMINDERS
31 };
32 typedef enum icalbdbset_subdb_type icalbdbset_subdb_type;
33 
35 LIBICAL_ICALSS_EXPORT int icalbdbset_init_dbenv(char *db_env_dir,
36  void (*logDbFunc)(const DB_ENV *,
37  const char *, const char *));
38 
39 LIBICAL_ICALSS_EXPORT icalset *icalbdbset_init(icalset *set, const char *dsn, void *options);
40 
41 LIBICAL_ICALSS_EXPORT int icalbdbset_cleanup(void);
42 
43 LIBICAL_ICALSS_EXPORT void icalbdbset_checkpoint(void);
44 
45 LIBICAL_ICALSS_EXPORT void icalbdbset_rmdbLog(void);
46 
49 LIBICAL_ICALSS_EXPORT icalset *icalbdbset_new(const char *database_filename,
50  icalbdbset_subdb_type subdb_type,
51  int dbtype, u_int32_t flag);
52 
53 LIBICAL_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 
62 LIBICAL_ICALSS_EXPORT char *icalbdbset_parse_data(DBT *dbt, char *(*pfunc)(const DBT *dbt));
63 
64 LIBICAL_ICALSS_EXPORT void icalbdbset_free(icalset *set);
65 
66 /* cursor operations */
67 LIBICAL_ICALSS_EXPORT int icalbdbset_acquire_cursor(DB *dbp, DB_TXN *tid, DBC **rdbcp);
68 
69 LIBICAL_ICALSS_EXPORT int icalbdbset_cget(DBC *dbcp, DBT *key, DBT *data,
70  u_int32_t access_method);
71 
72 LIBICAL_ICALSS_EXPORT int icalbdbset_cput(DBC *dbcp, DBT *key, DBT *data,
73  u_int32_t access_method);
74 
75 LIBICAL_ICALSS_EXPORT int icalbdbset_get_first(DBC *dbcp, DBT *key, DBT *data);
76 
77 LIBICAL_ICALSS_EXPORT int icalbdbset_get_next(DBC *dbcp, DBT *key, DBT *data);
78 
79 LIBICAL_ICALSS_EXPORT int icalbdbset_get_last(DBC *dbcp, DBT *key, DBT *data);
80 
81 LIBICAL_ICALSS_EXPORT int icalbdbset_get_key(DBC *dbcp, DBT *key, DBT *data);
82 
83 LIBICAL_ICALSS_EXPORT int icalbdbset_delete(DB *dbp, DBT *key);
84 
85 LIBICAL_ICALSS_EXPORT int icalbdbset_put(DB *dbp, DBT *key, DBT *data, u_int32_t access_method);
86 
87 LIBICAL_ICALSS_EXPORT int icalbdbset_get(DB *dbp, DB_TXN *tid, DBT *key, DBT *data,
88  u_int32_t flags);
89 
90 LIBICAL_ICALSS_EXPORT const char *icalbdbset_path(icalset *set);
91 
92 LIBICAL_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. */
96 LIBICAL_ICALSS_EXPORT void icalbdbset_mark(icalset *set);
97 
98 LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_commit(icalset *set);
99 
100 LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_add_component(icalset *set, icalcomponent *child);
101 
102 LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_remove_component(icalset *set,
103  icalcomponent *child);
104 
105 LIBICAL_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 */
109 LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_select(icalset *set, icalgauge *gauge);
110 
111 LIBICAL_ICALSS_EXPORT void icalbdbset_clear(icalset *set);
112 
113 /* Gets and searches for a component by uid */
114 LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_fetch(icalset *set,
115  icalcomponent_kind kind, const char *uid);
116 
117 LIBICAL_ICALSS_EXPORT int icalbdbset_has_uid(icalset *set, const char *uid);
118 
119 LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_fetch_match(icalset *set, const icalcomponent *c);
120 
121 LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_modify(icalset *set, icalcomponent *old,
122  icalcomponent *newc);
123 
124 /* cluster management functions */
125 LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_set_cluster(icalset *set, icalcomponent *cluster);
126 
127 LIBICAL_ICALSS_EXPORT icalerrorenum icalbdbset_free_cluster(icalset *set);
128 
129 LIBICAL_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 
134 LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_get_current_component(icalset *set);
135 
136 LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_get_first_component(icalset *set);
137 
138 LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_get_next_component(icalset *set);
139 
140 /* External iterator for thread safety */
141 LIBICAL_ICALSS_EXPORT icalsetiter icalbdbset_begin_component(icalset *set,
142  icalcomponent_kind kind,
143  icalgauge *gauge, const char *tzid);
144 
145 LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_form_a_matched_recurrence_component(icalsetiter *
146  itr);
147 
148 LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbsetiter_to_next(icalset *set, icalsetiter *i);
149 
150 LIBICAL_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 
155 LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbset_get_component(icalset *set);
156 
157 LIBICAL_ICALSS_EXPORT DB_ENV *icalbdbset_get_env(void);
158 
159 LIBICAL_ICALSS_EXPORT int icalbdbset_begin_transaction(DB_TXN *parent_id, DB_TXN **txnid);
160 
161 LIBICAL_ICALSS_EXPORT int icalbdbset_commit_transaction(DB_TXN *txnid);
162 
163 LIBICAL_ICALSS_EXPORT DB *icalbdbset_bdb_open(const char *path,
164  const char *subdb,
165  int type, int mode, u_int32_t flag);
166 
168 typedef 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 */
int icalbdbset_init_dbenv(char *db_env_dir, void(*logDbFunc)(const DB_ENV *, const char *, const char *))
Icalset is the "base class" for representations of a collection of iCal components.
icalcomponent * icalbdbset_get_current_component(icalset *set)
Definition: icalbdbset.c:1205
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
const char * icalbdbset_path(icalset *set)
Definition: icalbdbset.c:684
icalerrorenum
Represents the different types of errors that can be triggered in libical.
Definition: icalerror.h:41
icalerrorenum icalbdbset_commit(icalset *set)
Definition: icalbdbset.c:703
void icalbdbset_clear(icalset *set)
Definition: icalbdbset.c:1000
icalcomponent_kind
Definition: icalenums.h:28
icalerrorenum icalbdbset_select(icalset *set, icalgauge *gauge)
Definition: icalbdbset.c:986
icalset * icalbdbset_new(const char *database_filename, icalbdbset_subdb_type subdb_type, int dbtype, u_int32_t flag)
Definition: icalbdbset.c:330