| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #include "StdAfx.h"
- #include "StatisticsMgr.h"
- #include "CallDetail.h"
- SINGLETON_IMPLEMENT(CStatisticsMgr)
- CStatisticsMgr::CStatisticsMgr(void)
- {
- m_CallDetailMap.InitHashTable(MAX_LENGTH_HASH);
- }
- CStatisticsMgr::~CStatisticsMgr(void)
- {
- }
- /*****************************************************************
- **【函数名称】 onCallDetail
- **【函数功能】 呼叫明细处理
- **【参数】 CallId: CallID
- Event: 统计事件
- HostLine: 主控线路
- Param: 统计信息
- **【返回值】
- *****************************************************************/
- void CStatisticsMgr::onCallDetail( ULONG CallId, REP_EVENT Event, UINT HostLine, PARAM Param )
- {
- CCallDetail* pCallDetail = NULL;
- // 查找活动会话
- BOOL IsActive = m_CallDetailMap.Lookup(CallId, pCallDetail);
-
- if (!IsActive)
- {
- pCallDetail = new CCallDetail(CallId);
- m_CallDetailMap.SetAt(CallId, pCallDetail);
- }
- // 呼叫结束事件,销毁ActiveCall
- if (Event == REP_EVENT_END_CALL)
- {
- // 通知ActiveCall结束
- pCallDetail->end();
- // 清理map
- m_CallDetailMap.RemoveKey(CallId);
- delete pCallDetail;
- pCallDetail = NULL;
- }
- else
- {
- // 常规事件和状态,处理分发
-
- pCallDetail->onCallDetail(CallId, Event, HostLine, Param);
- }
- }
- /*****************************************************************
- **【函数名称】 getFinalExt
- **【函数功能】 根据CallID获得最后应答分机
- **【参数】 CallId:CallID
- **【返回值】 分机号
- *****************************************************************/
- UINT CStatisticsMgr::getFinalExt( ULONG CallId )
- {
- CCallDetail* pCallDetail = NULL;
- // 查找活动会话
- m_CallDetailMap.Lookup(CallId, pCallDetail);
- if (pCallDetail != NULL)
- {
- return pCallDetail->getLastExten();
- }
- return 0;
- }
|