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  * 59 Temple Place - Suite 330        Fax:    +1-617-542-2652       *
00018  * Boston, MA  02111-1307,  USA       gnu@gnu.org                   *
00019  *                                                                  *
00020 \********************************************************************/
00041 #ifndef QOF_BACKEND_H
00042 #define QOF_BACKEND_H
00043 
00044 #include "qofinstance.h"
00045 
00046 #define QOF_MOD_BACKEND "qof-backend"
00047 
00052 typedef enum {
00053   ERR_BACKEND_NO_ERR = 0,
00054   ERR_BACKEND_NO_HANDLER,   
00055   ERR_BACKEND_NO_BACKEND,   
00056   ERR_BACKEND_BAD_URL,      
00057   ERR_BACKEND_NO_SUCH_DB,   
00058   ERR_BACKEND_CANT_CONNECT, 
00059   ERR_BACKEND_CONN_LOST,    
00060   ERR_BACKEND_LOCKED,       
00061   ERR_BACKEND_READONLY,     
00062   ERR_BACKEND_TOO_NEW,      
00063   ERR_BACKEND_DATA_CORRUPT, 
00064   ERR_BACKEND_SERVER_ERR,   
00065   ERR_BACKEND_ALLOC,        
00066   ERR_BACKEND_PERM,         
00068   ERR_BACKEND_MODIFIED,     
00070   ERR_BACKEND_MOD_DESTROY,  
00072   ERR_BACKEND_MISC,         
00074   /* QSF add-ons */
00075   ERR_QSF_INVALID_OBJ,          
00076   ERR_QSF_INVALID_MAP,          
00077   ERR_QSF_BAD_OBJ_GUID,         
00078   ERR_QSF_BAD_QOF_VERSION,      
00079   ERR_QSF_BAD_MAP,                      
00084   ERR_QSF_NO_MAP,               
00088   ERR_QSF_WRONG_MAP,            
00093   ERR_QSF_MAP_NOT_OBJ,          
00094   ERR_QSF_OVERFLOW,                     
00100   ERR_QSF_OPEN_NOT_MERGE,       
00105   /* fileio errors */
00106   ERR_FILEIO_FILE_BAD_READ = 1000,  
00107   ERR_FILEIO_FILE_EMPTY,     
00108   ERR_FILEIO_FILE_LOCKERR,   
00109   ERR_FILEIO_FILE_NOT_FOUND, 
00110   ERR_FILEIO_FILE_TOO_OLD,   
00111   ERR_FILEIO_UNKNOWN_FILE_TYPE, 
00112   ERR_FILEIO_PARSE_ERROR,    
00113   ERR_FILEIO_BACKUP_ERROR,   
00114   ERR_FILEIO_WRITE_ERROR,    
00116   /* network errors */
00117   ERR_NETIO_SHORT_READ = 2000,  
00118   ERR_NETIO_WRONG_CONTENT_TYPE, 
00119   ERR_NETIO_NOT_GNCXML,         
00121   /* database errors */
00122   ERR_SQL_MISSING_DATA = 3000,  
00123   ERR_SQL_DB_TOO_OLD,           
00124   ERR_SQL_DB_BUSY,              
00126   /* RPC errors */
00127   ERR_RPC_HOST_UNK = 4000,      
00128   ERR_RPC_CANT_BIND,            
00129   ERR_RPC_CANT_ACCEPT,          
00130   ERR_RPC_NO_CONNECTION,        
00131   ERR_RPC_BAD_VERSION,          
00132   ERR_RPC_FAILED,               
00133   ERR_RPC_NOT_ADDED,            
00134 } QofBackendError;
00135 
00142 typedef struct QofBackendProvider_s QofBackendProvider;
00143 
00152 typedef struct QofBackend_s QofBackend;
00153 
00155 typedef void (*QofBePercentageFunc) (const char *message, double percent);
00156 
00165 
00166 void qof_backend_run_begin(QofBackend *be, QofInstance *inst);
00167 
00168 gboolean qof_backend_begin_exists(QofBackend *be);
00169 
00170 void qof_backend_run_commit(QofBackend *be, QofInstance *inst);
00171 
00172 gboolean qof_backend_commit_exists(QofBackend *be);
00174 
00192 typedef struct QofBackendOption_s {
00193         KvpValueType type;        
00194         const char *option_name;  
00195         const char *description;  
00196         const char *tooltip;      
00197         gpointer value;           
00198 }QofBackendOption;
00199 
00201 void qof_backend_prepare_frame(QofBackend *be);
00202 
00204 void qof_backend_prepare_option(QofBackend *be, QofBackendOption *option);
00205 
00207 KvpFrame* qof_backend_complete_frame(QofBackend *be);
00208 
00210 typedef void (*QofBackendOptionCB)(QofBackendOption*, gpointer data);
00211 
00213 void qof_backend_option_foreach(KvpFrame *config, QofBackendOptionCB cb, gpointer data);
00214 
00223 void qof_backend_load_config (QofBackend *be, KvpFrame *config);
00224 
00242 KvpFrame* qof_backend_get_config(QofBackend *be);
00244 
00255 gboolean
00256 qof_load_backend_library (const char *directory, 
00257                         const char* filename, const char* init_fcn);
00258 
00260 QofBackend* qof_book_get_backend (QofBook *book);
00261 
00262 void qof_book_set_backend (QofBook *book, QofBackend *);
00263 
00264 #endif /* QOF_BACKEND_H */
00265 

Generated on Fri Oct 21 15:49:55 2005 for QOF by  doxygen 1.4.5