#include "StdAfx.h" #include "TapiOpInsert.h" #include "DevControl.h" #include "LineOpExec.h" #include "TapiLine.h" CTapiOpInsert::CTapiOpInsert(LONG Instance) : CTapiOpBase(Instance) { } CTapiOpInsert::~CTapiOpInsert(void) { } /***************************************************************** **【函数名称】 start **【函数功能】 操作启动(命令方式) **【参数】 pParam 操作启动参数 **【返回值】 ****************************************************************/ bool CTapiOpInsert::start( LineOpParam* pParam ) { // 校验线路状态 if((m_pHostLine->status() & INNER_STATE_FREE) == 0x00 && (m_pHostLine->status() & INNER_STATE_INIT) == 0x00) { return false; } // end if // 保存被强插的目标号码 m_DestNum.Format(_T("%s"), pParam->szParam2); // 通知启动日志 CDevControl::GetInstance().onEventLog(LOG_LEVEL_NORMAL, _T("{OP_Insert}: Exten[%s]执行强插, DestNum = %s"), m_pHostLine->extenID(), m_DestNum); // 调用线路强插操作 return m_pHostLine->lineInsert(m_DestNum); } /***************************************************************** **【函数名称】 cancel **【函数功能】 操作取消(命令方式) **【参数】 **【返回值】 ****************************************************************/ bool CTapiOpInsert::cancel( LONG InstanceCancel ) { return false; } /***************************************************************** **【函数名称】 end **【函数功能】 操作完成 **【参数】 IsSucceed 操作是否成功 **【返回值】 ****************************************************************/ void CTapiOpInsert::end( bool IsSucceed ) { if(IsSucceed) { CDevControl::GetInstance().onEventLog(LOG_LEVEL_NORMAL, _T("{OP_Insert}: Exten[%s]强插成功, DestNum = %s"), m_pHostLine->extenID(), m_DestNum); } else { CDevControl::GetInstance().onEventLog(LOG_LEVEL_WARNING, _T("{OP_Insert}: Exten[%s]强插失败, DestNum = %s"), m_pHostLine->extenID(), m_DestNum); } // end if // 返回执行结果 CLineOpExec::GetInstance().onTapiOpResult(m_Instance, this, IsSucceed); } /***************************************************************** **【函数名称】 onReply **【函数功能】 线路操作异步响应事件 **【参数】 pEventLine 触发事件的线路 RequestID Result **【返回值】 ****************************************************************/ void CTapiOpInsert::onReply( CTapiLine* pEventLine, LONG RequestID, HRESULT Result ) { if(Result != S_OK) end(false); } /***************************************************************** **【函数名称】 onCallState **【函数功能】 呼叫状态事件 **【参数】 pEventLine 触发事件的线路 CallId 触发事件的呼叫句柄 CallState 呼叫基本状态 CallStateDetail 呼叫明细状态 **【返回值】 ****************************************************************/ void CTapiOpInsert::onCallState( CTapiLine* pEventLine, HCALL CallId, DWORD CallState, DWORD CallStateDetail ) { // 根据呼叫状态判定强插是否成功 if(CallState & LINECALLSTATE_CONNECTED) { end(true); } else if(CallState & LINECALLSTATE_DISCONNECTED) { end(false); } // end if } /***************************************************************** **【函数名称】 onDevLineEventS **【函数功能】 DevLink中S事件响应 **【参数】 pEventLine 触发事件的线路 pInfoS DevLink S事件内容 **【返回值】 ****************************************************************/ void CTapiOpInsert::onDevLinkEventS( CTapiLine* pEventLine, DevLinkInfoS* pInfoS ) { } /***************************************************************** **【函数名称】 onDevLineEventD **【函数功能】 DevLink中D事件响应 **【参数】 pEventLine 触发事件的线路 nDevLinkCallId DevLink事件CallId **【返回值】 ****************************************************************/ void CTapiOpInsert::onDevLinkEventD( CTapiLine* pEventLine, int DevLinkCallId ) { } /***************************************************************** **【函数名称】 onDevLineEventA **【函数功能】 DevLink中A事件响应 **【参数】 pEventLine 触发事件的线路 nDevLinkCallId DevLink事件CallId **【返回值】 ****************************************************************/ void CTapiOpInsert::onDevLinkEventA( CTapiLine* pEventLine, int DevLinkCallId ) { }