#include "StdAfx.h" #include "ProxyDti.h" #include "ProxyShell.h" CProxyDti::CProxyDti(CProxyShell* pParent, CRDRID DevId) : CVirtualProxy(pParent, DevId) { ASSERT(m_pParent != NULL); } CProxyDti::~CProxyDti(void) { // 通知业务逻辑线路被删除 ASSERT(m_pParent != NULL); m_pParent->notifyDevResourceState(DEV_RES_TYPE_TRUNK, m_DevId.toIntId(), TRUNK_STATE_DISABLED); } /***************************************************************** **【函数名称】 __transVirtualState2OuterState **【函数功能】 映设虚拟线路状态到外部识别的状态 **【参数】 State: 线路状态 **【返回值】 ****************************************************************/ UINT CProxyDti::__transVirtualState2OuterState( VIRTUAL_LINE_STATE State ) const { switch(State) { case VIRTUAL_LINE_STATE_FREE: return TRUNK_STATE_FREE; case VIRTUAL_LINE_STATE_DIALING: return TRUNK_STATE_DIALING; case VIRTUAL_LINE_STATE_RING_BACK: return TRUNK_STATE_RING_BACK; case VIRTUAL_LINE_STATE_ALERTING: return TRUNK_STATE_ALERTING; case VIRTUAL_LINE_STATE_TALKING: return TRUNK_STATE_TALKING; case VIRTUAL_LINE_STATE_DISABLED: return TRUNK_STATE_DISABLED; default: ASSERT(FALSE); } // end switch return TRUNK_STATE_DISABLED; } /***************************************************************** **【函数名称】 _procLineState **【函数功能】 线路状态变化事件处理 **【参数】 Call 主会话ID SubCall 子会话ID State 线路基本状态 lpCallerNum 主叫号码 lpCalleeNum 被叫号码 **【返回值】 ****************************************************************/ void CProxyDti::_procLineState( long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum ) { // 根据外线状态进行对应的逻辑处理 if((m_State == VIRTUAL_LINE_STATE_FREE && State == VIRTUAL_LINE_STATE_TALKING) || (m_State == VIRTUAL_LINE_STATE_ALERTING && State == VIRTUAL_LINE_STATE_TALKING)) { // 外线来电 m_CallerNum = lpCallerNum; m_CalleeNum = lpCalleeNum; ASSERT(m_pParent != NULL); m_pParent->notifyLineOpEvent(m_DevId.toIntId(), DEV_OP_CALL_IN, lpCallerNum, lpCalleeNum); LOGGER(LOG_CLASS_DEV, LOG_LEVEL_NORMAL, _T("{CProxyDti}: 外线来电,%d,Caller=%s,Callee=%s"), m_DevId.toIntId(),lpCallerNum, lpCalleeNum); } } /***************************************************************** **【函数名称】 _notifyLineState **【函数功能】 通知上层逻辑线路状态变化事件 **【参数】 **【返回值】 ****************************************************************/ void CProxyDti::_notifyLineState( void ) { // 通知业务逻辑线路状态变化事件 ASSERT(m_pParent != NULL); m_pParent->notifyDevResourceState(DEV_RES_TYPE_TRUNK, m_DevId.toIntId(), __transVirtualState2OuterState(m_State), m_CallerNum, m_CalleeNum); } /***************************************************************** **【函数名称】 notifyLineInfo **【函数功能】 通知上层逻辑线路信息 **【参数】 **【返回值】 ****************************************************************/ void CProxyDti::notifyLineInfo( PDU_DEV_TYPE DestType, int DestId ) const { // 通知业务逻辑线路状态变化事件 ASSERT(m_pParent != NULL); m_pParent->notifyResourceDetail(DestType, DestId, DEV_RES_TYPE_TRUNK, m_DevId.toIntId()); m_pParent->notifyDevResourceState(DestType, DestId, DEV_RES_TYPE_TRUNK, m_DevId.toIntId(), __transVirtualState2OuterState(m_State), m_CallerNum, m_CalleeNum); } /***************************************************************** **【函数名称】 notifyLineInfo **【函数功能】 通知上层逻辑线路信息 **【参数】 **【返回值】 ****************************************************************/ void CProxyDti::notifyLineInfo( void ) const { // 通知业务逻辑线路状态变化事件 ASSERT(m_pParent != NULL); m_pParent->notifyResourceDetail(DEV_RES_TYPE_TRUNK, m_DevId.toIntId()); m_pParent->notifyDevResourceState(DEV_RES_TYPE_TRUNK, m_DevId.toIntId(), __transVirtualState2OuterState(m_State), m_CallerNum, m_CalleeNum); }