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 \********************************************************************/
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     /* QSF add-ons */
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     /* fileio errors */
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     /* network errors */
00140     ERR_NETIO_SHORT_READ = 2000,  
00141     ERR_NETIO_WRONG_CONTENT_TYPE, 
00143     ERR_NETIO_NOT_GNCXML,         
00146     /* database errors */
00147     ERR_SQL_MISSING_DATA = 3000,  
00149     ERR_SQL_DB_TOO_OLD,           
00151     ERR_SQL_DB_BUSY,              
00154     /* RPC errors */
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 /* QOF_BACKEND_H */

Generated on Fri Sep 15 14:24:56 2006 for QOF by  doxygen 1.4.7