CERT/CC
background
background
CERT NetSA Security Suite 
Open Source Tools for Network Monitoring 
News | Downloads | Documentation | Tooltips
SiLK 1.1.2 | YAF 1.0.0 | IPA 0.3.0 | fixbuf 0.8.0 | Portal 0.8.0 | RAVE 1.9.11
AirDBC Database Abstraction Layer
libairdbc 0.2.2 API documentation

Main Page | Data Structures | File List | Data Fields | Globals

airdbc_drv.h

Go to the documentation of this file.
00001 /*
00002  ** airdbc_drv.h
00003  ** AirDBC Database Abstraction Layer Driver Interface.
00004  **
00005  ** ------------------------------------------------------------------------
00006  ** Copyright (C) 2000-2005 Carnegie Mellon University. All Rights Reserved.
00007  ** ------------------------------------------------------------------------
00008  ** Authors: Brian Trammell <bht@cert.org>
00009  ** ------------------------------------------------------------------------
00010  ** From libair::db, by Brian Trammell, Roman Danyliw, and Sean Levy.
00011  ** ------------------------------------------------------------------------
00012  ** GNU Lesser GPL Rights pursuant to Version 2.1, February 1999 
00013  ** Government Purpose License Rights (GPLR) pursuant to DFARS 252.225-7013
00014  ** ------------------------------------------------------------------------
00015  */
00016 
00017 #ifndef _ADB_AIRDBC_DRV_H_
00018 #define _ADB_AIRDBC_DRV_H_
00019 
00029 struct _AdbDriver;
00035 typedef struct _AdbDriver AdbDriver;
00036 
00040 struct _AdbConnection {
00042     AdbDriver           *driver;
00045     void                *dconn;
00047     char                *uri_full;
00049     char                *uri_store;
00051     char                *scheme;
00053     char                *host;
00055     uint16_t            port;
00057     char                *username;
00059     char                *password;
00061     char                *dbname;
00064     char                *additional;
00068     gboolean            is_connected;
00069 };
00070 
00074 struct _AdbStatement {
00076     AdbConnection       *conn;
00079     void                *dstmt;
00082     char                *sql;
00085     uint32_t            param_count;
00090     uint32_t            param_maxlen;
00094     char                *param_buf;
00097     char                **param_str;
00099     GHashTable          *param_map;
00100 };    
00101 
00105 struct _AdbResultSet {
00107     AdbStatement        *stmt;
00110     void                *drs;
00112     GHashTable          *colname_map;
00113 };
00114 
00116 typedef gboolean    (*AdbConnectionFn)(
00117     AdbConnection       *conn,
00118     GError              **err);
00119 
00121 typedef void        (*AdbConnectionFreeFn)(
00122     AdbConnection       *conn);
00123 
00125 typedef gboolean    (*AdbStatementFn)(
00126     AdbStatement        *stmt,
00127     GError              **err);
00128 
00130 typedef void        (*AdbStatementFreeFn)(
00131     AdbStatement        *stmt);
00132     
00134 typedef gboolean    (*AdbExecuteFn)(
00135     AdbStatement        *stmt,
00136     GError              **err);
00137 
00139 typedef gboolean    (*AdbQueryFn)(
00140     AdbResultSet        *rs,
00141     GError              **err);
00142 
00144 typedef void        (*AdbResultSetFreeFn)(
00145     AdbResultSet        *rs);
00146 
00148 typedef gboolean    (*AdbResultSetFn)(
00149     AdbResultSet        *rs,
00150     GError              **err);
00151 
00153 typedef uint32_t    (*AdbResultSetCountFn)(
00154     AdbResultSet        *rs,
00155     GError              **err);
00156 
00158 typedef char        *(*AdbResultSetNameFn)(
00159     AdbResultSet        *rs,
00160     uint32_t            col,
00161     GError              **err);
00162 
00164 typedef gboolean    (*AdbFetchFn)(
00165     AdbResultSet        *rs,
00166     uint32_t            col,
00167     const char          **val,
00168     GError              **err);
00169 
00174 struct _AdbDriver {
00177     const char          *name;
00181     const char          *param_prefix;
00183     gboolean            param_numsuffix;
00186     AdbConnectionFn     alloc;
00189     AdbConnectionFn     open;
00192     AdbConnectionFn     close;
00195     AdbConnectionFreeFn free;
00197     AdbConnectionFn     begin;
00199     AdbConnectionFn     commit;
00201     AdbConnectionFn     rollback;
00205     AdbStatementFn      prepare;
00208     AdbStatementFreeFn  free_stmt;
00210     AdbExecuteFn        exec;
00214     AdbQueryFn          query;
00217     AdbResultSetFreeFn  free_rs;
00219     AdbResultSetFn      next;
00221     AdbResultSetCountFn colcount;
00223     AdbResultSetNameFn  colname;
00228     AdbFetchFn          fetch;
00229 };
00230 
00243 void                adb_driver_register(
00244     AdbDriver           *driver);
00245 
00246 #endif