qofbackend.h

Go to the documentation of this file.
00001 /********************************************************************\
00002  * qofbackend.h: api for data storage backend                       *
00003  * This program is free software; you can redistribute it and/or    *
00004  * modify it under the terms of the GNU General Public License as   *
00005  * published by the Free Software Foundation; either version 2 of   *
00006  * the License, or (at your option) any later version.              *
00007  *                                                                  *
00008  * This program is distributed in the hope that it will be useful,  *
00009  * but WITHOUT ANY WARRANTY; without even the implied warranty of   *
00010  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    *
00011  * GNU General Public License for more details.                     *
00012  *                                                                  *
00013  * You should have received a copy of the GNU General Public License*
00014  * along with this program; if not, contact:                        *
00015  *                                                                  *
00016  * Free Software Foundation           Voice:  +1-617-542-5942       *
00017  * 51 Franklin Street, Fifth Floor    Fax:    +1-617-542-2652       *
00018  * Boston, MA  02110-1301,  USA       gnu@gnu.org                   *
00019  *                                                                  *
00020 \********************************************************************/
00045 #ifndef QOF_BACKEND_H
00046 #define QOF_BACKEND_H
00047 
00048 #include "qofinstance.h"
00049 
00050 #define QOF_MOD_BACKEND "qof-backend"
00051 
00054 typedef enum
00055 {
00056     ERR_BACKEND_NO_ERR = 0,
00057     ERR_BACKEND_NO_HANDLER,   
00059     ERR_BACKEND_NO_BACKEND,   
00061     ERR_BACKEND_BAD_URL,      
00062     ERR_BACKEND_NO_SUCH_DB,   
00063     ERR_BACKEND_CANT_CONNECT, 
00065     ERR_BACKEND_CONN_LOST,    
00066     ERR_BACKEND_LOCKED,       
00067     ERR_BACKEND_READONLY,       
00068     ERR_BACKEND_TOO_NEW,      
00070     ERR_BACKEND_DATA_CORRUPT, 
00071     ERR_BACKEND_SERVER_ERR,   
00072     ERR_BACKEND_ALLOC,        
00073     ERR_BACKEND_PERM,         
00075     ERR_BACKEND_MODIFIED,     
00077     ERR_BACKEND_MOD_DESTROY,  
00079     ERR_BACKEND_MISC,         
00081     /* QSF add-ons */
00082     ERR_QSF_INVALID_OBJ,        
00084     ERR_QSF_INVALID_MAP,        
00086     ERR_QSF_BAD_OBJ_GUID,       
00088     ERR_QSF_BAD_QOF_VERSION,    
00090     ERR_QSF_BAD_MAP,            
00096     ERR_QSF_NO_MAP,     
00101     ERR_QSF_WRONG_MAP,      
00107     ERR_QSF_MAP_NOT_OBJ,        
00109     ERR_QSF_OVERFLOW,           
00117     ERR_QSF_OPEN_NOT_MERGE, 
00122     /* fileio errors */
00123     ERR_FILEIO_FILE_BAD_READ = 1000,  
00125     ERR_FILEIO_FILE_EMPTY,     
00127     ERR_FILEIO_FILE_LOCKERR,   
00128     ERR_FILEIO_FILE_NOT_FOUND, 
00129     ERR_FILEIO_FILE_TOO_OLD,   
00131     ERR_FILEIO_UNKNOWN_FILE_TYPE, 
00133     ERR_FILEIO_PARSE_ERROR,    
00135     ERR_FILEIO_BACKUP_ERROR,   
00137     ERR_FILEIO_WRITE_ERROR,    
00138     ERR_FILEIO_READ_ERROR,     
00140     ERR_FILEIO_NO_ENCODING,    
00142     /* network errors */
00143     ERR_NETIO_SHORT_READ = 2000,  
00144     ERR_NETIO_WRONG_CONTENT_TYPE, 
00146     ERR_NETIO_NOT_GNCXML,         
00149     /* database errors */
00150     ERR_SQL_MISSING_DATA = 3000,  
00152     ERR_SQL_DB_TOO_OLD,           
00154     ERR_SQL_DB_BUSY,              
00157     /* RPC errors */
00158     ERR_RPC_HOST_UNK = 4000,      
00159     ERR_RPC_CANT_BIND,            
00160     ERR_RPC_CANT_ACCEPT,          
00161     ERR_RPC_NO_CONNECTION,        
00162     ERR_RPC_BAD_VERSION,          
00163     ERR_RPC_FAILED,               
00164     ERR_RPC_NOT_ADDED,            
00165 } QofBackendError;
00166 
00171 typedef struct QofBackendProvider_s QofBackendProvider;
00172 
00180 typedef struct QofBackend_s QofBackend;
00181 
00183 typedef void (*QofBePercentageFunc) (const gchar * message, double percent);
00184 
00194 void qof_backend_run_begin (QofBackend * be, QofInstance * inst);
00195 
00196 gboolean qof_backend_begin_exists (QofBackend * be);
00197 
00198 void qof_backend_run_commit (QofBackend * be, QofInstance * inst);
00199 
00200 gboolean qof_backend_commit_exists (QofBackend * be);
00225 typedef struct QofBackendOption_s
00226 {
00227     KvpValueType type;         
00229     const gchar *option_name;  
00230     const gchar *description;  
00231     const gchar *tooltip;      
00232     gpointer value;            
00233 } QofBackendOption;
00234 
00236 void qof_backend_prepare_frame (QofBackend * be);
00237 
00239 void qof_backend_prepare_option (QofBackend * be, QofBackendOption * option);
00240 
00242 KvpFrame *qof_backend_complete_frame (QofBackend * be);
00243 
00245 typedef void (*QofBackendOptionCB) (QofBackendOption *, gpointer data);
00246 
00248 void
00249 qof_backend_option_foreach (KvpFrame * config, QofBackendOptionCB cb,
00250                             gpointer data);
00251 
00260 void qof_backend_load_config (QofBackend * be, KvpFrame * config);
00261 
00279 KvpFrame *qof_backend_get_config (QofBackend * be);
00292 gboolean
00293 qof_load_backend_library (const gchar * directory,
00294                           const gchar * filename, const gchar * init_fcn);
00295 
00297 QofBackend *qof_book_get_backend (QofBook * book);
00298 
00303 void qof_book_set_backend (QofBook * book, QofBackend *);
00304 
00307 #endif /* QOF_BACKEND_H */

Generated on Mon May 21 17:42:21 2007 for QOF by  doxygen 1.5.1