本文整理汇总了C++中DB_CAPABILITY函数的典型用法代码示例。如果您正苦于以下问题:C++ DB_CAPABILITY函数的具体用法?C++ DB_CAPABILITY怎么用?C++ DB_CAPABILITY使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了DB_CAPABILITY函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: id2db_url
static int id2db_url(int id, int require_raw_query, int is_async,
struct db_url** url)
{
*url = get_db_url((unsigned int)id);
if (*url==NULL) {
LM_ERR("no db_url with id <%d>\n", id);
return E_CFG;
}
/*
* Since mod_init() is run before function fixups, all DB structs
* are initialized and all DB capabilities are populated
*/
if (require_raw_query && !DB_CAPABILITY((*url)->dbf, DB_CAP_RAW_QUERY)) {
LM_ERR("driver for DB URL [%u] does not support raw queries\n",
(unsigned int)id);
return -1;
}
if (is_async && !DB_CAPABILITY((*url)->dbf, DB_CAP_ASYNC_RAW_QUERY))
LM_WARN("async() calls for DB URL [%u] will work "
"in normal mode due to driver limitations\n",
(unsigned int)id);
return 0;
}
示例2: mod_init
static int mod_init(void)
{
LM_DBG("initializing\n");
init_db_url( db_url , 0 /*cannot be null*/);
user_column.len = strlen(user_column.s);
domain_column.len = strlen(domain_column.s);
sd_user_column.len = strlen(sd_user_column.s);
sd_domain_column.len = strlen(sd_domain_column.s);
new_uri_column.len = strlen(new_uri_column.s);
if (domain_prefix.s)
domain_prefix.len = strlen(domain_prefix.s);
/* Find a database module */
if (db_bind_mod(&db_url, &db_funcs))
{
LM_ERR("failed to bind database module\n");
return -1;
}
if (!DB_CAPABILITY(db_funcs, DB_CAP_QUERY))
{
LM_ERR("Database modules does not "
"provide all functions needed by SPEEDDIAL module\n");
return -1;
}
if (domain_prefix.s && domain_prefix.len > 0) {
dstrip_s.s = domain_prefix.s;
dstrip_s.len = domain_prefix.len;
}
return 0;
}
示例3: acc_db_init
/* binds to the corresponding database module
* returns 0 on success, -1 on error */
int acc_db_init(const str* db_url)
{
if (db_bind_mod(db_url, &acc_dbf)<0){
LM_ERR("bind_db failed\n");
return -1;
}
/* Check database capabilities */
if (!DB_CAPABILITY(acc_dbf, DB_CAP_INSERT)) {
LM_ERR("database module does not implement insert function\n");
return -1;
}
db_handle=acc_dbf.init(db_url);
if (db_handle==0){
LM_ERR("unable to connect to the database\n");
return -1;
}
if (db_check_table_version(&acc_dbf, db_handle, &db_table_acc,
TABLE_VERSION) < 0) {
LM_ERR("error during table version check\n");
return -1;
}
acc_db_close();
acc_db_init_keys();
return 0;
}
示例4: mod_init
static int mod_init(void)
{
db_url.len = strlen(db_url.s);
user_column.len = strlen(user_column.s);
domain_column.len = strlen(domain_column.s);
alias_domain_column.len = strlen(alias_domain_column.s);
alias_user_column.len = strlen(alias_user_column.s);
if (domain_prefix.s)
domain_prefix.len = strlen(domain_prefix.s);
/* Find a database module */
if (db_bind_mod(&db_url, &adbf))
{
LM_ERR("unable to bind database module\n");
return -1;
}
if (!DB_CAPABILITY(adbf, DB_CAP_QUERY))
{
LM_CRIT("database modules does not "
"provide all functions needed by avpops module\n");
return -1;
}
return 0;
}
示例5: verify_db
static int verify_db(void)
{
/* binding to mysql module */
if (db_bind_mod(&db_url, &pxml_dbf))
{
LM_ERR("Database module not found\n");
return -1;
}
if (!DB_CAPABILITY(pxml_dbf, DB_CAP_ALL)) {
LM_ERR("Database module does not implement all functions"
" needed by the module\n");
return -1;
}
pxml_db = pxml_dbf.init(&db_url);
if (!pxml_db)
{
LM_ERR("while connecting to database\n");
return -1;
}
/* pxml_db is free'd by caller later, not sure if safe to do now */
return 0;
}
示例6: mod_init
static int mod_init(void)
{
LM_DBG("Initializing\n");
init_db_url( db_url , 0 /*cannot be null*/);
user_column.len = strlen(user_column.s);
domain_column.len = strlen(domain_column.s);
cd_user_column.len = strlen(cd_user_column.s);
cd_domain_column.len = strlen(cd_domain_column.s);
group_id_column.len = strlen(group_id_column.s);
new_uri_column.len = strlen(new_uri_column.s);
/* Find a database module */
if (db_bind_mod(&db_url, &db_functions) == -1) {
LM_ERR("Failed to bind database module\n");
return -1;
}
if (!DB_CAPABILITY(db_functions, DB_CAP_QUERY)) {
LM_ERR("Database modules does not "
"provide all functions needed by closeddial module.\n");
return -1;
}
return 0;
}
示例7: mod_init
static int mod_init(void)
{
bind_sl_t bind_sl;
DBG("speeddial module - initializing\n");
/* Find a database module */
if (bind_dbmod(db_url, &db_funcs))
{
LOG(L_ERR, "sd:mod_init: Unable to bind database module\n");
return -1;
}
if (!DB_CAPABILITY(db_funcs, DB_CAP_QUERY))
{
LOG(L_ERR, "sd:mod_init: Database modules does not "
"provide all functions needed by SPEEDDIAL module\n");
return -1;
}
/**
* We will need sl_send_reply from stateless
* module for sending replies
*/
bind_sl = (bind_sl_t)find_export("bind_sl", 0, 0);
if (!bind_sl) {
ERR("This module requires sl module\n");
return -1;
}
if (bind_sl(&sl) < 0) return -1;
return 0;
}
示例8: sql_connect
int sql_connect(void)
{
sql_con_t *sc;
sc = _sql_con_root;
while(sc)
{
if (db_bind_mod(&sc->db_url, &sc->dbf))
{
LM_DBG("database module not found for [%.*s]\n",
sc->name.len, sc->name.s);
return -1;
}
if (!DB_CAPABILITY(sc->dbf, DB_CAP_RAW_QUERY))
{
LM_ERR("database module does not have DB_CAP_ALL [%.*s]\n",
sc->name.len, sc->name.s);
return -1;
}
sc->dbh = sc->dbf.init(&sc->db_url);
if (sc->dbh==NULL)
{
LM_ERR("failed to connect to the database [%.*s]\n",
sc->name.len, sc->name.s);
return -1;
}
sc = sc->next;
}
return 0;
}
示例9: init_db
static int init_db (void)
{
/**********
* o bind to DB
* o check capabilities
* o init DB
**********/
str *pdb_url = &pmod_data->pcfg->db_url;
if (db_bind_mod (pdb_url, pmod_data->pdb))
{
LM_ERR ("Unable to bind DB API using %s", pdb_url->s);
return 0;
}
db_func_t *pdb = pmod_data->pdb;
if (!DB_CAPABILITY ((*pdb), DB_CAP_ALL))
{
LM_ERR ("Selected database %s lacks required capabilities", pdb_url->s);
return 0;
}
db1_con_t *pconn = mohq_dbconnect ();
if (!pconn)
{ return 0; }
/**********
* o check schema
* o remove all call recs
* o load queue list
**********/
if (db_check_table_version (pdb, pconn,
&pmod_data->pcfg->db_ctable, MOHQ_CTABLE_VERSION) < 0)
{
LM_ERR ("%s table in DB %s not at version %d",
pmod_data->pcfg->db_ctable.s, pdb_url->s, MOHQ_CTABLE_VERSION);
goto dberr;
}
if (db_check_table_version (pdb, pconn,
&pmod_data->pcfg->db_qtable, MOHQ_QTABLE_VERSION) < 0)
{
LM_ERR ("%s table in DB %s not at version %d",
pmod_data->pcfg->db_qtable.s, pdb_url->s, MOHQ_QTABLE_VERSION);
goto dberr;
}
clear_calls (pconn);
update_mohq_lst (pconn);
pmod_data->mohq_update = time (0);
mohq_dbdisconnect (pconn);
return -1;
/**********
* close DB
**********/
dberr:
pdb->close (pconn);
return 0;
}
示例10: mod_init
/**
* init module function
*/
static int mod_init(void)
{
bind_xcap_t bind_xcap;
xcap_api_t xcap_api;
/* load XCAP API */
bind_xcap = (bind_xcap_t)find_export("bind_xcap", 1, 0);
if (!bind_xcap)
{
LM_ERR("Can't bind xcap\n");
return -1;
}
if (bind_xcap(&xcap_api) < 0)
{
LM_ERR("Can't bind xcap\n");
return -1;
}
xcap_db_url = xcap_api.db_url;
xcap_db_table = xcap_api.xcap_table;
/* binding to mysql module */
if (db_bind_mod(&xcap_db_url, &xcap_dbf))
{
LM_ERR("Database module not found\n");
return -1;
}
if (!DB_CAPABILITY(xcap_dbf, DB_CAP_ALL)) {
LM_ERR("Database module does not implement all functions"
" needed by the module\n");
return -1;
}
xcap_db = xcap_dbf.init(&xcap_db_url);
if (!xcap_db)
{
LM_ERR("while connecting to database\n");
return -1;
}
curl_global_init(CURL_GLOBAL_ALL);
if(periodical_query)
{
register_timer("xcapc-update", query_xcap_update, 0,
query_period, TIMER_FLAG_DELAY_ON_DELAY);
}
if(xcap_db)
xcap_dbf.close(xcap_db);
xcap_db = NULL;
return 0;
}
示例11: push_check_db
int push_check_db(PushServer* apns, const char* push_db, const char* push_table)
{
str db_url = {0, 0};
str table = {0, 0};
if (apns == NULL)
{
return 0;
}
if (push_db == NULL)
{
return 0;
}
db_url.s = (char*)push_db;
db_url.len = strlen(db_url.s);
table.s = (char*)push_table;
table.len = strlen(push_table);
if ((apns->dbf.init == 0) && (db_bind_mod(&db_url, &apns->dbf)))
{
LM_ERR("Database module not found\n");
return -1;
}
if (!DB_CAPABILITY(apns->dbf, DB_CAP_ALL))
{
LM_ERR("Database module does not implement all functions"
" needed by push module\n");
return -1;
}
/* should be done prior init in each child...*/
apns->db = apns->dbf.init(&db_url);
if (!apns->db)
{
LM_ERR("Connection to database failed\n");
return -1;
}
if (db_check_table_version(&apns->dbf, apns->db, &table, PUSH_TABLE_VERSION) < 0)
{
LM_ERR("wrong table version for %s\n", table.s);
return -1;
}
apns->dbf.close(apns->db);
apns->db = NULL;
return 1;
}
示例12: mod_init
static int mod_init(void)
{
if (bind_dbmod(db_url, &db) < 0) {
LOG(L_ERR, "avp_db:mod_init: Unable to bind a database driver\n");
return -1;
}
if (!DB_CAPABILITY(db, DB_CAP_QUERY)) {
LOG(L_ERR, "avp_db:mod_init: Selected database driver does not suppor the query capability\n");
return -1;
}
return 0;
}
示例13: group_db_bind
/*!
* \brief Bind the DB connection
* \param db_url database URL
* \return 0 on success, -1 on failure
*/
int group_db_bind(const str* db_url)
{
if (db_bind_mod(db_url, &group_dbf)<0){
LM_ERR("unable to bind to the database module\n");
return -1;
}
if (!DB_CAPABILITY(group_dbf, DB_CAP_QUERY)) {
LM_ERR("database module does not implement 'query' function\n");
return -1;
}
return 0;
}
示例14: fixup_db_url
static int fixup_db_url(void ** param, int require_raw_query, int is_async)
{
struct db_url* url;
unsigned int ui;
str s;
s.s = (char*)*param;
s.len = strlen(s.s);
if(str2int(&s, &ui)!=0) {
LM_ERR("bad db_url number <%s>\n", (char *)(*param));
return E_CFG;
}
url = get_db_url(ui);
if (url==NULL) {
LM_ERR("no db_url with id <%s>\n", (char *)(*param));
return E_CFG;
}
/*
* Since mod_init() is run before function fixups, all DB structs
* are initialized and all DB capabilities are populated
*/
if (require_raw_query && !DB_CAPABILITY(url->dbf, DB_CAP_RAW_QUERY)) {
LM_ERR("driver for DB URL [%u] does not support raw queries\n", ui);
return -1;
}
if (is_async && !DB_CAPABILITY(url->dbf, DB_CAP_ASYNC_RAW_QUERY))
LM_WARN("async() calls for DB URL [%u] will work "
"in normal mode due to driver limitations\n", ui);
pkg_free(*param);
*param=(void *)url;
return 0;
}
示例15: acc_db_bind
/* binds to the corresponding database module
* returns 0 on success, -1 on error */
int acc_db_bind(char* db_url)
{
acc_db_url=db_url;
if (bind_dbmod(acc_db_url, &acc_dbf)<0){
LOG(L_ERR, "ERROR: acc_db_init: bind_db failed\n");
return -1;
}
/* Check database capabilities */
if (!DB_CAPABILITY(acc_dbf, DB_CAP_INSERT)) {
LOG(L_ERR, "ERROR: acc_db_init: Database module does not implement insert function\n");
return -1;
}
return 0;
}