00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00042 #ifndef QOF_BACKEND_H
00043 #define QOF_BACKEND_H
00044
00045 #include "qofinstance.h"
00046
00047 #define QOF_MOD_BACKEND "qof-backend"
00048
00051 typedef enum
00052 {
00053 ERR_BACKEND_NO_ERR = 0,
00054 ERR_BACKEND_NO_HANDLER,
00056 ERR_BACKEND_NO_BACKEND,
00058 ERR_BACKEND_BAD_URL,
00059 ERR_BACKEND_NO_SUCH_DB,
00060 ERR_BACKEND_CANT_CONNECT,
00062 ERR_BACKEND_CONN_LOST,
00063 ERR_BACKEND_LOCKED,
00064 ERR_BACKEND_READONLY,
00065 ERR_BACKEND_TOO_NEW,
00067 ERR_BACKEND_DATA_CORRUPT,
00068 ERR_BACKEND_SERVER_ERR,
00069 ERR_BACKEND_ALLOC,
00070 ERR_BACKEND_PERM,
00072 ERR_BACKEND_MODIFIED,
00074 ERR_BACKEND_MOD_DESTROY,
00076 ERR_BACKEND_MISC,
00078
00079 ERR_QSF_INVALID_OBJ,
00081 ERR_QSF_INVALID_MAP,
00083 ERR_QSF_BAD_OBJ_GUID,
00085 ERR_QSF_BAD_QOF_VERSION,
00087 ERR_QSF_BAD_MAP,
00093 ERR_QSF_NO_MAP,
00098 ERR_QSF_WRONG_MAP,
00104 ERR_QSF_MAP_NOT_OBJ,
00106 ERR_QSF_OVERFLOW,
00114 ERR_QSF_OPEN_NOT_MERGE,
00119
00120 ERR_FILEIO_FILE_BAD_READ = 1000,
00122 ERR_FILEIO_FILE_EMPTY,
00124 ERR_FILEIO_FILE_LOCKERR,
00125 ERR_FILEIO_FILE_NOT_FOUND,
00126 ERR_FILEIO_FILE_TOO_OLD,
00128 ERR_FILEIO_UNKNOWN_FILE_TYPE,
00130 ERR_FILEIO_PARSE_ERROR,
00132 ERR_FILEIO_BACKUP_ERROR,
00134 ERR_FILEIO_WRITE_ERROR,
00135 ERR_FILEIO_READ_ERROR,
00137 ERR_FILEIO_NO_ENCODING,
00139
00140 ERR_NETIO_SHORT_READ = 2000,
00141 ERR_NETIO_WRONG_CONTENT_TYPE,
00143 ERR_NETIO_NOT_GNCXML,
00146
00147 ERR_SQL_MISSING_DATA = 3000,
00149 ERR_SQL_DB_TOO_OLD,
00151 ERR_SQL_DB_BUSY,
00154
00155 ERR_RPC_HOST_UNK = 4000,
00156 ERR_RPC_CANT_BIND,
00157 ERR_RPC_CANT_ACCEPT,
00158 ERR_RPC_NO_CONNECTION,
00159 ERR_RPC_BAD_VERSION,
00160 ERR_RPC_FAILED,
00161 ERR_RPC_NOT_ADDED,
00162 } QofBackendError;
00163
00168 typedef struct QofBackendProvider_s QofBackendProvider;
00169
00177 typedef struct QofBackend_s QofBackend;
00178
00180 typedef void (*QofBePercentageFunc) (const gchar * message, double percent);
00181
00191 void qof_backend_run_begin (QofBackend * be, QofInstance * inst);
00192
00193 gboolean qof_backend_begin_exists (QofBackend * be);
00194
00195 void qof_backend_run_commit (QofBackend * be, QofInstance * inst);
00196
00197 gboolean qof_backend_commit_exists (QofBackend * be);
00222 typedef struct QofBackendOption_s
00223 {
00224 KvpValueType type;
00226 const gchar *option_name;
00227 const gchar *description;
00228 const gchar *tooltip;
00229 gpointer value;
00230 } QofBackendOption;
00231
00233 void qof_backend_prepare_frame (QofBackend * be);
00234
00236 void qof_backend_prepare_option (QofBackend * be, QofBackendOption * option);
00237
00239 KvpFrame *qof_backend_complete_frame (QofBackend * be);
00240
00242 typedef void (*QofBackendOptionCB) (QofBackendOption *, gpointer data);
00243
00245 void
00246 qof_backend_option_foreach (KvpFrame * config, QofBackendOptionCB cb,
00247 gpointer data);
00248
00257 void qof_backend_load_config (QofBackend * be, KvpFrame * config);
00258
00276 KvpFrame *qof_backend_get_config (QofBackend * be);
00289 gboolean
00290 qof_load_backend_library (const gchar * directory,
00291 const gchar * filename, const gchar * init_fcn);
00292
00294 QofBackend *qof_book_get_backend (QofBook * book);
00295
00300 void qof_book_set_backend (QofBook * book, QofBackend *);
00301
00304 #endif