mirror of
https://github.com/Gnucash/gnucash.git
synced 2024-11-27 19:30:27 -06:00
83d14e1c1c
It is split into - /libgnucash (for the non-gui bits) - /gnucash (for the gui) - /common (misc source files used by both) - /bindings (currently only holds python bindings) This is the first step in restructuring the code. It will need much more fine tuning later on.
173 lines
8.0 KiB
C
173 lines
8.0 KiB
C
/********************************************************************\
|
|
* qofbackend.h: api for data storage backend *
|
|
* This program is free software; you can redistribute it and/or *
|
|
* modify it under the terms of the GNU General Public License as *
|
|
* published by the Free Software Foundation; either version 2 of *
|
|
* the License, or (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License*
|
|
* along with this program; if not, contact: *
|
|
* *
|
|
* Free Software Foundation Voice: +1-617-542-5942 *
|
|
* 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
|
|
* Boston, MA 02110-1301, USA gnu@gnu.org *
|
|
* *
|
|
\********************************************************************/
|
|
/** @addtogroup Object
|
|
@{
|
|
*/
|
|
/** @addtogroup Backend
|
|
|
|
The QOF Backend is a pseudo-object providing an interface between the
|
|
engine and a persistent data store (e.g. a server, a database, or
|
|
a file). Backends are not meant to be used directly by an
|
|
application; instead the Session should be used to make a
|
|
connection with some particular backend.
|
|
There are no backend functions that are 'public' to
|
|
users of the engine. The backend can, however, report errors to
|
|
the GUI & other front-end users. This file defines these errors.
|
|
|
|
Backends are used to save and restore Entities in a Book.
|
|
@{
|
|
*/
|
|
/** @file qofbackend.h
|
|
@brief API for data storage Backend
|
|
@author Copyright (C) 2000-2001 Linas Vepstas <linas@linas.org>
|
|
@author Copyright 2004-2005 Neil Williams <linux@codehelp.co.uk>
|
|
*/
|
|
|
|
#ifndef QOF_BACKEND_H
|
|
#define QOF_BACKEND_H
|
|
|
|
#include "qofinstance.h"
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
#define QOF_MOD_BACKEND "qof.backend"
|
|
|
|
/** \brief The errors that can be reported to the GUI & other front-end users
|
|
* \warning (GnuCash) If you modify QofBackendError, please update
|
|
* src/engine/gw-engine-spec.scm
|
|
*/
|
|
typedef enum
|
|
{
|
|
ERR_BACKEND_NO_ERR = 0,
|
|
ERR_BACKEND_NO_HANDLER, /**< no backend handler found for this access method (ENOSYS) */
|
|
ERR_BACKEND_NO_BACKEND, /**< Backend * pointer was unexpectedly null */
|
|
ERR_BACKEND_BAD_URL, /**< Can't parse url */
|
|
ERR_BACKEND_NO_SUCH_DB, /**< the named database doesn't exist */
|
|
ERR_BACKEND_CANT_CONNECT, /**< bad dbname/login/passwd or network failure */
|
|
ERR_BACKEND_CONN_LOST, /**< Lost connection to server */
|
|
ERR_BACKEND_LOCKED, /**< in use by another user (ETXTBSY) */
|
|
ERR_BACKEND_STORE_EXISTS, /**< File exists, data would be destroyed */
|
|
ERR_BACKEND_READONLY, /**< cannot write to file/directory */
|
|
ERR_BACKEND_TOO_NEW, /**< file/db version newer than what we can read */
|
|
ERR_BACKEND_DATA_CORRUPT, /**< data in db is corrupt */
|
|
ERR_BACKEND_SERVER_ERR, /**< error in response from server */
|
|
ERR_BACKEND_ALLOC, /**< internal memory allocation failure */
|
|
ERR_BACKEND_PERM, /**< user login successful, but no permissions
|
|
to access the desired object */
|
|
ERR_BACKEND_MODIFIED, /**< commit of object update failed because
|
|
another user has modified the object */
|
|
ERR_BACKEND_MOD_DESTROY, /**< commit of object update failed because
|
|
another user has deleted the object */
|
|
ERR_BACKEND_MISC, /**< undetermined error */
|
|
|
|
ERR_QOF_OVERFLOW, /**< EOVERFLOW - generated by strtol or strtoll.
|
|
|
|
When converting XML strings into numbers, an overflow has been detected. The XML file
|
|
contains invalid data in a field that is meant to hold a signed long integer or signed long long
|
|
integer.
|
|
*/
|
|
|
|
/* fileio errors */
|
|
ERR_FILEIO_FILE_BAD_READ = 1000, /**< read failed or file prematurely truncated */
|
|
ERR_FILEIO_FILE_EMPTY, /**< file exists, is readable, but is empty */
|
|
ERR_FILEIO_FILE_LOCKERR, /**< mangled locks (unspecified error) */
|
|
ERR_FILEIO_FILE_NOT_FOUND, /**< not found / no such file */
|
|
ERR_FILEIO_FILE_TOO_OLD, /**< file version so old we can't read it */
|
|
ERR_FILEIO_UNKNOWN_FILE_TYPE, /**< didn't recognize the file type */
|
|
ERR_FILEIO_PARSE_ERROR, /**< couldn't parse the data in the file */
|
|
ERR_FILEIO_BACKUP_ERROR, /**< couldn't make a backup of the file */
|
|
ERR_FILEIO_WRITE_ERROR, /**< couldn't write to the file */
|
|
ERR_FILEIO_READ_ERROR, /**< Could not open the file for reading. */
|
|
ERR_FILEIO_NO_ENCODING, /**< file does not specify encoding */
|
|
ERR_FILEIO_FILE_EACCES, /**< No read access permission for the given file */
|
|
ERR_FILEIO_RESERVED_WRITE, /**< User attempt to write to a directory reserved
|
|
for internal use by GnuCash */
|
|
ERR_FILEIO_FILE_UPGRADE, /**< file will be upgraded and not be able to be
|
|
read by prior versions - warn users*/
|
|
|
|
/* network errors */
|
|
ERR_NETIO_SHORT_READ = 2000, /**< not enough bytes received */
|
|
ERR_NETIO_WRONG_CONTENT_TYPE, /**< wrong kind of server, wrong data served */
|
|
ERR_NETIO_NOT_GNCXML, /**< whatever it is, we can't parse it. */
|
|
|
|
/* database errors */
|
|
ERR_SQL_MISSING_DATA = 3000, /**< database doesn't contain expected data */
|
|
ERR_SQL_DB_TOO_OLD, /**< database is old and needs upgrading */
|
|
ERR_SQL_DB_TOO_NEW, /**< database is newer, we can't write to it */
|
|
ERR_SQL_DB_BUSY, /**< database is busy, cannot upgrade version */
|
|
ERR_SQL_BAD_DBI, /**< LibDBI has numeric errors */
|
|
ERR_SQL_DBI_UNTESTABLE, /**< could not complete test for LibDBI bug */
|
|
|
|
/* RPC errors */
|
|
ERR_RPC_HOST_UNK = 4000, /**< Host unknown */
|
|
ERR_RPC_CANT_BIND, /**< can't bind to address */
|
|
ERR_RPC_CANT_ACCEPT, /**< can't accept connection */
|
|
ERR_RPC_NO_CONNECTION, /**< no connection to server */
|
|
ERR_RPC_BAD_VERSION, /**< RPC Version Mismatch */
|
|
ERR_RPC_FAILED, /**< Operation failed */
|
|
ERR_RPC_NOT_ADDED, /**< object not added */
|
|
} QofBackendError;
|
|
|
|
typedef struct QofBackend QofBackend;
|
|
|
|
/* The following functions are used in C files. */
|
|
/** Get the last backend error. */
|
|
QofBackendError qof_backend_get_error (QofBackend*);
|
|
/** Set the error on the specified QofBackend. */
|
|
void qof_backend_set_error (QofBackend*, QofBackendError);
|
|
|
|
/* Temporary wrapper so that we don't have to expose qof-backend.hpp to Transaction.c */
|
|
gboolean qof_backend_can_rollback (QofBackend*);
|
|
void qof_backend_rollback_instance (QofBackend*, QofInstance*);
|
|
|
|
/** \brief Load a QOF-compatible backend shared library.
|
|
|
|
\param directory Can be NULL if filename is a complete path.
|
|
\param module_name Name of the .la file that describes the
|
|
shared library. This provides platform independence,
|
|
courtesy of libtool.
|
|
|
|
\return FALSE in case or error, otherwise TRUE.
|
|
*/
|
|
gboolean
|
|
qof_load_backend_library(const gchar *directory, const gchar* module_name);
|
|
|
|
/** \brief Finalize all loaded backend sharable libraries. */
|
|
void qof_finalize_backend_libraries(void);
|
|
|
|
/** \brief Retrieve the backend used by this book */
|
|
QofBackend* qof_book_get_backend (const QofBook *book);
|
|
|
|
void qof_book_set_backend (QofBook *book, QofBackend *);
|
|
|
|
|
|
/** \brief DOCUMENT ME! */
|
|
typedef void (*QofBePercentageFunc) (/*@ null @*/ const char *message, double percent);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* QOF_BACKEND_H */
|
|
/** @} */
|
|
/** @} */
|