108#include <libcmutils.h>
112# if defined(CMDBM_EXPORT)
113# define CMDBM_API __declspec(dllexport)
115# define CMDBM_API __declspec(dllimport)
246 const char *(*GetDBMSKey)(void);
264 void *(*Initialize)(
const char *dbcs,
const char *prcs);
293 char *(*GetBindString)(
297 CMJsonValueType vtype);
310 const char *(*GetTestQuery)(void);
325 void *(*OpenConnection)(
327 CMUTIL_JsonObject *params);
404 CMUTIL_JsonValue *(*GetOneValue)(
407 CMUTIL_String *query,
408 CMUTIL_JsonArray *binds,
409 CMUTIL_JsonObject *outs);
425 CMUTIL_JsonObject *(*GetRow)(
428 CMUTIL_String *query,
429 CMUTIL_JsonArray *binds,
430 CMUTIL_JsonObject *outs);
445 CMUTIL_JsonArray *(*GetList)(
448 CMUTIL_String *query,
449 CMUTIL_JsonArray *binds,
450 CMUTIL_JsonObject *outs);
469 CMUTIL_String *query,
470 CMUTIL_JsonArray *binds,
471 CMUTIL_JsonObject *outs);
496 CMUTIL_String *query,
497 CMUTIL_JsonArray *binds,
498 CMUTIL_JsonObject *outs,
516 CMUTIL_JsonObject *(*CursorNextRow)(
626 const char *mapperfile);
644 const char *basepath,
645 const char *filepattern,
700 const char *sourceid,
702 const char *dbcharset,
704 CMUTIL_JsonObject *params);
783 CMUTIL_JsonObject *params);
798 CMUTIL_JsonValue *(*GetObject)(
802 CMUTIL_JsonObject *params);
814 CMUTIL_JsonObject *(*GetRow)(
818 CMUTIL_JsonObject *params);
834 CMUTIL_JsonArray *(*GetRowSet)(
838 CMUTIL_JsonObject *params);
867 CMUTIL_JsonObject *params,
870 CMUTIL_JsonObject *row,
988 const char *confjson,
989 const char *progcharset,
990 CMUTIL_Timer *timer);
const char * CMDBM_GetLibVersion(void)
Version of the library which is being run.
void CMDBM_Init(void)
Initialize the library.
void CMDBM_Clear(void)
Release everything the library holds.
CMDBM_Context * CMDBM_ContextCreate(const char *confjson, const char *progcharset, CMUTIL_Timer *timer)
Create a context, optionally from a configuration file.
CMDBM_Database * CMDBM_DatabaseCreate(const char *sourceid, const char *dbmskey, const char *dbcharset, CMDBM_PoolConfig *poolconf, CMUTIL_JsonObject *params)
Build a datasource in code.
CMBool CMDBM_RegisterDBMS(const char *dbmskey, CMDBM_ModuleInterface *modif)
Make a DBMS module available under a name.
The root object: the datasources of an application and the sessions which use them.
Definition libcmdbm.h:921
CMBool(* AddDatabase)(CMDBM_Context *context, CMDBM_Database *database)
Start a datasource and take it over.
Definition libcmdbm.h:938
void(* Destroy)(CMDBM_Context *context)
Destroy the context and every datasource in it.
Definition libcmdbm.h:963
A datasource: one database, its pool and its statements.
Definition libcmdbm.h:610
CMBool(* AddMapperSet)(CMDBM_Database *db, const char *basepath, const char *filepattern, CMBool recursive)
Load every mapper file matching a pattern.
Definition libcmdbm.h:642
CMBool(* AddMapper)(CMDBM_Database *db, const char *mapperfile)
Load one mapper file into this datasource.
Definition libcmdbm.h:624
CMBool(* SetMonitor)(CMDBM_Database *db, int interval)
How often the mapper files are checked for changes.
Definition libcmdbm.h:659
void(* Destroy)(CMDBM_Database *db)
Destroy the datasource, closing every connection it pooled.
Definition libcmdbm.h:672
The set of callbacks a DBMS module implements.
Definition libcmdbm.h:211
CMBool(* StartTransaction)(void *initres, void *connection)
Begin a transaction on one connection.
Definition libcmdbm.h:349
CMBool(* CommitTransaction)(void *initres, void *connection)
Commit the running transaction.
Definition libcmdbm.h:374
void(* CloseConnection)(void *initres, void *connection)
Close a connection OpenConnection opened.
Definition libcmdbm.h:335
void(* LibraryInit)(void)
Prepare the client library, once per process.
Definition libcmdbm.h:223
int(* Execute)(void *initres, void *connection, CMUTIL_String *query, CMUTIL_JsonArray *binds, CMUTIL_JsonObject *outs)
Run a statement for its effect.
Definition libcmdbm.h:466
void(* CleanUp)(void *initres)
Release the context Initialize created.
Definition libcmdbm.h:274
void(* RollbackTransaction)(void *initres, void *connection)
Roll the running transaction back.
Definition libcmdbm.h:384
void(* EndTransaction)(void *initres, void *connection)
End the transaction StartTransaction began.
Definition libcmdbm.h:363
void(* LibraryClear)(void)
Release what LibraryInit prepared.
Definition libcmdbm.h:232
void(* CloseCursor)(void *cursor)
Close a cursor and release what it holds.
Definition libcmdbm.h:506
How a datasource pools its connections.
Definition libcmdbm.h:561
uint32_t pingterm
Seconds between two rounds of the idle connection check.
Definition libcmdbm.h:568
CMBool testonborrow
Whether a connection is validated when it is borrowed.
Definition libcmdbm.h:589
char * testsql
The statement which validates a connection.
Definition libcmdbm.h:603
CMBool pingtest
Whether idle connections are checked every pingterm seconds.
Definition libcmdbm.h:578
uint32_t initcnt
Connections opened when the datasource starts up.
Definition libcmdbm.h:591
uint32_t maxcnt
Upper limit of open connections. A session which asks for one beyond it waits, and gives up after fiv...
Definition libcmdbm.h:594
A session: the object statements are run through.
Definition libcmdbm.h:735
void(* Close)(CMDBM_Session *session)
Return the borrowed connections and destroy the session.
Definition libcmdbm.h:901
void(* EndTransaction)(CMDBM_Session *session)
Put the connections of this session back into autocommit.
Definition libcmdbm.h:761
CMBool(* ForEachRow)(CMDBM_Session *session, const char *dbid, const char *sqlid, CMUTIL_JsonObject *params, void *udata, CMBool(*rowcb)(CMUTIL_JsonObject *row, uint32_t rownum, void *udata))
Run a select and hand its rows to a callback one by one.
Definition libcmdbm.h:863
CMBool(* Commit)(CMDBM_Session *session)
Commit the running transaction on every connection of this session.
Definition libcmdbm.h:881
int(* Execute)(CMDBM_Session *session, const char *dbid, const char *sqlid, CMUTIL_JsonObject *params)
Run a statement for its effect.
Definition libcmdbm.h:779
void(* Rollback)(CMDBM_Session *session)
Roll the running transaction back on every connection of this session.
Definition libcmdbm.h:890
CMBool(* BeginTransaction)(CMDBM_Session *session)
Start a transaction across every datasource this session uses.
Definition libcmdbm.h:750