From d28e329af8766b4d01d2d7e8b2fdd8e59b3472da Mon Sep 17 00:00:00 2001 From: paulc Date: Wed, 11 Mar 2009 10:41:22 +0000 Subject: [PATCH] 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 --- conf.d/clustering.conf.sample | 3 +++ modules/server/clustering.cpp | 21 ++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/conf.d/clustering.conf.sample b/conf.d/clustering.conf.sample index 07c0cb07..3e0f543e 100644 --- a/conf.d/clustering.conf.sample +++ b/conf.d/clustering.conf.sample @@ -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 diff --git a/modules/server/clustering.cpp b/modules/server/clustering.cpp index f26f2bc7..52854258 100644 --- a/modules/server/clustering.cpp +++ b/modules/server/clustering.cpp @@ -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; } }