Added call.cdr handler to add "nodename" and "nodeprefix" cluster parameters.

git-svn-id: http://voip.null.ro/svn/yate@2520 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2009-03-11 10:41:22 +00:00
parent c9668b3a02
commit d28e329af8
2 changed files with 23 additions and 1 deletions

View File

@ -28,3 +28,6 @@
; user.register: int: Priority of registration message handler (on registrar)
;user.register=50
; call.cdr: int: Priority of CDR message handler (all nodes)
;call.cdr=25

View File

@ -32,6 +32,7 @@ class ClusterModule : public Module
public:
enum {
Register = Private,
Cdr = (Private << 1),
};
ClusterModule();
~ClusterModule();
@ -41,8 +42,10 @@ public:
virtual bool msgRoute(Message& msg);
virtual bool msgExecute(Message& msg);
virtual bool msgRegister(Message& msg);
virtual bool msgCdr(Message& msg);
private:
String m_prefix;
String m_myPrefix;
String m_callto;
Regexp m_regexp;
String m_message;
@ -166,7 +169,19 @@ bool ClusterModule::msgRegister(Message& msg)
Lock lock(this);
if (data.startsWith(m_prefix))
return false;
msg.setParam("data",m_prefix + Engine::nodeName() + "/" + data);
msg.setParam("data",m_myPrefix + data);
return false;
}
bool ClusterModule::msgCdr(Message& msg)
{
if (!msg.getParam("nodename"))
msg.addParam("nodename",Engine::nodeName());
if (!msg.getParam("nodeprefix")) {
lock();
msg.addParam("nodeprefix",m_myPrefix);
unlock();
}
return false;
}
@ -177,6 +192,8 @@ bool ClusterModule::received(Message& msg, int id)
return msgExecute(msg);
case Register:
return msgRegister(msg);
case Cdr:
return msgCdr(msg);
default:
return Module::received(msg,id);
}
@ -206,6 +223,7 @@ void ClusterModule::initialize()
m_prefix = cfg.getValue("general","prefix","cluster");
if (!m_prefix.endsWith("/"))
m_prefix += "/";
m_myPrefix = m_prefix + Engine::nodeName() + "/";
m_regexp = cfg.getValue("general","regexp");
m_callto = cfg.getValue("general","callto");
m_message = cfg.getValue("general","locate","cluster.locate");
@ -215,6 +233,7 @@ void ClusterModule::initialize()
installRelay(Route,cfg.getIntValue("priorities","call.route",50));
installRelay(Execute,cfg.getIntValue("priorities","call.execute",50));
installRelay(Register,"user.register",cfg.getIntValue("priorities","user.register",50));
installRelay(Cdr,"call.cdr",cfg.getIntValue("priorities","call.cdr",25));
m_init = true;
}
}