New parameters "cdrwrite" allows skipping writing of CDR records while still

tracking the channels.


git-svn-id: http://voip.null.ro/svn/yate@1373 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2007-06-28 17:12:52 +00:00
parent 8aa1ead124
commit 985b349df0
3 changed files with 12 additions and 2 deletions

View File

@ -21,4 +21,5 @@
;username=false
; The following parameters are handled internally and cannot be changed:
; time, chan, operation, direction, status, duration, billtime, ringtime
; time, chan, operation, cdrwrite,
; direction, status, duration, billtime, ringtime

View File

@ -78,6 +78,7 @@ private:
String m_dir;
String m_status;
bool m_first;
bool m_write;
};
class Param : public String
@ -133,6 +134,7 @@ static const char* const s_forbidden[] = {
"duration",
"billtime",
"ringtime",
"cdrwrite",
0
};
@ -157,7 +159,8 @@ static const char* printTime(char* buf,u_int64_t usec)
}
CdrBuilder::CdrBuilder(const char *name)
: NamedList(name), m_dir("unknown"), m_status("unknown"), m_first(true)
: NamedList(name), m_dir("unknown"), m_status("unknown"),
m_first(true), m_write(true)
{
m_start = m_call = m_ringing = m_answer = m_hangup = 0;
}
@ -213,6 +216,7 @@ void CdrBuilder::emit(const char *operation)
if (ext)
m->setParam("external",ext);
}
m->addParam("cdrwrite",String::boolText(m_write));
unsigned int n = length();
for (unsigned int i = 0; i < n; i++) {
const NamedString* s = getParam(i);
@ -265,6 +269,9 @@ bool CdrBuilder::update(const Message& msg, int type, u_int64_t val)
s_cdrs.remove(this);
return true;
}
// cdrwrite must be consistent over all emitted messages so we read it once
if (m_first)
m_write = msg.getBoolValue("cdrwrite",true);
unsigned int n = msg.length();
for (unsigned int i = 0; i < n; i++) {
const NamedString* s = msg.getParam(i);

View File

@ -70,6 +70,8 @@ bool CdrFileHandler::received(Message &msg)
String op(msg.getValue("operation"));
if (op != "finalize")
return false;
if (!msg.getBoolValue("cdrwrite",true))
return false;
Lock lock(m_lock);
if (m_file && m_format) {