#include "StdAfx.h" #include "FaxReq.h" #include "VirtualProxy.h" #include "MC.h" #include "ProxyShell.h" CFaxReq::CFaxReq(CProxyShell* pParent, CPduEntity& ReqPdu) : CReqBase(pParent, ReqPdu), m_IsRecving(false) { } CFaxReq::~CFaxReq(void) { } /***************************************************************** **【函数名称】 request **【函数功能】 发出请求(命令方式) **【参数】 **【返回值】 ****************************************************************/ bool CFaxReq::request( void ) { // 校验状态 if(m_pHostLine->state() != VIRTUAL_LINE_STATE_TALKING) return false; // 保存传真信息 m_IsRecving = m_ReqPdu.GetDataUInt(3) == CLIENT_REQ_FAX_RECV ? true : false; // (0 -> 发送,1 -> 接收) m_FileName = m_ReqPdu.GetDataString(4); LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{LineReq}: 中继[%lu]%s传真, FileName = %s"), m_pHostLine->lineId(), m_IsRecving ? _T("接收") : _T("发送"), m_FileName); // 启动操作 return CMC::GetInstance().fax(m_pHostLine->devId(), m_FileName, m_IsRecving); } /***************************************************************** **【函数名称】 end **【函数功能】 操作完成 **【参数】 IsSucceed 操作是否成功 lpData 随路数据 **【返回值】 ****************************************************************/ void CFaxReq::end( bool IsSucceed, LPCTSTR lpData ) { if(IsSucceed) { LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{LineReq}: 中继[%lu]%s传真成功, FileName = %s"), m_pHostLine->lineId(), m_IsRecving ? _T("接收") : _T("发送"), m_FileName); } else { LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{LineReq}: 中继[%lu]%s传真失败, FileName = %s"), m_pHostLine->lineId(), m_IsRecving ? _T("接收") : _T("发送"), m_FileName); } // end if m_pParent->onLineReqEnd(this, IsSucceed, lpData); } /***************************************************************** **【函数名称】 onDevChEvent **【函数功能】 线路向上层发送的设备主动事件 **【参数】 pEventLine 触发事件的线路 EvtType 事件类型 lpContent 事件内容 **【返回值】 *****************************************************************/ void CFaxReq::onDevChEvent( CVirtualProxy* pEventLine, DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent ) { switch(EvtType) { case DEV_CH_EVT_FAX_OK: // 传真成功 { end(true, lpContent); } break; case DEV_CH_EVT_FAX_FAILED: // 传真失败 { end(false, lpContent); } break; default: ASSERT(FALSE); break; } // end switch } /***************************************************************** **【函数名称】 onLineStateChanged **【函数功能】 线路状态变化事件响应接口 **【参数】 pEventLine 状态变化的线路实体指针 LineState 线路当前状态 Call 主呼叫ID SubCall 子呼叫ID lpCallerNum 主叫号码 lpCalleeNum 被叫号码 **【返回值】 ****************************************************************/ void CFaxReq::onLineStateChanged( CVirtualProxy* pEventLine, VIRTUAL_LINE_STATE LineState, long Call, long SubCall, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum ) { //TODO: do nothing }