diff options
Diffstat (limited to 'cdr/cdr_sqlite.c')
-rw-r--r-- | cdr/cdr_sqlite.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/cdr/cdr_sqlite.c b/cdr/cdr_sqlite.c index 5a3a4b2ba..d871e8a8a 100644 --- a/cdr/cdr_sqlite.c +++ b/cdr/cdr_sqlite.c @@ -49,8 +49,9 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/utils.h" #include "asterisk/paths.h" -#define LOG_UNIQUEID 0 -#define LOG_USERFIELD 0 +#define LOG_UNIQUEID 0 +#define LOG_USERFIELD 0 +#define LOG_HRTIME 0 /* When you change the DATE_FORMAT, be sure to change the CHAR(19) below to something else */ #define DATE_FORMAT "%Y-%m-%d %T" @@ -74,8 +75,13 @@ static const char sql_create_table[] = "CREATE TABLE cdr (" " start CHAR(19)," " answer CHAR(19)," " end CHAR(19)," +#if LOG_HRTIME +" duration FLOAT," +" billsec FLOAT," +#else " duration INTEGER," " billsec INTEGER," +#endif " disposition INTEGER," " amaflags INTEGER," " accountcode VARCHAR(20)" @@ -101,6 +107,10 @@ static int sqlite_log(struct ast_cdr *cdr) char *zErr = 0; char startstr[80], answerstr[80], endstr[80]; int count; +#if LOG_HRTIME + double hrbillsec = 0.0; + double hrduration; +#endif ast_mutex_lock(&sqlite_lock); @@ -108,6 +118,13 @@ static int sqlite_log(struct ast_cdr *cdr) format_date(answerstr, sizeof(answerstr), &cdr->answer); format_date(endstr, sizeof(endstr), &cdr->end); +#if LOG_HRTIME + if (!ast_tvzero(cdr->answer)) { + hrbillsec = (double) ast_tvdiff_us(cdr->end, cdr->answer) / 1000000.0; + } + hrduration = (double) ast_tvdiff_us(cdr->end, cdr->start) / 1000000.0; +#endif + for(count=0; count<5; count++) { res = sqlite_exec_printf(db, "INSERT INTO cdr (" @@ -126,7 +143,11 @@ static int sqlite_log(struct ast_cdr *cdr) "'%q', '%q', '%q', '%q', " "'%q', '%q', '%q', '%q', " "'%q', '%q', '%q', " +#if LOG_HRTIME + "%f, %f, %d, %d, " +#else "%d, %d, %d, %d, " +#endif "'%q'" # if LOG_UNIQUEID ",'%q'" @@ -138,7 +159,11 @@ static int sqlite_log(struct ast_cdr *cdr) cdr->clid, cdr->src, cdr->dst, cdr->dcontext, cdr->channel, cdr->dstchannel, cdr->lastapp, cdr->lastdata, startstr, answerstr, endstr, +#if LOG_HRTIME + hrduration, hrbillsec, cdr->disposition, cdr->amaflags, +#else cdr->duration, cdr->billsec, cdr->disposition, cdr->amaflags, +#endif cdr->accountcode # if LOG_UNIQUEID ,cdr->uniqueid |